cic-internal-integration/apps/cic-eth/tests/testdata/bancor/ConverterRegistry.json

40060 lines
1.7 MiB

{
"contractName": "ConverterRegistry",
"abi": [
{
"inputs": [
{
"internalType": "contract IContractRegistry",
"name": "_registry",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "newOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "onlyOwnerCanUpdateRegistry",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "prevRegistry",
"outputs": [
{
"internalType": "contract IContractRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "registry",
"outputs": [
{
"internalType": "contract IContractRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "restoreRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_onlyOwnerCanUpdateRegistry",
"type": "bool"
}
],
"name": "restrictRegistryUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_type",
"type": "uint16"
},
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "_decimals",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "_maxConversionFee",
"type": "uint32"
},
{
"internalType": "contract IERC20Token[]",
"name": "_reserveTokens",
"type": "address[]"
},
{
"internalType": "uint32[]",
"name": "_reserveWeights",
"type": "uint32[]"
}
],
"name": "newConverter",
"outputs": [
{
"internalType": "contract IConverter",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "addConverter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "removeConverter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAnchorCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getAnchors",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getAnchor",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isAnchor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getLiquidityPoolCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getLiquidityPools",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getLiquidityPool",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isLiquidityPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getConvertibleTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getConvertibleTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleToken",
"outputs": [
{
"internalType": "contract IERC20Token",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenAnchorCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenAnchors",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleTokenAnchor",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleTokenAnchor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_anchors",
"type": "address[]"
}
],
"name": "getConvertersByAnchors",
"outputs": [
{
"internalType": "contract IConverter[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "isConverterValid",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "isSimilarLiquidityPoolRegistered",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_type",
"type": "uint16"
},
{
"internalType": "contract IERC20Token[]",
"name": "_reserveTokens",
"type": "address[]"
},
{
"internalType": "uint32[]",
"name": "_reserveWeights",
"type": "uint32[]"
}
],
"name": "getLiquidityPoolByConfig",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getSmartTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getSmartTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getSmartToken",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isSmartToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenSmartTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenSmartTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleTokenSmartToken",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleTokenSmartToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_smartTokens",
"type": "address[]"
}
],
"name": "getConvertersBySmartTokens",
"outputs": [
{
"internalType": "contract IConverter[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token[]",
"name": "_reserveTokens",
"type": "address[]"
},
{
"internalType": "uint32[]",
"name": "_reserveWeights",
"type": "uint32[]"
}
],
"name": "getLiquidityPoolByReserveConfig",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"ConverterAnchorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"ConverterAnchorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"ConvertibleTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"ConvertibleTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPool\",\"type\":\"address\"}],\"name\":\"LiquidityPoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPool\",\"type\":\"address\"}],\"name\":\"LiquidityPoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"SmartTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"SmartTokenRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"addConverter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAnchorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAnchors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_anchors\",\"type\":\"address[]\"}],\"name\":\"getConvertersByAnchors\",\"outputs\":[{\"internalType\":\"contract IConverter[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_smartTokens\",\"type\":\"address[]\"}],\"name\":\"getConvertersBySmartTokens\",\"outputs\":[{\"internalType\":\"contract IConverter[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleToken\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenAnchorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenAnchors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getLiquidityPool\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"getLiquidityPoolByConfig\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"getLiquidityPoolByReserveConfig\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isAnchor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isConverterValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenAnchor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isLiquidityPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isSimilarLiquidityPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_maxConversionFee\",\"type\":\"uint32\"},{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"newConverter\",\"outputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"removeConverter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The ConverterRegistry maintains a list of all active converters in the Bancor Network. Since converters can be upgraded and thus their address can change, the registry actually keeps converter anchors internally and not the converters themselves. The active converter for each anchor can be easily accessed by querying the anchor's owner. The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller: - Anchors - can be used to get all the latest / historical data in the network - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc. - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool tokens), and for each one - all anchors that hold it in their reserves The contract fires events whenever one of the primitives is added to or removed from the registry The contract is upgradable.\",\"events\":{\"ConverterAnchorAdded(address)\":{\"details\":\"triggered when a converter anchor is added to the registry\",\"params\":{\"_anchor\":\"smart token\"}},\"ConverterAnchorRemoved(address)\":{\"details\":\"triggered when a converter anchor is removed from the registry\",\"params\":{\"_anchor\":\"smart token\"}},\"ConvertibleTokenAdded(address,address)\":{\"details\":\"triggered when a convertible token is added to the registry\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_smartToken\":\"associated smart token\"}},\"ConvertibleTokenRemoved(address,address)\":{\"details\":\"triggered when a convertible token is removed from the registry\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_smartToken\":\"associated smart token\"}},\"LiquidityPoolAdded(address)\":{\"details\":\"triggered when a liquidity pool is added to the registry\",\"params\":{\"_liquidityPool\":\"liquidity pool\"}},\"LiquidityPoolRemoved(address)\":{\"details\":\"triggered when a liquidity pool is removed from the registry\",\"params\":{\"_liquidityPool\":\"liquidity pool\"}},\"SmartTokenAdded(address)\":{\"details\":\"deprecated, backward compatibility, use `ConverterAnchorAdded`\"},\"SmartTokenRemoved(address)\":{\"details\":\"deprecated, backward compatibility, use `ConverterAnchorRemoved`\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addConverter(address)\":{\"details\":\"adds an existing converter to the registry can only be called by the owner\",\"params\":{\"_converter\":\"converter\"}},\"constructor\":{\"details\":\"initializes a new ConverterRegistry instance\",\"params\":{\"_registry\":\"address of a contract registry contract\"}},\"getAnchor(uint256)\":{\"details\":\"returns the converter anchor at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"anchor at the given index\"}},\"getAnchorCount()\":{\"details\":\"returns the number of converter anchors in the registry\",\"returns\":{\"_0\":\"number of anchors\"}},\"getAnchors()\":{\"details\":\"returns the list of converter anchors in the registry\",\"returns\":{\"_0\":\"list of anchors\"}},\"getConvertersByAnchors(address[])\":{\"details\":\"returns a list of converters for a given list of anchors this is a utility function that can be used to reduce the number of calls to the contract\",\"params\":{\"_anchors\":\"list of converter anchors\"},\"returns\":{\"_0\":\"list of converters\"}},\"getConvertersBySmartTokens(address[])\":{\"details\":\"deprecated, backward compatibility, use `getConvertersByAnchors`\"},\"getConvertibleToken(uint256)\":{\"details\":\"returns the convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"convertible token at the given index\"}},\"getConvertibleTokenAnchor(address,uint256)\":{\"details\":\"returns the converter anchor associated with a given convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"anchor associated with the given convertible token at the given index\"}},\"getConvertibleTokenAnchorCount(address)\":{\"details\":\"returns the number of converter anchors associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"number of anchors associated with the given convertible token\"}},\"getConvertibleTokenAnchors(address)\":{\"details\":\"returns the list of aoncerter anchors associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"list of anchors associated with the given convertible token\"}},\"getConvertibleTokenCount()\":{\"details\":\"returns the number of convertible tokens in the registry\",\"returns\":{\"_0\":\"number of convertible tokens\"}},\"getConvertibleTokenSmartToken(address,uint256)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchor`\"},\"getConvertibleTokenSmartTokenCount(address)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`\"},\"getConvertibleTokenSmartTokens(address)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchors`\"},\"getConvertibleTokens()\":{\"details\":\"returns the list of convertible tokens in the registry\",\"returns\":{\"_0\":\"list of convertible tokens\"}},\"getLiquidityPool(uint256)\":{\"details\":\"returns the liquidity pool at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"liquidity pool at the given index\"}},\"getLiquidityPoolByConfig(uint16,address[],uint32[])\":{\"details\":\"searches for a liquidity pool with specific configuration\",\"params\":{\"_reserveTokens\":\"reserve tokens\",\"_reserveWeights\":\"reserve weights\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"the liquidity pool, or zero if no such liquidity pool exists\"}},\"getLiquidityPoolByReserveConfig(address[],uint32[])\":{\"details\":\"deprecated, backward compatibility, use `getLiquidityPoolByConfig`\"},\"getLiquidityPoolCount()\":{\"details\":\"returns the number of liquidity pools in the registry\",\"returns\":{\"_0\":\"number of liquidity pools\"}},\"getLiquidityPools()\":{\"details\":\"returns the list of liquidity pools in the registry\",\"returns\":{\"_0\":\"list of liquidity pools\"}},\"getSmartToken(uint256)\":{\"details\":\"deprecated, backward compatibility, use `getAnchor`\"},\"getSmartTokenCount()\":{\"details\":\"deprecated, backward compatibility, use `getAnchorCount`\"},\"getSmartTokens()\":{\"details\":\"deprecated, backward compatibility, use `getAnchors`\"},\"isAnchor(address)\":{\"details\":\"checks whether or not a given value is a converter anchor\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is an anchor, false if not\"}},\"isConverterValid(address)\":{\"details\":\"checks whether or not a given converter is valid\",\"params\":{\"_converter\":\"converter\"},\"returns\":{\"_0\":\"true if the given converter is valid, false if not\"}},\"isConvertibleToken(address)\":{\"details\":\"checks whether or not a given value is a convertible token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a convertible token, false if not\"}},\"isConvertibleTokenAnchor(address,address)\":{\"details\":\"checks whether or not a given value is a converter anchor of a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is an anchor of the given convertible token, false if not\"}},\"isConvertibleTokenSmartToken(address,address)\":{\"details\":\"deprecated, backward compatibility, use `isConvertibleTokenAnchor`\"},\"isLiquidityPool(address)\":{\"details\":\"checks whether or not a given value is a liquidity pool\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a liquidity pool, false if not\"}},\"isSimilarLiquidityPoolRegistered(address)\":{\"details\":\"checks if a liquidity pool with given configuration is already registered\",\"params\":{\"_converter\":\"converter with specific configuration\"},\"returns\":{\"_0\":\"if a liquidity pool with the same configuration is already registered\"}},\"isSmartToken(address)\":{\"details\":\"deprecated, backward compatibility, use `isAnchor`\"},\"newConverter(uint16,string,string,uint8,uint32,address[],uint32[])\":{\"details\":\"creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\",\"params\":{\"_decimals\":\"token / pool decimals\",\"_maxConversionFee\":\"maximum conversion-fee\",\"_name\":\"token / pool name\",\"_reserveTokens\":\"reserve tokens\",\"_reserveWeights\":\"reserve weights\",\"_symbol\":\"token / pool symbol\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"new converter\"}},\"removeConverter(address)\":{\"details\":\"removes a converter from the registry anyone can remove an existing converter from the registry, as long as the converter is invalid note that the owner can also remove valid converters\",\"params\":{\"_converter\":\"converter\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol\":\"ConverterRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol\":{\"keccak256\":\"0xee1e037bda67806cfe010a96d32b4cd56b7b1f9dbc2b13710e43aa376661096a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://31a779ae265721924fb94991483fe0f42ec74c3794e1cb5eef2163f0f288f527\",\"dweb:/ipfs/QmNUNuNqBZYEyj8ABB1Xrx3HDFukdM4awv3oszUXnDURUf\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol\":{\"keccak256\":\"0x18b0d73a3d5ee951ede1b3f840ed35b40570e34975703079a4451555f4dd089b\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1cd7263f1ef60793e3929509150420037df9a1194c3d0f40bb2ff5516d6a373f\",\"dweb:/ipfs/QmNUbsZt2rzWPjStYycgz3vMbNP4VrAqZPRAK39QNqUoos\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol\":{\"keccak256\":\"0x40a8b6a5dd24f48b0c51c9f784c2e5df5afbadad9459873c25163f13f68c99dd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://6ad87f96e9e812869d79396d3415f89fabd1f068861f1c5c92bac09898938070\",\"dweb:/ipfs/QmaHUVyRsjUrQNtWnRhSnfPXMbwnFgpNwZvL9BMC5Xxagb\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol\":{\"keccak256\":\"0x827d22d6c52b3e5128595090a3694847e9c54a760abf0e47a8870a7235537723\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://edae6c2f9f6fde390032189dda1b7f720521a31df5eb98e001d04bbf44dcfa02\",\"dweb:/ipfs/QmRz2EG3tcKeKXwHizciEr19ZEH2SidtQ9rkprKc6iR5Tz\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol\":{\"keccak256\":\"0xc2b8e75bf4d69b34f9687d90d8eb31e8462bfcf25565f5ca399151648624c73a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e3825b1ccce31117c984a7605376ec2e6f18b15cdd61e9d5624667332a935dd7\",\"dweb:/ipfs/QmeRHtWU1oZJtL8UxJQMbwmTyMhf8Z3DJz6XubFxbP5xQx\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/ITypedConverterCustomFactory.sol\":{\"keccak256\":\"0xe9e91f22d45e1c39dd441bed511d5fa6acffe83910f42ea7abcfd300f59daaaf\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://621881bd2a74632b697d87e4c3253142f8758364122240d5cc18826b18bfef80\",\"dweb:/ipfs/QmcTPevgXAYM7Li4r3rKn8uqRF2hWpid2uNBwymysYjLWp\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol\":{\"keccak256\":\"0x5cfc15e7a23a9872059b0cea4d2ae902c3fc074a39e1c645036ce38ad47881ec\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://890ee09d24de5778e34c4c27d1377d83d378e8f4a13fcb94d5102f61d4749cce\",\"dweb:/ipfs/QmT89f61fmsUN1BVdebKxUc5VU7sitiP33LNk7TTtF18oj\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IWhitelist.sol\":{\"keccak256\":\"0x356ad553ceeaea04d7cb8f0d6a5663c47dfccb2bd82517348128f032416ee34a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ea3bbb9945144ead2c1392351f2f9f7444af78569f2b95da2e68bb6b919db52\",\"dweb:/ipfs/QmPyUAk44Kj7nJB4tzYqeSXWHyYP51mRNynEmWra9m4eKS\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b506040516200331138038062003311833981810160405260208110156200003757600080fd5b5051600080546001600160a01b03191633179055808062000058816200008a565b50600280546001600160a01b039092166001600160a01b031992831681179091556003805490921617905550620000e9565b6001600160a01b038116620000e6576040805162461bcd60e51b815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b61321880620000f96000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80637b10399911610151578063b4c4197a116100c3578063d8cced2a11610087578063d8cced2a14610bef578063e571049b14610c15578063e85455d714610c1d578063effb3c6e14610c43578063f2fde38b14610c4b578063f4fb86c014610c7157610269565b8063b4c4197a14610a62578063c22b82f014610a90578063d3182bed14610bb3578063d4ee1d9014610bbb578063d6c4b5b214610bc357610269565b8063954254f511610115578063954254f5146109ae5780639e76a007146109d4578063a109d214146109fa578063a43d5e9414610a17578063a74498aa14610a3d578063b4a176d314610a5a57610269565b80637b103999146109535780637f45c4c31461095b578063865cf194146109635780638da5cb5b146109805780638f1d0e1a1461098857610269565b80634c7df18f116101ea57806361cd756e116101ae57806361cd756e146108df57806369be4784146108e75780636ce1c4dc146108ef578063725b87861461091557806379ba5097146109435780637a5f0ffd1461094b57610269565b80634c7df18f146105a05780635a0a6618146105bd5780635f1b50fe1461080a578063603f51e414610812578063610c0b051461083e57610269565b80632fe8a6ad116102315780632fe8a6ad146104f85780633ab8857c146105145780634123ef601461053a57806349c5f32b1461056057806349d10b641461059857610269565b8063024c7ec71461026e57806304ceaf411461028f57806311839064146102e75780631d3fccd51461030d5780631f8e262014610457575b600080fd5b61028d6004803603602081101561028457600080fd5b50351515610c97565b005b610297610cbd565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102d35781810151838201526020016102bb565b505050509050019250505060405180910390f35b610297600480360360208110156102fd57600080fd5b50356001600160a01b0316610ccc565b61043b6004803603606081101561032357600080fd5b61ffff8235169190810190604081016020820135600160201b81111561034857600080fd5b82018360208201111561035a57600080fd5b803590602001918460208302840111600160201b8311171561037b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111600160201b831117156103fd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610dff945050505050565b604080516001600160a01b039092168252519081900360200190f35b6102976004803603602081101561046d57600080fd5b810190602081018135600160201b81111561048757600080fd5b82018360208201111561049957600080fd5b803590602001918460208302840111600160201b831117156104ba57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ee6945050505050565b610500610ef7565b604080519115158252519081900360200190f35b6105006004803603602081101561052a57600080fd5b50356001600160a01b0316610f07565b6105006004803603602081101561055057600080fd5b50356001600160a01b0316610f9e565b6105866004803603602081101561057657600080fd5b50356001600160a01b0316610fa9565b60408051918252519081900360200190f35b61028d61100e565b61043b600480360360208110156105b657600080fd5b5035611216565b61043b600480360360e08110156105d357600080fd5b61ffff8235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460018302840111600160201b831117156106b057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929560ff8535169563ffffffff60208701351695919450925060608101915060400135600160201b81111561071757600080fd5b82018360208201111561072957600080fd5b803590602001918460208302840111600160201b8311171561074a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561079957600080fd5b8201836020820111156107ab57600080fd5b803590602001918460208302840111600160201b831117156107cc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611272945050505050565b6102976117c7565b61043b6004803603604081101561082857600080fd5b506001600160a01b0381351690602001356118e4565b6102976004803603602081101561085457600080fd5b810190602081018135600160201b81111561086e57600080fd5b82018360208201111561088057600080fd5b803590602001918460208302840111600160201b831117156108a157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611984945050505050565b61043b611a85565b610586611a94565b61028d6004803603602081101561090557600080fd5b50356001600160a01b0316611b16565b6105006004803603604081101561092b57600080fd5b506001600160a01b0381358116916020013516611b7c565b61028d611b88565b610586611c3f565b61043b611c90565b610297611c9f565b61043b6004803603602081101561097957600080fd5b5035611cf0565b61043b611d4c565b6105006004803603602081101561099e57600080fd5b50356001600160a01b0316611d5b565b610500600480360360208110156109c457600080fd5b50356001600160a01b0316611f64565b61028d600480360360208110156109ea57600080fd5b50356001600160a01b0316612053565b61043b60048036036020811015610a1057600080fd5b50356120c0565b61058660048036036020811015610a2d57600080fd5b50356001600160a01b03166120cb565b61043b60048036036020811015610a5357600080fd5b50356120d6565b61028d612132565b61050060048036036040811015610a7857600080fd5b506001600160a01b038135811691602001351661215e565b61043b60048036036040811015610aa657600080fd5b810190602081018135600160201b811115610ac057600080fd5b820183602082011115610ad257600080fd5b803590602001918460208302840111600160201b83111715610af357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b4257600080fd5b820183602082011115610b5457600080fd5b803590602001918460208302840111600160201b83111715610b7557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d4945050505050565b6105866121f6565b61043b612247565b61043b60048036036040811015610bd957600080fd5b506001600160a01b038135169060200135612256565b61050060048036036020811015610c0557600080fd5b50356001600160a01b0316612262565b6105866122c7565b61050060048036036020811015610c3357600080fd5b50356001600160a01b03166122d1565b610297612336565b61028d60048036036020811015610c6157600080fd5b50356001600160a01b0316612387565b61029760048036036020811015610c8757600080fd5b50356001600160a01b0316612405565b610c9f612410565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060610cc7612336565b905090565b6060610ce56000805160206131c3833981519152612465565b6001600160a01b031663f4fb86c0836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610d3157600080fd5b505afa158015610d45573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d6e57600080fd5b8101908080516040519392919084600160201b821115610d8d57600080fd5b908301906020820185811115610da257600080fd5b82518660208202830111600160201b82111715610dbe57600080fd5b82525081516020918201928201910280838360005b83811015610deb578181015183820152602001610dd3565b505050509050016040525050509050919050565b600081518351148015610e13575060018351115b15610edb576060610e23846124b1565b905060005b8151811015610ed8576000828281518110610e3f57fe5b602002602001015190506000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d6020811015610eae57600080fd5b50519050610ebe81898989612747565b15610ece57509250610edf915050565b5050600101610e28565b50505b5060005b9392505050565b6060610ef182611984565b92915050565b600354600160a01b900460ff1681565b6000610f206000805160206131c3833981519152612465565b6001600160a01b0316633ab8857c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b505afa158015610f80573d6000803e3d6000fd5b505050506040513d6020811015610f9657600080fd5b505192915050565b6000610ef182612262565b6000610fc26000805160206131c3833981519152612465565b6001600160a01b031663a43d5e94836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b6000546001600160a01b03163314806110315750600354600160a01b900460ff16155b611076576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b60006110946f436f6e7472616374526567697374727960801b612465565b6002549091506001600160a01b038083169116148015906110bd57506001600160a01b03811615155b611105576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561116757600080fd5b505afa15801561117b573d6000803e3d6000fd5b505050506040513d602081101561119157600080fd5b50516001600160a01b031614156111e6576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b600061122f6000805160206131c3833981519152612465565b6001600160a01b031663a109d214836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6c57600080fd5b815181516000919081146112c4576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524553455256455360601b604482015290519081900360640190fd5b60006112d18a8686610dff565b6001600160a01b031614611321576040805162461bcd60e51b81526020600482015260126024820152714552525f414c52454144595f45584953545360701b604482015290519081900360640190fd5b600061133f6f436f6e766572746572466163746f727960801b612465565b90506000816001600160a01b0316632e9ab7b38c8c8c8c6040518563ffffffff1660e01b8152600401808561ffff16815260200180602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b838110156113b95781810151838201526020016113a1565b50505050905090810190601f1680156113e65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611419578181015183820152602001611401565b50505050905090810190601f1680156114465780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050506040513d602081101561149357600080fd5b505160025460408051630afb25b560e11b815261ffff8f1660048201526001600160a01b038085166024830152928316604482015263ffffffff8b1660648201529051929350600092918516916315f64b6a9160848082019260209290919082900301818787803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b5051604080516379ba509760e01b815290519192506001600160a01b038416916379ba50979160048082019260009290919082900301818387803b15801561157857600080fd5b505af115801561158c573d6000803e3d6000fd5b50505050806001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115cb57600080fd5b505af11580156115df573d6000803e3d6000fd5b5050505060005b8481101561169557816001600160a01b0316636a49d2c489838151811061160957fe5b602002602001015189848151811061161d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b031681526020018263ffffffff16815260200192505050600060405180830381600087803b15801561167157600080fd5b505af1158015611685573d6000803e3d6000fd5b5050600190920191506115e69050565b50816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b50505050806001600160a01b031663cdc91c696040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561173857600080fd5b505af115801561174c573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b15801561179757600080fd5b505af11580156117ab573d6000803e3d6000fd5b505050506117b881612859565b9b9a5050505050505050505050565b60606117e06000805160206131c3833981519152612465565b6001600160a01b0316635f1b50fe6040518163ffffffff1660e01b815260040160006040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561185557600080fd5b8101908080516040519392919084600160201b82111561187457600080fd5b90830190602082018581111561188957600080fd5b82518660208202830111600160201b821117156118a557600080fd5b82525081516020918201928201910280838360005b838110156118d25781810151838201526020016118ba565b50505050905001604052505050905090565b60006118fd6000805160206131c3833981519152612465565b6001600160a01b031663d6c4b5b284846040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b15801561195157600080fd5b505afa158015611965573d6000803e3d6000fd5b505050506040513d602081101561197b57600080fd5b50519392505050565b606080825167ffffffffffffffff8111801561199f57600080fd5b506040519080825280602002602001820160405280156119c9578160200160208202803683370190505b50905060005b8351811015611a7e578381815181106119e457fe5b60200260200101516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2457600080fd5b505afa158015611a38573d6000803e3d6000fd5b505050506040513d6020811015611a4e57600080fd5b50518251839083908110611a5e57fe5b6001600160a01b03909216602092830291909101909101526001016119cf565b5092915050565b6003546001600160a01b031681565b6000611aad6000805160206131c3833981519152612465565b6001600160a01b03166369be47846040518163ffffffff1660e01b815260040160206040518083038186803b158015611ae557600080fd5b505afa158015611af9573d6000803e3d6000fd5b505050506040513d6020811015611b0f57600080fd5b5051905090565b611b1e612410565b611b2781611f64565b611b70576040805162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fa1a7a72b22a92a22a960591b604482015290519081900360640190fd5b611b7981612859565b50565b6000610edf838361215e565b6001546001600160a01b03163314611bdb576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000611c586000805160206131c3833981519152612465565b6001600160a01b0316637a5f0ffd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ae557600080fd5b6002546001600160a01b031681565b6060611cb86000805160206131c3833981519152612465565b6001600160a01b0316637f45c4c36040518163ffffffff1660e01b815260040160006040518083038186803b15801561181857600080fd5b6000611d096000805160206131c3833981519152612465565b6001600160a01b031663865cf194836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6c57600080fd5b6000546001600160a01b031681565b600080826001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9757600080fd5b505afa158015611dab573d6000803e3d6000fd5b505050506040513d6020811015611dc157600080fd5b505161ffff16905060608167ffffffffffffffff81118015611de257600080fd5b50604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b50905060608267ffffffffffffffff81118015611e2857600080fd5b50604051908082528060200260200182016040528015611e52578160200160208202803683370190505b50905060005b83811015611f39576000866001600160a01b03166319b64015836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ea657600080fd5b505afa158015611eba573d6000803e3d6000fd5b505050506040513d6020811015611ed057600080fd5b505184519091508190859084908110611ee557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611f0f8782612a14565b838381518110611f1b57fe5b63ffffffff9092166020928302919091019091015250600101611e58565b506000611f50611f498786612a9b565b8484610dff565b6001600160a01b0316141595945050505050565b6000816001600160a01b0316826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fa957600080fd5b505afa158015611fbd573d6000803e3d6000fd5b505050506040513d6020811015611fd357600080fd5b505160408051638da5cb5b60e01b815290516001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b15801561201757600080fd5b505afa15801561202b573d6000803e3d6000fd5b505050506040513d602081101561204157600080fd5b50516001600160a01b03161492915050565b6000546001600160a01b0316331480612072575061207081611f64565b155b6120b7576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b611b7981612bc0565b6000610ef182611216565b6000610ef182610fa9565b60006120ef6000805160206131c3833981519152612465565b6001600160a01b031663a74498aa836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6c57600080fd5b61213a612410565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b60006121776000805160206131c3833981519152612465565b6001600160a01b031663725b878684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561195157600080fd5b6000610edf60018451116121e95760006121ec565b60015b60ff168484610dff565b600061220f6000805160206131c3833981519152612465565b6001600160a01b031663e571049b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ae557600080fd5b6001546001600160a01b031681565b6000610edf83836118e4565b600061227b6000805160206131c3833981519152612465565b6001600160a01b0316634123ef60836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b6000610cc76121f6565b60006122ea6000805160206131c3833981519152612465565b6001600160a01b031663e85455d7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b606061234f6000805160206131c3833981519152612465565b6001600160a01b03166304ceaf416040518163ffffffff1660e01b815260040160006040518083038186803b15801561181857600080fd5b61238f612410565b6000546001600160a01b03828116911614156123e3576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6060610ef182610ccc565b6000546001600160a01b03163314612463576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b158015610f6c57600080fd5b606060006124cc6000805160206131c3833981519152612465565b90506000816001600160a01b031663a43d5e94856000815181106124ec57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561253157600080fd5b505afa158015612545573d6000803e3d6000fd5b505050506040513d602081101561255b57600080fd5b50519050600060015b8551811015612615576000846001600160a01b031663a43d5e9488848151811061258a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156125cf57600080fd5b505afa1580156125e3573d6000803e3d6000fd5b505050506040513d60208110156125f957600080fd5b505190508084111561260c578093508192505b50600101612564565b50826001600160a01b031663f4fb86c086838151811061263157fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561267657600080fd5b505afa15801561268a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156126b357600080fd5b8101908080516040519392919084600160201b8211156126d257600080fd5b9083019060208201858111156126e757600080fd5b82518660208202830111600160201b8211171561270357600080fd5b82525081516020918201928201910280838360005b83811015612730578181015183820152602001612718565b505050509050016040525050509350505050919050565b600080856001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b15801561278357600080fd5b505afa158015612797573d6000803e3d6000fd5b505050506040513d60208110156127ad57600080fd5b505161ffff1690506127bf8682612a9b565b61ffff168561ffff16146127d7576000915050612851565b808451146127e9576000915050612851565b60005b845181101561284a576128128786838151811061280557fe5b6020026020010151612a14565b63ffffffff1684828151811061282457fe5b602002602001015163ffffffff161461284257600092505050612851565b6001016127ec565b5060019150505b949350505050565b60006128726000805160206131c3833981519152612465565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d60208110156128d957600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b15801561292157600080fd5b505afa158015612935573d6000803e3d6000fd5b505050506040513d602081101561294b57600080fd5b505161ffff16905061295d8383612d74565b6001811115612975576129708383612e47565b612980565b612980838384612ee6565b60005b81811015612a0d57612a0584866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156129d357600080fd5b505afa1580156129e7573d6000803e3d6000fd5b505050506040513d60208110156129fd57600080fd5b505185612ee6565b600101612983565b5050505050565b600080836001600160a01b0316630e53aae9846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060a06040518083038186803b158015612a6457600080fd5b505afa158015612a78573d6000803e3d6000fd5b505050506040513d60a0811015612a8e57600080fd5b5060200151949350505050565b60408051600481526024810182526020810180516001600160e01b0316633e8ff43f60e01b1781529151815160009384936060936001600160a01b03891693919290918291908083835b60208310612b045780518252601f199092019160209182019101612ae5565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b5091509150818015612b7c575080516020145b15612ba257808060200190516020811015612b9657600080fd5b50519250610ef1915050565b60018411612bb1576000612bb4565b60015b60ff1695945050505050565b6000612bd96000805160206131c3833981519152612465565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1657600080fd5b505afa158015612c2a573d6000803e3d6000fd5b505050506040513d6020811015612c4057600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b158015612c8857600080fd5b505afa158015612c9c573d6000803e3d6000fd5b505050506040513d6020811015612cb257600080fd5b505161ffff169050612cc48383612f9b565b6001811115612cdc57612cd7838361306e565b612ce7565b612ce783838461310d565b60005b81811015612a0d57612d6c84866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d3a57600080fd5b505afa158015612d4e573d6000803e3d6000fd5b505050506040513d6020811015612d6457600080fd5b50518561310d565b600101612cea565b816001600160a01b0316638de6c3eb826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612dc357600080fd5b505af1158015612dd7573d6000803e3d6000fd5b50506040516001600160a01b03841692507fc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd9150600090a26040516001600160a01b038216907f88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab90600090a25050565b816001600160a01b031663ee6a934c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612e9657600080fd5b505af1158015612eaa573d6000803e3d6000fd5b50506040516001600160a01b03841692507fb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d899150600090a25050565b826001600160a01b03166336900c1183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b158015612f4657600080fd5b505af1158015612f5a573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507ff2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a590600090a3505050565b816001600160a01b031663ceb9838c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b50506040516001600160a01b03841692507fbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d9150600090a26040516001600160a01b038216907f2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf90600090a25050565b816001600160a01b031663ae22107f826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156130bd57600080fd5b505af11580156130d1573d6000803e3d6000fd5b50506040516001600160a01b03841692507f59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee609150600090a25050565b826001600160a01b031663fba8f03183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b15801561316d57600080fd5b505af1158015613181573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced4390600090a350505056fe42616e636f72436f6e7665727465725265676973747279446174610000000000a2646970667358221220b491ab47d6148b2936035db25856c9ea3d1cfe85370d66f48e7843610288478564736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102695760003560e01c80637b10399911610151578063b4c4197a116100c3578063d8cced2a11610087578063d8cced2a14610bef578063e571049b14610c15578063e85455d714610c1d578063effb3c6e14610c43578063f2fde38b14610c4b578063f4fb86c014610c7157610269565b8063b4c4197a14610a62578063c22b82f014610a90578063d3182bed14610bb3578063d4ee1d9014610bbb578063d6c4b5b214610bc357610269565b8063954254f511610115578063954254f5146109ae5780639e76a007146109d4578063a109d214146109fa578063a43d5e9414610a17578063a74498aa14610a3d578063b4a176d314610a5a57610269565b80637b103999146109535780637f45c4c31461095b578063865cf194146109635780638da5cb5b146109805780638f1d0e1a1461098857610269565b80634c7df18f116101ea57806361cd756e116101ae57806361cd756e146108df57806369be4784146108e75780636ce1c4dc146108ef578063725b87861461091557806379ba5097146109435780637a5f0ffd1461094b57610269565b80634c7df18f146105a05780635a0a6618146105bd5780635f1b50fe1461080a578063603f51e414610812578063610c0b051461083e57610269565b80632fe8a6ad116102315780632fe8a6ad146104f85780633ab8857c146105145780634123ef601461053a57806349c5f32b1461056057806349d10b641461059857610269565b8063024c7ec71461026e57806304ceaf411461028f57806311839064146102e75780631d3fccd51461030d5780631f8e262014610457575b600080fd5b61028d6004803603602081101561028457600080fd5b50351515610c97565b005b610297610cbd565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102d35781810151838201526020016102bb565b505050509050019250505060405180910390f35b610297600480360360208110156102fd57600080fd5b50356001600160a01b0316610ccc565b61043b6004803603606081101561032357600080fd5b61ffff8235169190810190604081016020820135600160201b81111561034857600080fd5b82018360208201111561035a57600080fd5b803590602001918460208302840111600160201b8311171561037b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111600160201b831117156103fd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610dff945050505050565b604080516001600160a01b039092168252519081900360200190f35b6102976004803603602081101561046d57600080fd5b810190602081018135600160201b81111561048757600080fd5b82018360208201111561049957600080fd5b803590602001918460208302840111600160201b831117156104ba57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ee6945050505050565b610500610ef7565b604080519115158252519081900360200190f35b6105006004803603602081101561052a57600080fd5b50356001600160a01b0316610f07565b6105006004803603602081101561055057600080fd5b50356001600160a01b0316610f9e565b6105866004803603602081101561057657600080fd5b50356001600160a01b0316610fa9565b60408051918252519081900360200190f35b61028d61100e565b61043b600480360360208110156105b657600080fd5b5035611216565b61043b600480360360e08110156105d357600080fd5b61ffff8235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460018302840111600160201b831117156106b057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929560ff8535169563ffffffff60208701351695919450925060608101915060400135600160201b81111561071757600080fd5b82018360208201111561072957600080fd5b803590602001918460208302840111600160201b8311171561074a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561079957600080fd5b8201836020820111156107ab57600080fd5b803590602001918460208302840111600160201b831117156107cc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611272945050505050565b6102976117c7565b61043b6004803603604081101561082857600080fd5b506001600160a01b0381351690602001356118e4565b6102976004803603602081101561085457600080fd5b810190602081018135600160201b81111561086e57600080fd5b82018360208201111561088057600080fd5b803590602001918460208302840111600160201b831117156108a157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611984945050505050565b61043b611a85565b610586611a94565b61028d6004803603602081101561090557600080fd5b50356001600160a01b0316611b16565b6105006004803603604081101561092b57600080fd5b506001600160a01b0381358116916020013516611b7c565b61028d611b88565b610586611c3f565b61043b611c90565b610297611c9f565b61043b6004803603602081101561097957600080fd5b5035611cf0565b61043b611d4c565b6105006004803603602081101561099e57600080fd5b50356001600160a01b0316611d5b565b610500600480360360208110156109c457600080fd5b50356001600160a01b0316611f64565b61028d600480360360208110156109ea57600080fd5b50356001600160a01b0316612053565b61043b60048036036020811015610a1057600080fd5b50356120c0565b61058660048036036020811015610a2d57600080fd5b50356001600160a01b03166120cb565b61043b60048036036020811015610a5357600080fd5b50356120d6565b61028d612132565b61050060048036036040811015610a7857600080fd5b506001600160a01b038135811691602001351661215e565b61043b60048036036040811015610aa657600080fd5b810190602081018135600160201b811115610ac057600080fd5b820183602082011115610ad257600080fd5b803590602001918460208302840111600160201b83111715610af357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b4257600080fd5b820183602082011115610b5457600080fd5b803590602001918460208302840111600160201b83111715610b7557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d4945050505050565b6105866121f6565b61043b612247565b61043b60048036036040811015610bd957600080fd5b506001600160a01b038135169060200135612256565b61050060048036036020811015610c0557600080fd5b50356001600160a01b0316612262565b6105866122c7565b61050060048036036020811015610c3357600080fd5b50356001600160a01b03166122d1565b610297612336565b61028d60048036036020811015610c6157600080fd5b50356001600160a01b0316612387565b61029760048036036020811015610c8757600080fd5b50356001600160a01b0316612405565b610c9f612410565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060610cc7612336565b905090565b6060610ce56000805160206131c3833981519152612465565b6001600160a01b031663f4fb86c0836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610d3157600080fd5b505afa158015610d45573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d6e57600080fd5b8101908080516040519392919084600160201b821115610d8d57600080fd5b908301906020820185811115610da257600080fd5b82518660208202830111600160201b82111715610dbe57600080fd5b82525081516020918201928201910280838360005b83811015610deb578181015183820152602001610dd3565b505050509050016040525050509050919050565b600081518351148015610e13575060018351115b15610edb576060610e23846124b1565b905060005b8151811015610ed8576000828281518110610e3f57fe5b602002602001015190506000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d6020811015610eae57600080fd5b50519050610ebe81898989612747565b15610ece57509250610edf915050565b5050600101610e28565b50505b5060005b9392505050565b6060610ef182611984565b92915050565b600354600160a01b900460ff1681565b6000610f206000805160206131c3833981519152612465565b6001600160a01b0316633ab8857c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b505afa158015610f80573d6000803e3d6000fd5b505050506040513d6020811015610f9657600080fd5b505192915050565b6000610ef182612262565b6000610fc26000805160206131c3833981519152612465565b6001600160a01b031663a43d5e94836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b6000546001600160a01b03163314806110315750600354600160a01b900460ff16155b611076576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b60006110946f436f6e7472616374526567697374727960801b612465565b6002549091506001600160a01b038083169116148015906110bd57506001600160a01b03811615155b611105576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561116757600080fd5b505afa15801561117b573d6000803e3d6000fd5b505050506040513d602081101561119157600080fd5b50516001600160a01b031614156111e6576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b600061122f6000805160206131c3833981519152612465565b6001600160a01b031663a109d214836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6c57600080fd5b815181516000919081146112c4576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524553455256455360601b604482015290519081900360640190fd5b60006112d18a8686610dff565b6001600160a01b031614611321576040805162461bcd60e51b81526020600482015260126024820152714552525f414c52454144595f45584953545360701b604482015290519081900360640190fd5b600061133f6f436f6e766572746572466163746f727960801b612465565b90506000816001600160a01b0316632e9ab7b38c8c8c8c6040518563ffffffff1660e01b8152600401808561ffff16815260200180602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b838110156113b95781810151838201526020016113a1565b50505050905090810190601f1680156113e65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611419578181015183820152602001611401565b50505050905090810190601f1680156114465780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050506040513d602081101561149357600080fd5b505160025460408051630afb25b560e11b815261ffff8f1660048201526001600160a01b038085166024830152928316604482015263ffffffff8b1660648201529051929350600092918516916315f64b6a9160848082019260209290919082900301818787803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b5051604080516379ba509760e01b815290519192506001600160a01b038416916379ba50979160048082019260009290919082900301818387803b15801561157857600080fd5b505af115801561158c573d6000803e3d6000fd5b50505050806001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115cb57600080fd5b505af11580156115df573d6000803e3d6000fd5b5050505060005b8481101561169557816001600160a01b0316636a49d2c489838151811061160957fe5b602002602001015189848151811061161d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b031681526020018263ffffffff16815260200192505050600060405180830381600087803b15801561167157600080fd5b505af1158015611685573d6000803e3d6000fd5b5050600190920191506115e69050565b50816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b50505050806001600160a01b031663cdc91c696040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561173857600080fd5b505af115801561174c573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b15801561179757600080fd5b505af11580156117ab573d6000803e3d6000fd5b505050506117b881612859565b9b9a5050505050505050505050565b60606117e06000805160206131c3833981519152612465565b6001600160a01b0316635f1b50fe6040518163ffffffff1660e01b815260040160006040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561185557600080fd5b8101908080516040519392919084600160201b82111561187457600080fd5b90830190602082018581111561188957600080fd5b82518660208202830111600160201b821117156118a557600080fd5b82525081516020918201928201910280838360005b838110156118d25781810151838201526020016118ba565b50505050905001604052505050905090565b60006118fd6000805160206131c3833981519152612465565b6001600160a01b031663d6c4b5b284846040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b15801561195157600080fd5b505afa158015611965573d6000803e3d6000fd5b505050506040513d602081101561197b57600080fd5b50519392505050565b606080825167ffffffffffffffff8111801561199f57600080fd5b506040519080825280602002602001820160405280156119c9578160200160208202803683370190505b50905060005b8351811015611a7e578381815181106119e457fe5b60200260200101516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2457600080fd5b505afa158015611a38573d6000803e3d6000fd5b505050506040513d6020811015611a4e57600080fd5b50518251839083908110611a5e57fe5b6001600160a01b03909216602092830291909101909101526001016119cf565b5092915050565b6003546001600160a01b031681565b6000611aad6000805160206131c3833981519152612465565b6001600160a01b03166369be47846040518163ffffffff1660e01b815260040160206040518083038186803b158015611ae557600080fd5b505afa158015611af9573d6000803e3d6000fd5b505050506040513d6020811015611b0f57600080fd5b5051905090565b611b1e612410565b611b2781611f64565b611b70576040805162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fa1a7a72b22a92a22a960591b604482015290519081900360640190fd5b611b7981612859565b50565b6000610edf838361215e565b6001546001600160a01b03163314611bdb576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000611c586000805160206131c3833981519152612465565b6001600160a01b0316637a5f0ffd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ae557600080fd5b6002546001600160a01b031681565b6060611cb86000805160206131c3833981519152612465565b6001600160a01b0316637f45c4c36040518163ffffffff1660e01b815260040160006040518083038186803b15801561181857600080fd5b6000611d096000805160206131c3833981519152612465565b6001600160a01b031663865cf194836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6c57600080fd5b6000546001600160a01b031681565b600080826001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9757600080fd5b505afa158015611dab573d6000803e3d6000fd5b505050506040513d6020811015611dc157600080fd5b505161ffff16905060608167ffffffffffffffff81118015611de257600080fd5b50604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b50905060608267ffffffffffffffff81118015611e2857600080fd5b50604051908082528060200260200182016040528015611e52578160200160208202803683370190505b50905060005b83811015611f39576000866001600160a01b03166319b64015836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ea657600080fd5b505afa158015611eba573d6000803e3d6000fd5b505050506040513d6020811015611ed057600080fd5b505184519091508190859084908110611ee557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611f0f8782612a14565b838381518110611f1b57fe5b63ffffffff9092166020928302919091019091015250600101611e58565b506000611f50611f498786612a9b565b8484610dff565b6001600160a01b0316141595945050505050565b6000816001600160a01b0316826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fa957600080fd5b505afa158015611fbd573d6000803e3d6000fd5b505050506040513d6020811015611fd357600080fd5b505160408051638da5cb5b60e01b815290516001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b15801561201757600080fd5b505afa15801561202b573d6000803e3d6000fd5b505050506040513d602081101561204157600080fd5b50516001600160a01b03161492915050565b6000546001600160a01b0316331480612072575061207081611f64565b155b6120b7576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b611b7981612bc0565b6000610ef182611216565b6000610ef182610fa9565b60006120ef6000805160206131c3833981519152612465565b6001600160a01b031663a74498aa836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6c57600080fd5b61213a612410565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b60006121776000805160206131c3833981519152612465565b6001600160a01b031663725b878684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561195157600080fd5b6000610edf60018451116121e95760006121ec565b60015b60ff168484610dff565b600061220f6000805160206131c3833981519152612465565b6001600160a01b031663e571049b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ae557600080fd5b6001546001600160a01b031681565b6000610edf83836118e4565b600061227b6000805160206131c3833981519152612465565b6001600160a01b0316634123ef60836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b6000610cc76121f6565b60006122ea6000805160206131c3833981519152612465565b6001600160a01b031663e85455d7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6c57600080fd5b606061234f6000805160206131c3833981519152612465565b6001600160a01b03166304ceaf416040518163ffffffff1660e01b815260040160006040518083038186803b15801561181857600080fd5b61238f612410565b6000546001600160a01b03828116911614156123e3576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6060610ef182610ccc565b6000546001600160a01b03163314612463576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b158015610f6c57600080fd5b606060006124cc6000805160206131c3833981519152612465565b90506000816001600160a01b031663a43d5e94856000815181106124ec57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561253157600080fd5b505afa158015612545573d6000803e3d6000fd5b505050506040513d602081101561255b57600080fd5b50519050600060015b8551811015612615576000846001600160a01b031663a43d5e9488848151811061258a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156125cf57600080fd5b505afa1580156125e3573d6000803e3d6000fd5b505050506040513d60208110156125f957600080fd5b505190508084111561260c578093508192505b50600101612564565b50826001600160a01b031663f4fb86c086838151811061263157fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561267657600080fd5b505afa15801561268a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156126b357600080fd5b8101908080516040519392919084600160201b8211156126d257600080fd5b9083019060208201858111156126e757600080fd5b82518660208202830111600160201b8211171561270357600080fd5b82525081516020918201928201910280838360005b83811015612730578181015183820152602001612718565b505050509050016040525050509350505050919050565b600080856001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b15801561278357600080fd5b505afa158015612797573d6000803e3d6000fd5b505050506040513d60208110156127ad57600080fd5b505161ffff1690506127bf8682612a9b565b61ffff168561ffff16146127d7576000915050612851565b808451146127e9576000915050612851565b60005b845181101561284a576128128786838151811061280557fe5b6020026020010151612a14565b63ffffffff1684828151811061282457fe5b602002602001015163ffffffff161461284257600092505050612851565b6001016127ec565b5060019150505b949350505050565b60006128726000805160206131c3833981519152612465565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d60208110156128d957600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b15801561292157600080fd5b505afa158015612935573d6000803e3d6000fd5b505050506040513d602081101561294b57600080fd5b505161ffff16905061295d8383612d74565b6001811115612975576129708383612e47565b612980565b612980838384612ee6565b60005b81811015612a0d57612a0584866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156129d357600080fd5b505afa1580156129e7573d6000803e3d6000fd5b505050506040513d60208110156129fd57600080fd5b505185612ee6565b600101612983565b5050505050565b600080836001600160a01b0316630e53aae9846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060a06040518083038186803b158015612a6457600080fd5b505afa158015612a78573d6000803e3d6000fd5b505050506040513d60a0811015612a8e57600080fd5b5060200151949350505050565b60408051600481526024810182526020810180516001600160e01b0316633e8ff43f60e01b1781529151815160009384936060936001600160a01b03891693919290918291908083835b60208310612b045780518252601f199092019160209182019101612ae5565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b5091509150818015612b7c575080516020145b15612ba257808060200190516020811015612b9657600080fd5b50519250610ef1915050565b60018411612bb1576000612bb4565b60015b60ff1695945050505050565b6000612bd96000805160206131c3833981519152612465565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1657600080fd5b505afa158015612c2a573d6000803e3d6000fd5b505050506040513d6020811015612c4057600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b158015612c8857600080fd5b505afa158015612c9c573d6000803e3d6000fd5b505050506040513d6020811015612cb257600080fd5b505161ffff169050612cc48383612f9b565b6001811115612cdc57612cd7838361306e565b612ce7565b612ce783838461310d565b60005b81811015612a0d57612d6c84866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d3a57600080fd5b505afa158015612d4e573d6000803e3d6000fd5b505050506040513d6020811015612d6457600080fd5b50518561310d565b600101612cea565b816001600160a01b0316638de6c3eb826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612dc357600080fd5b505af1158015612dd7573d6000803e3d6000fd5b50506040516001600160a01b03841692507fc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd9150600090a26040516001600160a01b038216907f88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab90600090a25050565b816001600160a01b031663ee6a934c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612e9657600080fd5b505af1158015612eaa573d6000803e3d6000fd5b50506040516001600160a01b03841692507fb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d899150600090a25050565b826001600160a01b03166336900c1183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b158015612f4657600080fd5b505af1158015612f5a573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507ff2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a590600090a3505050565b816001600160a01b031663ceb9838c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b50506040516001600160a01b03841692507fbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d9150600090a26040516001600160a01b038216907f2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf90600090a25050565b816001600160a01b031663ae22107f826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156130bd57600080fd5b505af11580156130d1573d6000803e3d6000fd5b50506040516001600160a01b03841692507f59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee609150600090a25050565b826001600160a01b031663fba8f03183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b15801561316d57600080fd5b505af1158015613181573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced4390600090a350505056fe42616e636f72436f6e7665727465725265676973747279446174610000000000a2646970667358221220b491ab47d6148b2936035db25856c9ea3d1cfe85370d66f48e7843610288478564736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "1414:24366:10:-:0;;;3479:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3479:90:10;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;3479:90:10;;594:23:64;3479:90:10;594:13:64;:23::i;:::-;-1:-1:-1;2122:8:56::1;:39:::0;;-1:-1:-1;;;;;2122:39:56;;::::1;-1:-1:-1::0;;;;;;2122:39:56;;::::1;::::0;::::1;::::0;;;2172:12:::1;:43:::0;;;;::::1;;::::0;;-1:-1:-1;1414:24366:10;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;1414:24366:10:-;;;;;;;",
"deployedSourceMap": "1414:24366:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;23430:103:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11304:249;;;;;;;;;;;;;;;;-1:-1:-1;11304:249:10;-1:-1:-1;;;;;11304:249:10;;:::i;15233:1026::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15233:1026:10;;;;;;;;-1:-1:-1;15233:1026:10;;-1:-1:-1;;;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15233:1026:10;;-1:-1:-1;15233:1026:10;;-1:-1:-1;;;;;15233:1026:10:i;:::-;;;;-1:-1:-1;;;;;15233:1026:10;;;;;;;;;;;;;;25232:171;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25232:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25232:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25232:171:10;;-1:-1:-1;25232:171:10;;-1:-1:-1;;;;;25232:171:10:i;1333:38:56:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;10347:191:10;;;;;;;;;;;;;;;;-1:-1:-1;10347:191:10;-1:-1:-1;;;;;10347:191:10;;:::i;23835:107::-;;;;;;;;;;;;;;;;-1:-1:-1;23835:107:10;-1:-1:-1;;;;;23835:107:10;;:::i;10799:248::-;;;;;;;;;;;;;;;;-1:-1:-1;10799:248:10;-1:-1:-1;;;;;10799:248:10;;:::i;:::-;;;;;;;;;;;;;;;;2300:925:56;;;:::i;7106:189:10:-;;;;;;;;;;;;;;;;-1:-1:-1;7106:189:10;;:::i;4179:1300::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;;;;;;;-1:-1:-1;4179:1300:10;;-1:-1:-1;;;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;-1:-1:-1;4179:1300:10;;;;-1:-1:-1;4179:1300:10;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;;;;;;;-1:-1:-1;4179:1300:10;;-1:-1:-1;;;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;-1:-1:-1;4179:1300:10;;-1:-1:-1;;;;;4179:1300:10:i;9568:187::-;;;:::i;11805:271::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11805:271:10;;;;;;;;:::i;12939:362::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12939:362:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12939:362:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12939:362:10;;-1:-1:-1;12939:362:10;;-1:-1:-1;;;;;12939:362:10:i;1243:37:56:-;;;:::i;9235:186:10:-;;;:::i;5648:::-;;;;;;;;;;;;;;;;-1:-1:-1;5648:186:10;-1:-1:-1;;;;;5648:186:10;;:::i;24939:189::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24939:189:10;;;;;;;;;;:::i;1422:217:57:-;;;:::i;7818:180:10:-;;;:::i;1154:33:56:-;;;:::i;8139:181:10:-;;;:::i;9933:200::-;;;;;;;;;;;;;;;;-1:-1:-1;9933:200:10;;:::i;219:29:57:-;;;:::i;13976:891:10:-;;;;;;;;;;;;;;;;-1:-1:-1;13976:891:10;-1:-1:-1;;;;;13976:891:10;;:::i;13503:199::-;;;;;;;;;;;;;;;;-1:-1:-1;13503:199:10;-1:-1:-1;;;;;13503:199:10;;:::i;6123:202::-;;;;;;;;;;;;;;;;-1:-1:-1;6123:202:10;-1:-1:-1;;;;;6123:202:10;;:::i;23624:121::-;;;;;;;;;;;;;;;;-1:-1:-1;23624:121:10;;:::i;24054:180::-;;;;;;;;;;;;;;;;-1:-1:-1;24054:180:10;-1:-1:-1;;;;;24054:180:10;;:::i;8492:199::-;;;;;;;;;;;;;;;;-1:-1:-1;8492:199:10;;:::i;3304:137:56:-;;;:::i;12391:257:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12391:257:10;;;;;;;;;;:::i;25509:268::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25509:268:10;;;;;;;;-1:-1:-1;25509:268:10;;-1:-1:-1;;;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25509:268:10;;-1:-1:-1;25509:268:10;;-1:-1:-1;;;;;25509:268:10:i;6464:170::-;;;:::i;255:23:57:-;;;:::i;24630:203:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24630:203:10;;;;;;;;:::i;7498:175::-;;;;;;;;;;;;;;;;-1:-1:-1;7498:175:10;-1:-1:-1;;;;;7498:175:10;;:::i;23236:102::-;;;:::i;8899:185::-;;;;;;;;;;;;;;;;-1:-1:-1;8899:185:10;-1:-1:-1;;;;;8899:185:10;;:::i;6769:171::-;;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;24342:181:10:-;;;;;;;;;;;;;;;;-1:-1:-1;24342:181:10;-1:-1:-1;;;;;24342:181:10;;:::i;3655:224:56:-;726:12:57;:10;:12::i;:::-;3815:26:56::1;:56:::0;;;::::1;;-1:-1:-1::0;;;3815:56:56::1;-1:-1:-1::0;;;;3815:56:56;;::::1;::::0;;;::::1;::::0;;3655:224::o;23430:103:10:-;23477:16;23513:12;:10;:12::i;:::-;23506:19;;23430:103;:::o;11304:249::-;11401:16;11460:34;-1:-1:-1;;;;;;;;;;;11460:9:10;:34::i;:::-;-1:-1:-1;;;;;11437:89:10;;11527:17;11437:108;;;;;;;;;;;;;-1:-1:-1;;;;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11437:108:10;;;;;;;;;;;;-1:-1:-1;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11430:115;;11304:249;;;:::o;15233:1026::-;15372:16;15508:15;:22;15483:14;:21;:47;:76;;;;;15558:1;15534:14;:21;:25;15483:76;15479:734;;;15651:40;15694:44;15723:14;15694:28;:44::i;:::-;15651:87;;15825:9;15820:382;15844:23;:30;15840:1;:34;15820:382;;;15900:23;15943;15967:1;15943:26;;;;;;;;;;;;;;15900:70;;15989:20;16031:6;-1:-1:-1;;;;;16031:12:10;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16031:14:10;;-1:-1:-1;16070:80:10;16031:14;16111:5;16118:14;16134:15;16070:29;:80::i;:::-;16066:120;;;-1:-1:-1;16180:6:10;-1:-1:-1;16173:13:10;;-1:-1:-1;;16173:13:10;16066:120;-1:-1:-1;;15876:3:10;;15820:382;;;;15479:734;;-1:-1:-1;16249:1:10;15233:1026;;;;;;:::o;25232:171::-;25320:19;25359:36;25382:12;25359:22;:36::i;:::-;25352:43;25232:171;-1:-1:-1;;25232:171:10:o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;10347:191:10:-;10421:4;10468:34;-1:-1:-1;;;;;;;;;;;10468:9:10;:34::i;:::-;-1:-1:-1;;;;;10445:77:10;;10523:6;10445:85;;;;;;;;;;;;;-1:-1:-1;;;;;10445:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:85:10;;10347:191;-1:-1:-1;;10347:191:10:o;23835:107::-;23894:4;23918:16;23927:6;23918:8;:16::i;10799:248::-;10900:7;10950:34;-1:-1:-1;;;;;;;;;;;10950:9:10;:34::i;:::-;-1:-1:-1;;;;;10927:93:10;;11021:17;10927:112;;;;;;;;;;;;;-1:-1:-1;;;;;10927:112:10;;;;;;;;;;;;;;;;;;;;;;;;;;2300:925:56;2417:5;;-1:-1:-1;;;;;2417:5:56;2403:10;:19;;:50;;-1:-1:-1;2427:26:56;;-1:-1:-1;;;2427:26:56;;;;2426:27;2403:50;2395:80;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;;;;2530:29;2580:28;-1:-1:-1;;;2580:9:56;:28::i;:::-;2721:8;;2530:79;;-1:-1:-1;;;;;;2706:23:56;;;2721:8;;2706:23;;;;:61;;-1:-1:-1;;;;;;2733:34:56;;;;2706:61;2698:94;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;;;;2959:1;-1:-1:-1;;;;;2907:54:56;:11;-1:-1:-1;;;;;2907:21:56;;-1:-1:-1;;;2907:40:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:40:56;-1:-1:-1;;;;;2907:54:56;;;2899:87;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;;;;3093:8;;;3078:12;:23;;-1:-1:-1;;;;;3093:8:56;;;-1:-1:-1;;;;;;3078:23:56;;;;;;;3195:22;;;;;;;;;;;2300:925::o;7106:189:10:-;7171:16;7230:34;-1:-1:-1;;;;;;;;;;;7230:9:10;:34::i;:::-;-1:-1:-1;;;;;7207:72:10;;7280:6;7207:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4179:1300;4516:21;;4566:22;;4471:10;;4516:21;4556:32;;4548:65;;;;;-1:-1:-1;;;4548:65:10;;;;;;;;;;;;-1:-1:-1;;;4548:65:10;;;;;;;;;;;;;;;4717:1;4632:64;4657:5;4664:14;4680:15;4632:24;:64::i;:::-;-1:-1:-1;;;;;4632:87:10;;4624:118;;;;;-1:-1:-1;;;4624:118:10;;;;;;;;;;;;-1:-1:-1;;;4624:118:10;;;;;;;;;;;;;;;4755:25;4801:28;-1:-1:-1;;;4801:9:10;:28::i;:::-;4755:75;;4841:23;4884:7;-1:-1:-1;;;;;4884:20:10;;4905:5;4912;4919:7;4928:9;4884:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4884:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4884:54:10;5023:8;;4984:67;;;-1:-1:-1;;;4984:67:10;;;;;;;;;-1:-1:-1;;;;;4984:67:10;;;;;;;5023:8;;;4984:67;;;;;;;;;;;;;4884:54;;-1:-1:-1;4950:20:10;;4984:23;;;;;;:67;;;;;4884:54;;4984:67;;;;;;;;4950:20;4984:23;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4984:67:10;5065:24;;;-1:-1:-1;;;5065:24:10;;;;4984:67;;-1:-1:-1;;;;;;5065:22:10;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:9;-1:-1:-1;;;;;5100:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5145:9;5140:109;5164:6;5160:1;:10;5140:109;;;5190:9;-1:-1:-1;;;;;5190:20:10;;5211:14;5226:1;5211:17;;;;;;;;;;;;;;5230:15;5246:1;5230:18;;;;;;;;;;;;;;5190:59;;;;;;;;;;;;;-1:-1:-1;;;;;5190:59:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5172:3:10;;;;;-1:-1:-1;5140:109:10;;-1:-1:-1;5140:109:10;;;5262:6;-1:-1:-1;;;;;5262:24:10;;5295:9;5262:44;;;;;;;;;;;;;-1:-1:-1;;;;;5262:44:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:9;-1:-1:-1;;;;;5317:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5361:39:10;;;-1:-1:-1;;;5361:39:10;;5389:10;5361:39;;;;;;-1:-1:-1;;;;;5361:27:10;;;-1:-1:-1;5361:27:10;;-1:-1:-1;5361:39:10;;;;;-1:-1:-1;;5361:39:10;;;;;;;-1:-1:-1;5361:27:10;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5413:31;5434:9;5413:20;:31::i;:::-;5462:9;4179:1300;-1:-1:-1;;;;;;;;;;;4179:1300:10:o;9568:187::-;9630:16;9689:34;-1:-1:-1;;;;;;;;;;;9689:9:10;:34::i;:::-;-1:-1:-1;;;;;9666:79:10;;:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9666:81:10;;;;;;;;;;;;-1:-1:-1;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9659:88;;9568:187;:::o;11805:271::-;11917:16;11976:34;-1:-1:-1;;;;;;;;;;;11976:9:10;:34::i;:::-;-1:-1:-1;;;;;11953:88:10;;12042:17;12061:6;11953:115;;;;;;;;;;;;;-1:-1:-1;;;;;11953:115:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11953:115:10;;11805:271;-1:-1:-1;;;11805:271:10:o;12939:362::-;13019:19;13051:30;13101:8;:15;13084:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13084:33:10;;13051:66;;13135:9;13130:133;13154:8;:15;13150:1;:19;13130:133;;;13241:8;13250:1;13241:11;;;;;;;;;;;;;;-1:-1:-1;;;;;13224:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13224:37:10;13189:13;;:10;;13200:1;;13189:13;;;;;;-1:-1:-1;;;;;13189:74:10;;;:13;;;;;;;;;;;:74;13171:3;;13130:133;;;-1:-1:-1;13283:10:10;12939:362;-1:-1:-1;;12939:362:10:o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;9235:186:10:-;9301:7;9351:34;-1:-1:-1;;;;;;;;;;;9351:9:10;:34::i;:::-;-1:-1:-1;;;;;9328:83:10;;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9328:85:10;;-1:-1:-1;9235:186:10;:::o;5648:::-;726:12:57;:10;:12::i;:::-;5729:28:10::1;5746:10;5729:16;:28::i;:::-;5721:62;;;::::0;;-1:-1:-1;;;5721:62:10;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5721:62:10;;;;;;;;;;;;;::::1;;5794:32;5815:10;5794:20;:32::i;:::-;5648:186:::0;:::o;24939:189::-;25045:4;25069:51;25094:17;25113:6;25069:24;:51::i;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;7818:180:10:-;7881:7;7931:34;-1:-1:-1;;;;;;;;;;;7931:9:10;:34::i;:::-;-1:-1:-1;;;;;7908:80:10;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1154:33:56;;;-1:-1:-1;;;;;1154:33:56;;:::o;8139:181:10:-;8198:16;8257:34;-1:-1:-1;;;;;;;;;;;8257:9:10;:34::i;:::-;-1:-1:-1;;;;;8234:76:10;;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9933:200;10008:11;10062:34;-1:-1:-1;;;;;;;;;;;10062:9:10;:34::i;:::-;-1:-1:-1;;;;;10039:78:10;;10118:6;10039:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;219:29:57;;;-1:-1:-1;;;;;219:29:57;;:::o;13976:891:10:-;14062:4;14079:25;14107:10;-1:-1:-1;;;;;14107:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14107:32:10;14079:60;;;-1:-1:-1;14150:34:10;14079:60;14187:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14187:36:10;;14150:73;;14234:30;14280:17;14267:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14267:31:10;;14234:64;;14375:9;14370:254;14394:17;14390:1;:21;14370:254;;;14433:24;14460:10;-1:-1:-1;;;;;14460:26:10;;14487:1;14460:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14460:29:10;14504:16;;14460:29;;-1:-1:-1;14460:29:10;;14504:13;;14518:1;;14504:16;;;;;;;;;;;:31;-1:-1:-1;;;;;14504:31:10;;;-1:-1:-1;;;;;14504:31:10;;;;;14570:42;14587:10;14599:12;14570:16;:42::i;:::-;14550:14;14565:1;14550:17;;;;;;;;:62;;;;:17;;;;;;;;;;;:62;-1:-1:-1;14413:3:10;;14370:254;;;-1:-1:-1;14857:1:10;14732:104;14757:47;14774:10;14786:17;14757:16;:47::i;:::-;14806:13;14821:14;14732:24;:104::i;:::-;-1:-1:-1;;;;;14732:127:10;;;;13976:891;-1:-1:-1;;;;;13976:891:10:o;13503:199::-;13573:4;13683:10;-1:-1:-1;;;;;13645:49:10;:10;-1:-1:-1;;;;;13645:16:10;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:18:10;:26;;;-1:-1:-1;;;13645:26:10;;;;-1:-1:-1;;;;;13645:24:10;;;;;;:26;;;;;:18;;:26;;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:26:10;-1:-1:-1;;;;;13645:49:10;;;13503:199;-1:-1:-1;;13503:199:10:o;6123:202::-;6211:5;;-1:-1:-1;;;;;6211:5:10;6197:10;:19;;:52;;;6221:28;6238:10;6221:16;:28::i;:::-;6220:29;6197:52;6189:82;;;;;-1:-1:-1;;;6189:82:10;;;;;;;;;;;;-1:-1:-1;;;6189:82:10;;;;;;;;;;;;;;;6282:35;6306:10;6282:23;:35::i;23624:121::-;23684:16;23720:17;23730:6;23720:9;:17::i;24054:180::-;24150:7;24177:49;24208:17;24177:30;:49::i;8492:199::-;8564:16;8623:34;-1:-1:-1;;;;;;;;;;;8623:9:10;:34::i;:::-;-1:-1:-1;;;;;8600:75:10;;8676:6;8600:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3304:137:56;726:12:57;:10;:12::i;:::-;3421::56::1;::::0;3410:8:::1;:23:::0;;-1:-1:-1;;;;;;3410:23:56::1;-1:-1:-1::0;;;;;3421:12:56;;::::1;3410:23:::0;;;::::1;::::0;;3304:137::o;12391:257:10:-;12502:4;12549:34;-1:-1:-1;;;;;;;;;;;12549:9:10;:34::i;:::-;-1:-1:-1;;;;;12526:87:10;;12614:17;12633:6;12526:114;;;;;;;;;;;;;-1:-1:-1;;;;;12526:114:10;;;;;;-1:-1:-1;;;;;12526:114:10;;;;;;;;;;;;;;;;;;;;;;;;;;;25509:268;25641:16;25677:92;25726:1;25702:14;:21;:25;:33;;25734:1;25702:33;;;25730:1;25702:33;25677:92;;25737:14;25753:15;25677:24;:92::i;6464:170::-;6520:7;6570:34;-1:-1:-1;;;;;;;;;;;6570:9:10;:34::i;:::-;-1:-1:-1;;;;;6547:77:10;;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;255:23:57;;;-1:-1:-1;;;;;255:23:57;;:::o;24630:203:10:-;24737:16;24773:52;24799:17;24818:6;24773:25;:52::i;7498:175::-;7562:4;7609:34;-1:-1:-1;;;;;;;;;;;7609:9:10;:34::i;:::-;-1:-1:-1;;;;;7586:71:10;;7658:6;7586:79;;;;;;;;;;;;;-1:-1:-1;;;;;7586:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;23236:102;23287:7;23314:16;:14;:16::i;8899:185::-;8970:4;9017:34;-1:-1:-1;;;;;;;;;;;9017:9:10;:34::i;:::-;-1:-1:-1;;;;;8994:74:10;;9069:6;8994:82;;;;;;;;;;;;;-1:-1:-1;;;;;8994:82:10;;;;;;;;;;;;;;;;;;;;;;;;;;6769:171;6821:16;6880:34;-1:-1:-1;;;;;;;;;;;6880:9:10;:34::i;:::-;-1:-1:-1;;;;;6857:73:10;;:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1164:167:57;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;24342:181:10:-;24434:16;24470:45;24497:17;24470:26;:45::i;813:104:57:-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;20557:934:10;20654:16;20683:44;20753:34;-1:-1:-1;;;;;;;;;;;20753:9:10;:34::i;:::-;20683:105;;20799:22;20824:21;-1:-1:-1;;;;;20824:56:10;;20881:14;20896:1;20881:17;;;;;;;;;;;;;;20824:75;;;;;;;;;;;;;-1:-1:-1;;;;;20824:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20824:75:10;;-1:-1:-1;20910:13:10;21043:1;21026:363;21050:14;:21;21046:1;:25;21026:363;;;21093:35;21131:21;-1:-1:-1;;;;;21131:56:10;;21188:14;21203:1;21188:17;;;;;;;;;;;;;;21131:75;;;;;;;;;;;;;-1:-1:-1;;;;;21131:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21131:75:10;;-1:-1:-1;21225:44:10;;;21221:157;;;21307:27;21290:44;;21361:1;21353:9;;21221:157;-1:-1:-1;21073:3:10;;21026:363;;;;21408:21;-1:-1:-1;;;;;21408:52:10;;21461:14;21476:5;21461:21;;;;;;;;;;;;;;21408:75;;;;;;;;;;;;;-1:-1:-1;;;;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21408:75:10;;;;;;;;;;;;-1:-1:-1;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21401:82;;;;;20557:934;;;:::o;21499:658::-;21667:4;21684:25;21712:10;-1:-1:-1;;;;;21712:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21712:32:10;21684:60;;;-1:-1:-1;21770:47:10;21787:10;21684:60;21770:16;:47::i;:::-;21761:56;;:5;:56;;;21757:87;;21839:5;21832:12;;;;;21757:87;21886:17;21861:14;:21;:42;21857:73;;21925:5;21918:12;;;;;21857:73;21948:9;21943:183;21967:14;:21;21963:1;:25;21943:183;;;22036:47;22053:10;22065:14;22080:1;22065:17;;;;;;;;;;;;;;22036:16;:47::i;:::-;22014:69;;:15;22030:1;22014:18;;;;;;;;;;;;;;:69;;;22010:104;;22109:5;22102:12;;;;;;22010:104;21990:3;;21943:183;;;;22145:4;22138:11;;;21499:658;;;;;;;:::o;18900:810::-;18972:44;19042:34;-1:-1:-1;;;;;;;;;;;19042:9:10;:34::i;:::-;18972:105;;19088:23;19125:10;-1:-1:-1;;;;;19114:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19114:30:10;19183:32;;;-1:-1:-1;;;19183:32:10;;;;19114:30;;-1:-1:-1;19155:25:10;;-1:-1:-1;;;;;19183:30:10;;;;;:32;;;;;19114:30;;19183:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19183:32:10;19155:60;;;-1:-1:-1;19265:40:10;19275:21;19298:6;19265:9;:40::i;:::-;19340:1;19320:17;:21;19316:196;;;19356:47;19373:21;19396:6;19356:16;:47::i;:::-;19316:196;;;19432:80;19452:21;19495:6;19505;19432:19;:80::i;:::-;19565:9;19560:142;19584:17;19580:1;:21;19560:142;;;19621:81;19641:21;19664:10;-1:-1:-1;;;;;19664:26:10;;19691:1;19664:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19664:29:10;19695:6;19621:19;:81::i;:::-;19603:3;;19560:142;;;;18900:810;;;;:::o;22294:208::-;22392:6;22414:13;22434:10;-1:-1:-1;;;;;22434:21:10;;22456:13;22434:36;;;;;;;;;;;;;-1:-1:-1;;;;;22434:36:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22434:36:10;;;;22294:208;-1:-1:-1;;;;22294:208:10:o;22736:404::-;22927:52;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22927:52:10;-1:-1:-1;;;22927:52:10;;;22896:84;;;;22835:6;;;;22869:23;;-1:-1:-1;;;;;22896:30:10;;;22927:52;;22896:84;;;;22927:52;22896:84;;22927:52;22896:84;;;;;;;;;;-1:-1:-1;;22896:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22854:126;;;;22995:7;:34;;;;;23006:10;:17;23027:2;23006:23;22995:34;22991:93;;;23063:10;23052:32;;;;;;;;;;;;;;;-1:-1:-1;23052:32:10;;-1:-1:-1;23045:39:10;;-1:-1:-1;;23045:39:10;22991:93;23123:1;23102:18;:22;:30;;23131:1;23102:30;;;23127:1;23102:30;23095:37;;;22736:404;-1:-1:-1;;;;;22736:404:10:o;19718:831::-;19793:44;19863:34;-1:-1:-1;;;;;;;;;;;19863:9:10;:34::i;:::-;19793:105;;19909:23;19946:10;-1:-1:-1;;;;;19935:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19935:30:10;20004:32;;;-1:-1:-1;;;20004:32:10;;;;19935:30;;-1:-1:-1;19976:25:10;;-1:-1:-1;;;;;20004:30:10;;;;;:32;;;;;19935:30;;20004:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20004:32:10;19976:60;;;-1:-1:-1;20089:43:10;20102:21;20125:6;20089:12;:43::i;:::-;20167:1;20147:17;:21;20143:202;;;20183:50;20203:21;20226:6;20183:19;:50::i;:::-;20143:202;;;20262:83;20285:21;20328:6;20338;20262:22;:83::i;:::-;20401:9;20396:145;20420:17;20416:1;:21;20396:145;;;20457:84;20480:21;20503:10;-1:-1:-1;;;;;20503:26:10;;20530:1;20503:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20503:29:10;20534:6;20457:22;:84::i;:::-;20439:3;;20396:145;;16388:250;16500:22;-1:-1:-1;;;;;16500:36:10;;16537:7;16500:45;;;;;;;;;;;;;-1:-1:-1;;;;;16500:45:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16561:29:10;;-1:-1:-1;;;;;16561:29:10;;;-1:-1:-1;16561:29:10;;-1:-1:-1;16561:29:10;;;16606:24;;-1:-1:-1;;;;;16606:24:10;;;;;;;;16388:250;;:::o;17187:257::-;17319:22;-1:-1:-1;;;;;17319:39:10;;17359:20;17319:61;;;;;;;;;;;;;-1:-1:-1;;;;;17319:61:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17396:40:10;;-1:-1:-1;;;;;17396:40:10;;;-1:-1:-1;17396:40:10;;-1:-1:-1;17396:40:10;;;17187:257;;:::o;18078:296::-;18231:22;-1:-1:-1;;;;;18231:42:10;;18274:17;18293:7;18231:70;;;;;;;;;;;;;-1:-1:-1;;;;;18231:70:10;;;;;;-1:-1:-1;;;;;18231:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18317:49:10;;-1:-1:-1;;;;;18317:49:10;;;;-1:-1:-1;18317:49:10;;;-1:-1:-1;18317:49:10;;;;;18078:296;;;:::o;16772:260::-;16887:22;-1:-1:-1;;;;;16887:39:10;;16927:7;16887:48;;;;;;;;;;;;;-1:-1:-1;;;;;16887:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16951:31:10;;-1:-1:-1;;;;;16951:31:10;;;-1:-1:-1;16951:31:10;;-1:-1:-1;16951:31:10;;;16998:26;;-1:-1:-1;;;;;16998:26:10;;;;;;;;16772:260;;:::o;17604:265::-;17739:22;-1:-1:-1;;;;;17739:42:10;;17782:20;17739:64;;;;;;;;;;;;;-1:-1:-1;;;;;17739:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17819:42:10;;-1:-1:-1;;;;;17819:42:10;;;-1:-1:-1;17819:42:10;;-1:-1:-1;17819:42:10;;;17604:265;;:::o;18588:304::-;18744:22;-1:-1:-1;;;;;18744:45:10;;18790:17;18809:7;18744:73;;;;;;;;;;;;;-1:-1:-1;;;;;18744:73:10;;;;;;-1:-1:-1;;;;;18744:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18833:51:10;;-1:-1:-1;;;;;18833:51:10;;;;-1:-1:-1;18833:51:10;;;-1:-1:-1;18833:51:10;;;;;18588:304;;;:::o",
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"../utility/TokenHandler.sol\";\r\nimport \"../utility/ContractRegistryClient.sol\";\r\nimport \"./interfaces/IConverter.sol\";\r\nimport \"./interfaces/IConverterFactory.sol\";\r\nimport \"./interfaces/IConverterRegistry.sol\";\r\nimport \"./interfaces/IConverterRegistryData.sol\";\r\nimport \"../token/interfaces/ISmartToken.sol\";\r\n\r\n/**\r\n * @dev The ConverterRegistry maintains a list of all active converters in the Bancor Network.\r\n *\r\n * Since converters can be upgraded and thus their address can change, the registry actually keeps\r\n * converter anchors internally and not the converters themselves.\r\n * The active converter for each anchor can be easily accessed by querying the anchor's owner.\r\n *\r\n * The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller:\r\n * - Anchors - can be used to get all the latest / historical data in the network\r\n * - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc.\r\n * - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool\r\n * tokens), and for each one - all anchors that hold it in their reserves\r\n *\r\n *\r\n * The contract fires events whenever one of the primitives is added to or removed from the registry\r\n *\r\n * The contract is upgradable.\r\n*/\r\ncontract ConverterRegistry is IConverterRegistry, ContractRegistryClient, TokenHandler {\r\n /**\r\n * @dev triggered when a converter anchor is added to the registry\r\n *\r\n * @param _anchor smart token\r\n */\r\n event ConverterAnchorAdded(IConverterAnchor indexed _anchor);\r\n\r\n /**\r\n * @dev triggered when a converter anchor is removed from the registry\r\n *\r\n * @param _anchor smart token\r\n */\r\n event ConverterAnchorRemoved(IConverterAnchor indexed _anchor);\r\n\r\n /**\r\n * @dev triggered when a liquidity pool is added to the registry\r\n *\r\n * @param _liquidityPool liquidity pool\r\n */\r\n event LiquidityPoolAdded(IConverterAnchor indexed _liquidityPool);\r\n\r\n /**\r\n * @dev triggered when a liquidity pool is removed from the registry\r\n *\r\n * @param _liquidityPool liquidity pool\r\n */\r\n event LiquidityPoolRemoved(IConverterAnchor indexed _liquidityPool);\r\n\r\n /**\r\n * @dev triggered when a convertible token is added to the registry\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _smartToken associated smart token\r\n */\r\n event ConvertibleTokenAdded(IERC20Token indexed _convertibleToken, IConverterAnchor indexed _smartToken);\r\n\r\n /**\r\n * @dev triggered when a convertible token is removed from the registry\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _smartToken associated smart token\r\n */\r\n event ConvertibleTokenRemoved(IERC20Token indexed _convertibleToken, IConverterAnchor indexed _smartToken);\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `ConverterAnchorAdded`\r\n */\r\n event SmartTokenAdded(IConverterAnchor indexed _smartToken);\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `ConverterAnchorRemoved`\r\n */\r\n event SmartTokenRemoved(IConverterAnchor indexed _smartToken);\r\n\r\n /**\r\n * @dev initializes a new ConverterRegistry instance\r\n *\r\n * @param _registry address of a contract registry contract\r\n */\r\n constructor(IContractRegistry _registry) ContractRegistryClient(_registry) public {\r\n }\r\n\r\n /**\r\n * @dev creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\r\n *\r\n * @param _type converter type, see ConverterBase contract main doc\r\n * @param _name token / pool name\r\n * @param _symbol token / pool symbol\r\n * @param _decimals token / pool decimals\r\n * @param _maxConversionFee maximum conversion-fee\r\n * @param _reserveTokens reserve tokens\r\n * @param _reserveWeights reserve weights\r\n *\r\n * @return new converter\r\n */\r\n function newConverter(\r\n uint16 _type,\r\n string memory _name,\r\n string memory _symbol,\r\n uint8 _decimals,\r\n uint32 _maxConversionFee,\r\n IERC20Token[] memory _reserveTokens,\r\n uint32[] memory _reserveWeights\r\n )\r\n public virtual returns (IConverter)\r\n {\r\n uint256 length = _reserveTokens.length;\r\n require(length == _reserveWeights.length, \"ERR_INVALID_RESERVES\");\r\n require(getLiquidityPoolByConfig(_type, _reserveTokens, _reserveWeights) == IConverterAnchor(0), \"ERR_ALREADY_EXISTS\");\r\n\r\n IConverterFactory factory = IConverterFactory(addressOf(CONVERTER_FACTORY));\r\n IConverterAnchor anchor = IConverterAnchor(factory.createAnchor(_type, _name, _symbol, _decimals));\r\n IConverter converter = IConverter(factory.createConverter(_type, anchor, registry, _maxConversionFee));\r\n\r\n anchor.acceptOwnership();\r\n converter.acceptOwnership();\r\n\r\n for (uint256 i = 0; i < length; i++)\r\n converter.addReserve(_reserveTokens[i], _reserveWeights[i]);\r\n\r\n anchor.transferOwnership(address(converter));\r\n converter.acceptAnchorOwnership();\r\n converter.transferOwnership(msg.sender);\r\n\r\n addConverterInternal(converter);\r\n return converter;\r\n }\r\n\r\n /**\r\n * @dev adds an existing converter to the registry\r\n * can only be called by the owner\r\n *\r\n * @param _converter converter\r\n */\r\n function addConverter(IConverter _converter) public ownerOnly {\r\n require(isConverterValid(_converter), \"ERR_INVALID_CONVERTER\");\r\n addConverterInternal(_converter);\r\n }\r\n\r\n /**\r\n * @dev removes a converter from the registry\r\n * anyone can remove an existing converter from the registry, as long as the converter is invalid\r\n * note that the owner can also remove valid converters\r\n *\r\n * @param _converter converter\r\n */\r\n function removeConverter(IConverter _converter) public {\r\n require(msg.sender == owner || !isConverterValid(_converter), \"ERR_ACCESS_DENIED\");\r\n removeConverterInternal(_converter);\r\n }\r\n\r\n /**\r\n * @dev returns the number of converter anchors in the registry\r\n *\r\n * @return number of anchors\r\n */\r\n function getAnchorCount() public view override returns (uint256) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getSmartTokenCount();\r\n }\r\n\r\n /**\r\n * @dev returns the list of converter anchors in the registry\r\n *\r\n * @return list of anchors\r\n */\r\n function getAnchors() public view override returns (address[] memory) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getSmartTokens();\r\n }\r\n\r\n /**\r\n * @dev returns the converter anchor at a given index\r\n *\r\n * @param _index index\r\n * @return anchor at the given index\r\n */\r\n function getAnchor(uint256 _index) public view override returns (IConverterAnchor) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getSmartToken(_index);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a converter anchor\r\n *\r\n * @param _value value\r\n * @return true if the given value is an anchor, false if not\r\n */\r\n function isAnchor(address _value) public view override returns (bool) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isSmartToken(_value);\r\n }\r\n\r\n /**\r\n * @dev returns the number of liquidity pools in the registry\r\n *\r\n * @return number of liquidity pools\r\n */\r\n function getLiquidityPoolCount() public view override returns (uint256) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getLiquidityPoolCount();\r\n }\r\n\r\n /**\r\n * @dev returns the list of liquidity pools in the registry\r\n *\r\n * @return list of liquidity pools\r\n */\r\n function getLiquidityPools() public view override returns (address[] memory) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getLiquidityPools();\r\n }\r\n\r\n /**\r\n * @dev returns the liquidity pool at a given index\r\n *\r\n * @param _index index\r\n * @return liquidity pool at the given index\r\n */\r\n function getLiquidityPool(uint256 _index) public view override returns (IConverterAnchor) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getLiquidityPool(_index);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a liquidity pool\r\n *\r\n * @param _value value\r\n * @return true if the given value is a liquidity pool, false if not\r\n */\r\n function isLiquidityPool(address _value) public view override returns (bool) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isLiquidityPool(_value);\r\n }\r\n\r\n /**\r\n * @dev returns the number of convertible tokens in the registry\r\n *\r\n * @return number of convertible tokens\r\n */\r\n function getConvertibleTokenCount() public view override returns (uint256) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenCount();\r\n }\r\n\r\n /**\r\n * @dev returns the list of convertible tokens in the registry\r\n *\r\n * @return list of convertible tokens\r\n */\r\n function getConvertibleTokens() public view override returns (address[] memory) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokens();\r\n }\r\n\r\n /**\r\n * @dev returns the convertible token at a given index\r\n *\r\n * @param _index index\r\n * @return convertible token at the given index\r\n */\r\n function getConvertibleToken(uint256 _index) public view override returns (IERC20Token) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleToken(_index);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a convertible token\r\n *\r\n * @param _value value\r\n * @return true if the given value is a convertible token, false if not\r\n */\r\n function isConvertibleToken(address _value) public view override returns (bool) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isConvertibleToken(_value);\r\n }\r\n\r\n /**\r\n * @dev returns the number of converter anchors associated with a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @return number of anchors associated with the given convertible token\r\n */\r\n function getConvertibleTokenAnchorCount(IERC20Token _convertibleToken) public view override returns (uint256) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenSmartTokenCount(_convertibleToken);\r\n }\r\n\r\n /**\r\n * @dev returns the list of aoncerter anchors associated with a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @return list of anchors associated with the given convertible token\r\n */\r\n function getConvertibleTokenAnchors(IERC20Token _convertibleToken) public view override returns (address[] memory) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenSmartTokens(_convertibleToken);\r\n }\r\n\r\n /**\r\n * @dev returns the converter anchor associated with a given convertible token at a given index\r\n *\r\n * @param _index index\r\n * @return anchor associated with the given convertible token at the given index\r\n */\r\n function getConvertibleTokenAnchor(IERC20Token _convertibleToken, uint256 _index) public view override returns (IConverterAnchor) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenSmartToken(_convertibleToken, _index);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a converter anchor of a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _value value\r\n * @return true if the given value is an anchor of the given convertible token, false if not\r\n */\r\n function isConvertibleTokenAnchor(IERC20Token _convertibleToken, address _value) public view override returns (bool) {\r\n return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isConvertibleTokenSmartToken(_convertibleToken, _value);\r\n }\r\n\r\n /**\r\n * @dev returns a list of converters for a given list of anchors\r\n * this is a utility function that can be used to reduce the number of calls to the contract\r\n *\r\n * @param _anchors list of converter anchors\r\n * @return list of converters\r\n */\r\n function getConvertersByAnchors(address[] memory _anchors) public view returns (IConverter[] memory) {\r\n IConverter[] memory converters = new IConverter[](_anchors.length);\r\n\r\n for (uint256 i = 0; i < _anchors.length; i++)\r\n converters[i] = IConverter(payable(IConverterAnchor(_anchors[i]).owner()));\r\n\r\n return converters;\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given converter is valid\r\n *\r\n * @param _converter converter\r\n * @return true if the given converter is valid, false if not\r\n */\r\n function isConverterValid(IConverter _converter) public view returns (bool) {\r\n // verify that the converter is active\r\n return _converter.token().owner() == address(_converter);\r\n }\r\n\r\n /**\r\n * @dev checks if a liquidity pool with given configuration is already registered\r\n *\r\n * @param _converter converter with specific configuration\r\n * @return if a liquidity pool with the same configuration is already registered\r\n */\r\n function isSimilarLiquidityPoolRegistered(IConverter _converter) public view returns (bool) {\r\n uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n IERC20Token[] memory reserveTokens = new IERC20Token[](reserveTokenCount);\r\n uint32[] memory reserveWeights = new uint32[](reserveTokenCount);\r\n\r\n // get the reserve-configuration of the converter\r\n for (uint256 i = 0; i < reserveTokenCount; i++) {\r\n IERC20Token reserveToken = _converter.connectorTokens(i);\r\n reserveTokens[i] = reserveToken;\r\n reserveWeights[i] = getReserveWeight(_converter, reserveToken);\r\n }\r\n\r\n // return if a liquidity pool with the same configuration is already registered\r\n return getLiquidityPoolByConfig(getConverterType(_converter, reserveTokenCount), reserveTokens, reserveWeights) != IConverterAnchor(0);\r\n }\r\n\r\n /**\r\n * @dev searches for a liquidity pool with specific configuration\r\n *\r\n * @param _type converter type, see ConverterBase contract main doc\r\n * @param _reserveTokens reserve tokens\r\n * @param _reserveWeights reserve weights\r\n * @return the liquidity pool, or zero if no such liquidity pool exists\r\n */\r\n function getLiquidityPoolByConfig(uint16 _type, IERC20Token[] memory _reserveTokens, uint32[] memory _reserveWeights) public view returns (IConverterAnchor) {\r\n // verify that the input parameters represent a valid liquidity pool\r\n if (_reserveTokens.length == _reserveWeights.length && _reserveTokens.length > 1) {\r\n // get the anchors of the least frequent token (optimization)\r\n address[] memory convertibleTokenAnchors = getLeastFrequentTokenAnchors(_reserveTokens);\r\n // search for a converter with the same configuration\r\n for (uint256 i = 0; i < convertibleTokenAnchors.length; i++) {\r\n IConverterAnchor anchor = IConverterAnchor(convertibleTokenAnchors[i]);\r\n IConverter converter = IConverter(payable(anchor.owner()));\r\n if (isConverterReserveConfigEqual(converter, _type, _reserveTokens, _reserveWeights))\r\n return anchor;\r\n }\r\n }\r\n\r\n return IConverterAnchor(0);\r\n }\r\n\r\n /**\r\n * @dev adds a converter anchor to the registry\r\n *\r\n * @param _anchor converter anchor\r\n */\r\n function addAnchor(IConverterRegistryData _converterRegistryData, IConverterAnchor _anchor) internal {\r\n _converterRegistryData.addSmartToken(_anchor);\r\n emit ConverterAnchorAdded(_anchor);\r\n emit SmartTokenAdded(_anchor);\r\n }\r\n\r\n /**\r\n * @dev removes a converter anchor from the registry\r\n *\r\n * @param _anchor converter anchor\r\n */\r\n function removeAnchor(IConverterRegistryData _converterRegistryData, IConverterAnchor _anchor) internal {\r\n _converterRegistryData.removeSmartToken(_anchor);\r\n emit ConverterAnchorRemoved(_anchor);\r\n emit SmartTokenRemoved(_anchor);\r\n }\r\n\r\n /**\r\n * @dev adds a liquidity pool to the registry\r\n *\r\n * @param _liquidityPoolAnchor liquidity pool converter anchor\r\n */\r\n function addLiquidityPool(IConverterRegistryData _converterRegistryData, IConverterAnchor _liquidityPoolAnchor) internal {\r\n _converterRegistryData.addLiquidityPool(_liquidityPoolAnchor);\r\n emit LiquidityPoolAdded(_liquidityPoolAnchor);\r\n }\r\n\r\n /**\r\n * @dev removes a liquidity pool from the registry\r\n *\r\n * @param _liquidityPoolAnchor liquidity pool converter anchor\r\n */\r\n function removeLiquidityPool(IConverterRegistryData _converterRegistryData, IConverterAnchor _liquidityPoolAnchor) internal {\r\n _converterRegistryData.removeLiquidityPool(_liquidityPoolAnchor);\r\n emit LiquidityPoolRemoved(_liquidityPoolAnchor);\r\n }\r\n\r\n /**\r\n * @dev adds a convertible token to the registry\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _anchor associated converter anchor\r\n */\r\n function addConvertibleToken(IConverterRegistryData _converterRegistryData, IERC20Token _convertibleToken, IConverterAnchor _anchor) internal {\r\n _converterRegistryData.addConvertibleToken(_convertibleToken, _anchor);\r\n emit ConvertibleTokenAdded(_convertibleToken, _anchor);\r\n }\r\n\r\n /**\r\n * @dev removes a convertible token from the registry\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _anchor associated converter anchor\r\n */\r\n function removeConvertibleToken(IConverterRegistryData _converterRegistryData, IERC20Token _convertibleToken, IConverterAnchor _anchor) internal {\r\n _converterRegistryData.removeConvertibleToken(_convertibleToken, _anchor);\r\n emit ConvertibleTokenRemoved(_convertibleToken, _anchor);\r\n }\r\n\r\n function addConverterInternal(IConverter _converter) private {\r\n IConverterRegistryData converterRegistryData = IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA));\r\n IConverterAnchor anchor = IConverter(_converter).token();\r\n uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n\r\n // add the converter anchor\r\n addAnchor(converterRegistryData, anchor);\r\n if (reserveTokenCount > 1)\r\n addLiquidityPool(converterRegistryData, anchor);\r\n else\r\n addConvertibleToken(converterRegistryData, ISmartToken(address(anchor)), anchor);\r\n\r\n // add all reserve tokens\r\n for (uint256 i = 0; i < reserveTokenCount; i++)\r\n addConvertibleToken(converterRegistryData, _converter.connectorTokens(i), anchor);\r\n }\r\n\r\n function removeConverterInternal(IConverter _converter) private {\r\n IConverterRegistryData converterRegistryData = IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA));\r\n IConverterAnchor anchor = IConverter(_converter).token();\r\n uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n\r\n // remove the converter anchor\r\n removeAnchor(converterRegistryData, anchor);\r\n if (reserveTokenCount > 1)\r\n removeLiquidityPool(converterRegistryData, anchor);\r\n else\r\n removeConvertibleToken(converterRegistryData, ISmartToken(address(anchor)), anchor);\r\n\r\n // remove all reserve tokens\r\n for (uint256 i = 0; i < reserveTokenCount; i++)\r\n removeConvertibleToken(converterRegistryData, _converter.connectorTokens(i), anchor);\r\n }\r\n\r\n function getLeastFrequentTokenAnchors(IERC20Token[] memory _reserveTokens) private view returns (address[] memory) {\r\n IConverterRegistryData converterRegistryData = IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA));\r\n uint256 minAnchorCount = converterRegistryData.getConvertibleTokenSmartTokenCount(_reserveTokens[0]);\r\n uint256 index = 0;\r\n\r\n // find the reserve token which has the smallest number of converter anchors\r\n for (uint256 i = 1; i < _reserveTokens.length; i++) {\r\n uint256 convertibleTokenAnchorCount = converterRegistryData.getConvertibleTokenSmartTokenCount(_reserveTokens[i]);\r\n if (minAnchorCount > convertibleTokenAnchorCount) {\r\n minAnchorCount = convertibleTokenAnchorCount;\r\n index = i;\r\n }\r\n }\r\n\r\n return converterRegistryData.getConvertibleTokenSmartTokens(_reserveTokens[index]);\r\n }\r\n\r\n function isConverterReserveConfigEqual(IConverter _converter, uint16 _type, IERC20Token[] memory _reserveTokens, uint32[] memory _reserveWeights) private view returns (bool) {\r\n uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n\r\n if (_type != getConverterType(_converter, reserveTokenCount))\r\n return false;\r\n\r\n if (_reserveTokens.length != reserveTokenCount)\r\n return false;\r\n\r\n for (uint256 i = 0; i < _reserveTokens.length; i++) {\r\n if (_reserveWeights[i] != getReserveWeight(_converter, _reserveTokens[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // utility to get the reserve weight (including from older converters that don't support the new getReserveWeight function)\r\n function getReserveWeight(IConverter _converter, IERC20Token _reserveToken) private view returns (uint32) {\r\n (, uint32 weight,,,) = _converter.connectors(_reserveToken);\r\n return weight;\r\n }\r\n\r\n bytes4 private constant CONVERTER_TYPE_FUNC_SELECTOR = bytes4(keccak256(\"converterType()\"));\r\n\r\n // utility to get the converter type (including from older converters that don't support the new converterType function)\r\n function getConverterType(IConverter _converter, uint256 _reserveTokenCount) private view returns (uint16) {\r\n (bool success, bytes memory returnData) = address(_converter).staticcall(abi.encodeWithSelector(CONVERTER_TYPE_FUNC_SELECTOR));\r\n if (success && returnData.length == 32) \r\n return abi.decode(returnData, (uint16));\r\n return _reserveTokenCount > 1 ? 1 : 0;\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getAnchorCount`\r\n */\r\n function getSmartTokenCount() public view returns (uint256) {\r\n return getAnchorCount();\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getAnchors`\r\n */\r\n function getSmartTokens() public view returns (address[] memory) {\r\n return getAnchors();\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getAnchor`\r\n */\r\n function getSmartToken(uint256 _index) public view returns (IConverterAnchor) {\r\n return getAnchor(_index);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `isAnchor`\r\n */\r\n function isSmartToken(address _value) public view returns (bool) {\r\n return isAnchor(_value);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`\r\n */\r\n function getConvertibleTokenSmartTokenCount(IERC20Token _convertibleToken) public view returns (uint256) {\r\n return getConvertibleTokenAnchorCount(_convertibleToken);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getConvertibleTokenAnchors`\r\n */\r\n function getConvertibleTokenSmartTokens(IERC20Token _convertibleToken) public view returns (address[] memory) {\r\n return getConvertibleTokenAnchors(_convertibleToken);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getConvertibleTokenAnchor`\r\n */\r\n function getConvertibleTokenSmartToken(IERC20Token _convertibleToken, uint256 _index) public view returns (IConverterAnchor) {\r\n return getConvertibleTokenAnchor(_convertibleToken, _index);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `isConvertibleTokenAnchor`\r\n */\r\n function isConvertibleTokenSmartToken(IERC20Token _convertibleToken, address _value) public view returns (bool) {\r\n return isConvertibleTokenAnchor(_convertibleToken, _value);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getConvertersByAnchors`\r\n */\r\n function getConvertersBySmartTokens(address[] memory _smartTokens) public view returns (IConverter[] memory) {\r\n return getConvertersByAnchors(_smartTokens);\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility, use `getLiquidityPoolByConfig`\r\n */\r\n function getLiquidityPoolByReserveConfig(IERC20Token[] memory _reserveTokens, uint32[] memory _reserveWeights) public view returns (IConverterAnchor) {\r\n return getLiquidityPoolByConfig(_reserveTokens.length > 1 ? 1 : 0, _reserveTokens, _reserveWeights);\r\n }\r\n}\r\n",
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
"exportedSymbols": {
"ConverterRegistry": [
11667
]
},
"id": 11668,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 10246,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:10"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol",
"file": "../utility/TokenHandler.sol",
"id": 10247,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 22527,
"src": "77:37:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"file": "../utility/ContractRegistryClient.sol",
"id": 10248,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 21720,
"src": "116:47:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
"file": "./interfaces/IConverter.sol",
"id": 10249,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13341,
"src": "165:37:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol",
"file": "./interfaces/IConverterFactory.sol",
"id": 10250,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13390,
"src": "204:44:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol",
"file": "./interfaces/IConverterRegistry.sol",
"id": 10251,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13502,
"src": "250:45:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol",
"file": "./interfaces/IConverterRegistryData.sol",
"id": 10252,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13648,
"src": "297:49:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol",
"file": "../token/interfaces/ISmartToken.sol",
"id": 10253,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 21183,
"src": "348:45:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 10255,
"name": "IConverterRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13501,
"src": "1444:18:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistry_$13501",
"typeString": "contract IConverterRegistry"
}
},
"id": 10256,
"nodeType": "InheritanceSpecifier",
"src": "1444:18:10"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 10257,
"name": "ContractRegistryClient",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21719,
"src": "1464:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
"typeString": "contract ContractRegistryClient"
}
},
"id": 10258,
"nodeType": "InheritanceSpecifier",
"src": "1464:22:10"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 10259,
"name": "TokenHandler",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22526,
"src": "1488:12:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TokenHandler_$22526",
"typeString": "contract TokenHandler"
}
},
"id": 10260,
"nodeType": "InheritanceSpecifier",
"src": "1488:12:10"
}
],
"contractDependencies": [
13501,
21719,
21818,
22526,
22661,
22847
],
"contractKind": "contract",
"documentation": {
"id": 10254,
"nodeType": "StructuredDocumentation",
"src": "397:1015:10",
"text": " @dev The ConverterRegistry maintains a list of all active converters in the Bancor Network.\n Since converters can be upgraded and thus their address can change, the registry actually keeps\n converter anchors internally and not the converters themselves.\n The active converter for each anchor can be easily accessed by querying the anchor's owner.\n The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller:\n - Anchors - can be used to get all the latest / historical data in the network\n - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc.\n - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool\n tokens), and for each one - all anchors that hold it in their reserves\n The contract fires events whenever one of the primitives is added to or removed from the registry\n The contract is upgradable."
},
"fullyImplemented": true,
"id": 11667,
"linearizedBaseContracts": [
11667,
22526,
21719,
22661,
21818,
22847,
13501
],
"name": "ConverterRegistry",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 10261,
"nodeType": "StructuredDocumentation",
"src": "1508:129:10",
"text": " @dev triggered when a converter anchor is added to the registry\n @param _anchor smart token"
},
"id": 10265,
"name": "ConverterAnchorAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10264,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10263,
"indexed": true,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10265,
"src": "1670:32:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10262,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1670:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1669:34:10"
},
"src": "1643:61:10"
},
{
"anonymous": false,
"documentation": {
"id": 10266,
"nodeType": "StructuredDocumentation",
"src": "1712:133:10",
"text": " @dev triggered when a converter anchor is removed from the registry\n @param _anchor smart token"
},
"id": 10270,
"name": "ConverterAnchorRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10269,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10268,
"indexed": true,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10270,
"src": "1880:32:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10267,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1880:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1879:34:10"
},
"src": "1851:63:10"
},
{
"anonymous": false,
"documentation": {
"id": 10271,
"nodeType": "StructuredDocumentation",
"src": "1922:137:10",
"text": " @dev triggered when a liquidity pool is added to the registry\n @param _liquidityPool liquidity pool"
},
"id": 10275,
"name": "LiquidityPoolAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10273,
"indexed": true,
"mutability": "mutable",
"name": "_liquidityPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10275,
"src": "2090:39:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10272,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2090:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2089:41:10"
},
"src": "2065:66:10"
},
{
"anonymous": false,
"documentation": {
"id": 10276,
"nodeType": "StructuredDocumentation",
"src": "2139:141:10",
"text": " @dev triggered when a liquidity pool is removed from the registry\n @param _liquidityPool liquidity pool"
},
"id": 10280,
"name": "LiquidityPoolRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10279,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10278,
"indexed": true,
"mutability": "mutable",
"name": "_liquidityPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10280,
"src": "2313:39:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10277,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2313:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2312:41:10"
},
"src": "2286:68:10"
},
{
"anonymous": false,
"documentation": {
"id": 10281,
"nodeType": "StructuredDocumentation",
"src": "2362:197:10",
"text": " @dev triggered when a convertible token is added to the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
},
"id": 10287,
"name": "ConvertibleTokenAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10286,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10283,
"indexed": true,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10287,
"src": "2593:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10282,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "2593:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10285,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10287,
"src": "2632:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10284,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2632:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2592:77:10"
},
"src": "2565:105:10"
},
{
"anonymous": false,
"documentation": {
"id": 10288,
"nodeType": "StructuredDocumentation",
"src": "2678:201:10",
"text": " @dev triggered when a convertible token is removed from the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
},
"id": 10294,
"name": "ConvertibleTokenRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10293,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10290,
"indexed": true,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10294,
"src": "2915:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10289,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "2915:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10292,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10294,
"src": "2954:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10291,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2954:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2914:77:10"
},
"src": "2885:107:10"
},
{
"anonymous": false,
"documentation": {
"id": 10295,
"nodeType": "StructuredDocumentation",
"src": "3000:88:10",
"text": " @dev deprecated, backward compatibility, use `ConverterAnchorAdded`"
},
"id": 10299,
"name": "SmartTokenAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10298,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10297,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10299,
"src": "3116:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10296,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "3116:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3115:38:10"
},
"src": "3094:60:10"
},
{
"anonymous": false,
"documentation": {
"id": 10300,
"nodeType": "StructuredDocumentation",
"src": "3162:90:10",
"text": " @dev deprecated, backward compatibility, use `ConverterAnchorRemoved`"
},
"id": 10304,
"name": "SmartTokenRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10303,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10302,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10304,
"src": "3282:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10301,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "3282:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3281:38:10"
},
"src": "3258:62:10"
},
{
"body": {
"id": 10313,
"nodeType": "Block",
"src": "3561:8:10",
"statements": []
},
"documentation": {
"id": 10305,
"nodeType": "StructuredDocumentation",
"src": "3328:145:10",
"text": " @dev initializes a new ConverterRegistry instance\n @param _registry address of a contract registry contract"
},
"id": 10314,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 10310,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10307,
"src": "3543:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"id": 10311,
"modifierName": {
"argumentTypes": null,
"id": 10309,
"name": "ContractRegistryClient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21719,
"src": "3520:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
"typeString": "type(contract ContractRegistryClient)"
}
},
"nodeType": "ModifierInvocation",
"src": "3520:33:10"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10308,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10307,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10314,
"src": "3491:27:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 10306,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "3491:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3490:29:10"
},
"returnParameters": {
"id": 10312,
"nodeType": "ParameterList",
"parameters": [],
"src": "3561:0:10"
},
"scope": 11667,
"src": "3479:90:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10453,
"nodeType": "Block",
"src": "4488:991:10",
"statements": [
{
"assignments": [
10337
],
"declarations": [
{
"constant": false,
"id": 10337,
"mutability": "mutable",
"name": "length",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4499:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10336,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4499:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10340,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10338,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10328,
"src": "4516:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4516:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4499:38:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10342,
"name": "length",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10337,
"src": "4556:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10343,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10331,
"src": "4566:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10344,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4566:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4556:32:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f5245534552564553",
"id": 10346,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4590:22:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
"typeString": "literal_string \"ERR_INVALID_RESERVES\""
},
"value": "ERR_INVALID_RESERVES"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
"typeString": "literal_string \"ERR_INVALID_RESERVES\""
}
],
"id": 10341,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4548:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10347,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4548:65:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10348,
"nodeType": "ExpressionStatement",
"src": "4548:65:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"id": 10358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10351,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10317,
"src": "4657:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10352,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10328,
"src": "4664:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 10353,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10331,
"src": "4680:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 10350,
"name": "getLiquidityPoolByConfig",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11031,
"src": "4632:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
}
},
"id": 10354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4632:64:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 10356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4717:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 10355,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "4700:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10357,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4700:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"src": "4632:87:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f414c52454144595f455849535453",
"id": 10359,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4721:20:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
"typeString": "literal_string \"ERR_ALREADY_EXISTS\""
},
"value": "ERR_ALREADY_EXISTS"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
"typeString": "literal_string \"ERR_ALREADY_EXISTS\""
}
],
"id": 10349,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4624:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10360,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4624:118:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10361,
"nodeType": "ExpressionStatement",
"src": "4624:118:10"
},
{
"assignments": [
10363
],
"declarations": [
{
"constant": false,
"id": 10363,
"mutability": "mutable",
"name": "factory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4755:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
},
"typeName": {
"contractScope": null,
"id": 10362,
"name": "IConverterFactory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13389,
"src": "4755:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10369,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10366,
"name": "CONVERTER_FACTORY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21536,
"src": "4811:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10365,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "4801:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4801:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10364,
"name": "IConverterFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13389,
"src": "4783:17:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterFactory_$13389_$",
"typeString": "type(contract IConverterFactory)"
}
},
"id": 10368,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4783:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4755:75:10"
},
{
"assignments": [
10371
],
"declarations": [
{
"constant": false,
"id": 10371,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4841:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10370,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "4841:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10381,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10375,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10317,
"src": "4905:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10376,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10319,
"src": "4912:5:10",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 10377,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10321,
"src": "4919:7:10",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 10378,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10323,
"src": "4928:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"id": 10373,
"name": "factory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10363,
"src": "4884:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"id": 10374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createAnchor",
"nodeType": "MemberAccess",
"referencedDeclaration": 13368,
"src": "4884:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,string memory,string memory,uint8) external returns (contract IConverterAnchor)"
}
},
"id": 10379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4884:54:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 10372,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "4867:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4867:72:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4841:98:10"
},
{
"assignments": [
10383
],
"declarations": [
{
"constant": false,
"id": 10383,
"mutability": "mutable",
"name": "converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4950:20:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10382,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "4950:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10393,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10387,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10317,
"src": "5008:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10388,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10371,
"src": "5015:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
{
"argumentTypes": null,
"id": 10389,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "5023:8:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
{
"argumentTypes": null,
"id": 10390,
"name": "_maxConversionFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10325,
"src": "5033:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"expression": {
"argumentTypes": null,
"id": 10385,
"name": "factory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10363,
"src": "4984:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"id": 10386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createConverter",
"nodeType": "MemberAccess",
"referencedDeclaration": 13381,
"src": "4984:23:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_contract$_IConverterAnchor_$13349_$_t_contract$_IContractRegistry_$22831_$_t_uint32_$returns$_t_contract$_IConverter_$13340_$",
"typeString": "function (uint16,contract IConverterAnchor,contract IContractRegistry,uint32) external returns (contract IConverter)"
}
},
"id": 10391,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4984:67:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10384,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "4973:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 10392,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4973:79:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4950:102:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10394,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10371,
"src": "5065:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "acceptOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22846,
"src": "5065:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
"typeString": "function () external"
}
},
"id": 10397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5065:24:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10398,
"nodeType": "ExpressionStatement",
"src": "5065:24:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10399,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5100:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "acceptOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22846,
"src": "5100:25:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
"typeString": "function () external"
}
},
"id": 10402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5100:27:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10403,
"nodeType": "ExpressionStatement",
"src": "5100:27:10"
},
{
"body": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10417,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10328,
"src": "5211:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10419,
"indexExpression": {
"argumentTypes": null,
"id": 10418,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5226:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5211:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10420,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10331,
"src": "5230:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10422,
"indexExpression": {
"argumentTypes": null,
"id": 10421,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5246:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5230:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"expression": {
"argumentTypes": null,
"id": 10414,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5190:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10416,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addReserve",
"nodeType": "MemberAccess",
"referencedDeclaration": 13292,
"src": "5190:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
"typeString": "function (contract IERC20Token,uint32) external"
}
},
"id": 10423,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5190:59:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10424,
"nodeType": "ExpressionStatement",
"src": "5190:59:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10410,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10408,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5160:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 10409,
"name": "length",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10337,
"src": "5164:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5160:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10425,
"initializationExpression": {
"assignments": [
10405
],
"declarations": [
{
"constant": false,
"id": 10405,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10425,
"src": "5145:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10404,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5145:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10407,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10406,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5157:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "5145:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10412,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "5172:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10411,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5172:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10413,
"nodeType": "ExpressionStatement",
"src": "5172:3:10"
},
"nodeType": "ForStatement",
"src": "5140:109:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10431,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5295:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10430,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5287:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 10429,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5287:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 10432,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5287:18:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"expression": {
"argumentTypes": null,
"id": 10426,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10371,
"src": "5262:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22843,
"src": "5262:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
"typeString": "function (address) external"
}
},
"id": 10433,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5262:44:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10434,
"nodeType": "ExpressionStatement",
"src": "5262:44:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10435,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5317:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10437,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "acceptAnchorOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 13261,
"src": "5317:31:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
"typeString": "function () external"
}
},
"id": 10438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5317:33:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10439,
"nodeType": "ExpressionStatement",
"src": "5317:33:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10443,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "5389:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 10444,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5389:10:10",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"expression": {
"argumentTypes": null,
"id": 10440,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5361:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10442,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22843,
"src": "5361:27:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
"typeString": "function (address) external"
}
},
"id": 10445,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5361:39:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10446,
"nodeType": "ExpressionStatement",
"src": "5361:39:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10448,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5434:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10447,
"name": "addConverterInternal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11234,
"src": "5413:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
"typeString": "function (contract IConverter)"
}
},
"id": 10449,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5413:31:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10450,
"nodeType": "ExpressionStatement",
"src": "5413:31:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10451,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5462:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"functionReturnParameters": 10335,
"id": 10452,
"nodeType": "Return",
"src": "5455:16:10"
}
]
},
"documentation": {
"id": 10315,
"nodeType": "StructuredDocumentation",
"src": "3577:596:10",
"text": " @dev creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\n @param _type converter type, see ConverterBase contract main doc\n @param _name token / pool name\n @param _symbol token / pool symbol\n @param _decimals token / pool decimals\n @param _maxConversionFee maximum conversion-fee\n @param _reserveTokens reserve tokens\n @param _reserveWeights reserve weights\n @return new converter"
},
"functionSelector": "5a0a6618",
"id": 10454,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "newConverter",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10332,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10317,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4211:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 10316,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "4211:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10319,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4234:19:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 10318,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4234:6:10",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10321,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4264:21:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 10320,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4264:6:10",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10323,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4296:15:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 10322,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4296:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10325,
"mutability": "mutable",
"name": "_maxConversionFee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4322:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 10324,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4322:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10328,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4357:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10326,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "4357:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10327,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4357:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10331,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4403:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 10329,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4403:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10330,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4403:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4200:241:10"
},
"returnParameters": {
"id": 10335,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10334,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4471:10:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10333,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "4471:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4470:12:10"
},
"scope": 11667,
"src": "4179:1300:10",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 10473,
"nodeType": "Block",
"src": "5710:124:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10464,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10457,
"src": "5746:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10463,
"name": "isConverterValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10867,
"src": "5729:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
"typeString": "function (contract IConverter) view returns (bool)"
}
},
"id": 10465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5729:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f434f4e564552544552",
"id": 10466,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5759:23:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
"typeString": "literal_string \"ERR_INVALID_CONVERTER\""
},
"value": "ERR_INVALID_CONVERTER"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
"typeString": "literal_string \"ERR_INVALID_CONVERTER\""
}
],
"id": 10462,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5721:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5721:62:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10468,
"nodeType": "ExpressionStatement",
"src": "5721:62:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10470,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10457,
"src": "5815:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10469,
"name": "addConverterInternal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11234,
"src": "5794:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
"typeString": "function (contract IConverter)"
}
},
"id": 10471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5794:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10472,
"nodeType": "ExpressionStatement",
"src": "5794:32:10"
}
]
},
"documentation": {
"id": 10455,
"nodeType": "StructuredDocumentation",
"src": "5487:155:10",
"text": " @dev adds an existing converter to the registry\n can only be called by the owner\n @param _converter converter"
},
"functionSelector": "6ce1c4dc",
"id": 10474,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 10460,
"modifierName": {
"argumentTypes": null,
"id": 10459,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "5700:9:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "5700:9:10"
}
],
"name": "addConverter",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10458,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10457,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10474,
"src": "5670:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10456,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "5670:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5669:23:10"
},
"returnParameters": {
"id": 10461,
"nodeType": "ParameterList",
"parameters": [],
"src": "5710:0:10"
},
"scope": 11667,
"src": "5648:186:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10497,
"nodeType": "Block",
"src": "6178:147:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 10489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 10484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10481,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "6197:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 10482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6197:10:10",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 10483,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21728,
"src": "6211:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6197:19:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"id": 10488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "6220:29:10",
"subExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10486,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10477,
"src": "6238:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10485,
"name": "isConverterValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10867,
"src": "6221:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
"typeString": "function (contract IConverter) view returns (bool)"
}
},
"id": 10487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6221:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "6197:52:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4143434553535f44454e494544",
"id": 10490,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6251:19:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
},
"value": "ERR_ACCESS_DENIED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
}
],
"id": 10480,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6189:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10491,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6189:82:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10492,
"nodeType": "ExpressionStatement",
"src": "6189:82:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10494,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10477,
"src": "6306:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10493,
"name": "removeConverterInternal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11307,
"src": "6282:23:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
"typeString": "function (contract IConverter)"
}
},
"id": 10495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6282:35:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10496,
"nodeType": "ExpressionStatement",
"src": "6282:35:10"
}
]
},
"documentation": {
"id": 10475,
"nodeType": "StructuredDocumentation",
"src": "5842:275:10",
"text": " @dev removes a converter from the registry\n anyone can remove an existing converter from the registry, as long as the converter is invalid\n note that the owner can also remove valid converters\n @param _converter converter"
},
"functionSelector": "9e76a007",
"id": 10498,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeConverter",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10478,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10477,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10498,
"src": "6148:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10476,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "6148:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6147:23:10"
},
"returnParameters": {
"id": 10479,
"nodeType": "ParameterList",
"parameters": [],
"src": "6178:0:10"
},
"scope": 11667,
"src": "6123:202:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13397
],
"body": {
"id": 10513,
"nodeType": "Block",
"src": "6529:105:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10507,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "6580:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10506,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "6570:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6570:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10505,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "6547:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10509,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6547:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10510,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13543,
"src": "6547:77:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 10511,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6547:79:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10504,
"id": 10512,
"nodeType": "Return",
"src": "6540:86:10"
}
]
},
"documentation": {
"id": 10499,
"nodeType": "StructuredDocumentation",
"src": "6333:125:10",
"text": " @dev returns the number of converter anchors in the registry\n @return number of anchors"
},
"functionSelector": "d3182bed",
"id": 10514,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAnchorCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10501,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6502:8:10"
},
"parameters": {
"id": 10500,
"nodeType": "ParameterList",
"parameters": [],
"src": "6487:2:10"
},
"returnParameters": {
"id": 10504,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10503,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10514,
"src": "6520:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10502,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6520:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6519:9:10"
},
"scope": 11667,
"src": "6464:170:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13403
],
"body": {
"id": 10530,
"nodeType": "Block",
"src": "6839:101:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10524,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "6890:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10523,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "6880:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10525,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6880:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10522,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "6857:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6857:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSmartTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13549,
"src": "6857:73:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view external returns (address[] memory)"
}
},
"id": 10528,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6857:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10521,
"id": 10529,
"nodeType": "Return",
"src": "6850:82:10"
}
]
},
"documentation": {
"id": 10515,
"nodeType": "StructuredDocumentation",
"src": "6642:121:10",
"text": " @dev returns the list of converter anchors in the registry\n @return list of anchors"
},
"functionSelector": "effb3c6e",
"id": 10531,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAnchors",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10517,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6803:8:10"
},
"parameters": {
"id": 10516,
"nodeType": "ParameterList",
"parameters": [],
"src": "6788:2:10"
},
"returnParameters": {
"id": 10521,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10520,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10531,
"src": "6821:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10518,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6821:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10519,
"length": null,
"nodeType": "ArrayTypeName",
"src": "6821:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6820:18:10"
},
"scope": 11667,
"src": "6769:171:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13410
],
"body": {
"id": 10549,
"nodeType": "Block",
"src": "7189:106:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10546,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10534,
"src": "7280:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10542,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "7240:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10541,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "7230:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7230:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10540,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "7207:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7207:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10545,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13556,
"src": "7207:72:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint256) view external returns (contract IConverterAnchor)"
}
},
"id": 10547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7207:80:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10539,
"id": 10548,
"nodeType": "Return",
"src": "7200:87:10"
}
]
},
"documentation": {
"id": 10532,
"nodeType": "StructuredDocumentation",
"src": "6948:152:10",
"text": " @dev returns the converter anchor at a given index\n @param _index index\n @return anchor at the given index"
},
"functionSelector": "4c7df18f",
"id": 10550,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10536,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7153:8:10"
},
"parameters": {
"id": 10535,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10534,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10550,
"src": "7125:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10533,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7125:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7124:16:10"
},
"returnParameters": {
"id": 10539,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10538,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10550,
"src": "7171:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10537,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "7171:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7170:18:10"
},
"scope": 11667,
"src": "7106:189:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13417
],
"body": {
"id": 10568,
"nodeType": "Block",
"src": "7568:105:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10565,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10553,
"src": "7658:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10561,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "7619:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10560,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "7609:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7609:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10559,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "7586:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10563,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7586:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13563,
"src": "7586:71:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 10566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7586:79:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10558,
"id": 10567,
"nodeType": "Return",
"src": "7579:86:10"
}
]
},
"documentation": {
"id": 10551,
"nodeType": "StructuredDocumentation",
"src": "7303:189:10",
"text": " @dev checks whether or not a given value is a converter anchor\n @param _value value\n @return true if the given value is an anchor, false if not"
},
"functionSelector": "d8cced2a",
"id": 10569,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10555,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7544:8:10"
},
"parameters": {
"id": 10554,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10553,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10569,
"src": "7516:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7516:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7515:16:10"
},
"returnParameters": {
"id": 10558,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10557,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10569,
"src": "7562:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10556,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7562:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7561:6:10"
},
"scope": 11667,
"src": "7498:175:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13422
],
"body": {
"id": 10584,
"nodeType": "Block",
"src": "7890:108:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10578,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "7941:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10577,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "7931:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10579,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7931:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10576,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "7908:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7908:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10581,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidityPoolCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13568,
"src": "7908:80:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 10582,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7908:82:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10575,
"id": 10583,
"nodeType": "Return",
"src": "7901:89:10"
}
]
},
"documentation": {
"id": 10570,
"nodeType": "StructuredDocumentation",
"src": "7681:131:10",
"text": " @dev returns the number of liquidity pools in the registry\n @return number of liquidity pools"
},
"functionSelector": "7a5f0ffd",
"id": 10585,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10572,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7863:8:10"
},
"parameters": {
"id": 10571,
"nodeType": "ParameterList",
"parameters": [],
"src": "7848:2:10"
},
"returnParameters": {
"id": 10575,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10574,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10585,
"src": "7881:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10573,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7881:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7880:9:10"
},
"scope": 11667,
"src": "7818:180:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13428
],
"body": {
"id": 10601,
"nodeType": "Block",
"src": "8216:104:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10595,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "8267:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10594,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "8257:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8257:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10593,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "8234:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8234:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10598,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidityPools",
"nodeType": "MemberAccess",
"referencedDeclaration": 13574,
"src": "8234:76:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view external returns (address[] memory)"
}
},
"id": 10599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8234:78:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10592,
"id": 10600,
"nodeType": "Return",
"src": "8227:85:10"
}
]
},
"documentation": {
"id": 10586,
"nodeType": "StructuredDocumentation",
"src": "8006:127:10",
"text": " @dev returns the list of liquidity pools in the registry\n @return list of liquidity pools"
},
"functionSelector": "7f45c4c3",
"id": 10602,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPools",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10588,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8180:8:10"
},
"parameters": {
"id": 10587,
"nodeType": "ParameterList",
"parameters": [],
"src": "8165:2:10"
},
"returnParameters": {
"id": 10592,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10591,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10602,
"src": "8198:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10589,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8198:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10590,
"length": null,
"nodeType": "ArrayTypeName",
"src": "8198:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8197:18:10"
},
"scope": 11667,
"src": "8139:181:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13435
],
"body": {
"id": 10620,
"nodeType": "Block",
"src": "8582:109:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10617,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10605,
"src": "8676:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10613,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "8633:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10612,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "8623:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8623:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10611,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "8600:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8600:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13581,
"src": "8600:75:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint256) view external returns (contract IConverterAnchor)"
}
},
"id": 10618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8600:83:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10610,
"id": 10619,
"nodeType": "Return",
"src": "8593:90:10"
}
]
},
"documentation": {
"id": 10603,
"nodeType": "StructuredDocumentation",
"src": "8328:158:10",
"text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index"
},
"functionSelector": "a74498aa",
"id": 10621,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10607,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8546:8:10"
},
"parameters": {
"id": 10606,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10605,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10621,
"src": "8518:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10604,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8518:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8517:16:10"
},
"returnParameters": {
"id": 10610,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10609,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10621,
"src": "8564:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10608,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "8564:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8563:18:10"
},
"scope": 11667,
"src": "8492:199:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13442
],
"body": {
"id": 10639,
"nodeType": "Block",
"src": "8976:108:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10636,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10624,
"src": "9069:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10632,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "9027:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10631,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "9017:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10633,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9017:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10630,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "8994:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8994:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10635,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13588,
"src": "8994:74:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 10637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8994:82:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10629,
"id": 10638,
"nodeType": "Return",
"src": "8987:89:10"
}
]
},
"documentation": {
"id": 10622,
"nodeType": "StructuredDocumentation",
"src": "8699:194:10",
"text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not"
},
"functionSelector": "e85455d7",
"id": 10640,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10626,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8952:8:10"
},
"parameters": {
"id": 10625,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10624,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10640,
"src": "8924:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10623,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8924:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8923:16:10"
},
"returnParameters": {
"id": 10629,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10628,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10640,
"src": "8970:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10627,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "8970:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8969:6:10"
},
"scope": 11667,
"src": "8899:185:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13447
],
"body": {
"id": 10655,
"nodeType": "Block",
"src": "9310:111:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10649,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "9361:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10648,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "9351:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9351:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10647,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "9328:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9328:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10652,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13593,
"src": "9328:83:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 10653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9328:85:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10646,
"id": 10654,
"nodeType": "Return",
"src": "9321:92:10"
}
]
},
"documentation": {
"id": 10641,
"nodeType": "StructuredDocumentation",
"src": "9092:137:10",
"text": " @dev returns the number of convertible tokens in the registry\n @return number of convertible tokens"
},
"functionSelector": "69be4784",
"id": 10656,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10643,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9283:8:10"
},
"parameters": {
"id": 10642,
"nodeType": "ParameterList",
"parameters": [],
"src": "9268:2:10"
},
"returnParameters": {
"id": 10646,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10645,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10656,
"src": "9301:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10644,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9301:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9300:9:10"
},
"scope": 11667,
"src": "9235:186:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13453
],
"body": {
"id": 10672,
"nodeType": "Block",
"src": "9648:107:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10666,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "9699:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10665,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "9689:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9689:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10664,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "9666:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9666:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10669,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13599,
"src": "9666:79:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view external returns (address[] memory)"
}
},
"id": 10670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9666:81:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10663,
"id": 10671,
"nodeType": "Return",
"src": "9659:88:10"
}
]
},
"documentation": {
"id": 10657,
"nodeType": "StructuredDocumentation",
"src": "9429:133:10",
"text": " @dev returns the list of convertible tokens in the registry\n @return list of convertible tokens"
},
"functionSelector": "5f1b50fe",
"id": 10673,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10659,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9612:8:10"
},
"parameters": {
"id": 10658,
"nodeType": "ParameterList",
"parameters": [],
"src": "9597:2:10"
},
"returnParameters": {
"id": 10663,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10662,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10673,
"src": "9630:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10660,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9630:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10661,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9630:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9629:18:10"
},
"scope": 11667,
"src": "9568:187:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13460
],
"body": {
"id": 10691,
"nodeType": "Block",
"src": "10021:112:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10688,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10676,
"src": "10118:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10684,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "10072:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10683,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "10062:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10062:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10682,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "10039:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10686,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10039:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10687,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13606,
"src": "10039:78:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 10689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10039:86:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"functionReturnParameters": 10681,
"id": 10690,
"nodeType": "Return",
"src": "10032:93:10"
}
]
},
"documentation": {
"id": 10674,
"nodeType": "StructuredDocumentation",
"src": "9763:164:10",
"text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index"
},
"functionSelector": "865cf194",
"id": 10692,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10678,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9990:8:10"
},
"parameters": {
"id": 10677,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10676,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10692,
"src": "9962:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10675,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9962:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9961:16:10"
},
"returnParameters": {
"id": 10681,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10680,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10692,
"src": "10008:11:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10679,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "10008:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10007:13:10"
},
"scope": 11667,
"src": "9933:200:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13467
],
"body": {
"id": 10710,
"nodeType": "Block",
"src": "10427:111:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10707,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10695,
"src": "10523:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10703,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "10478:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10702,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "10468:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10704,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10468:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10701,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "10445:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10705,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10445:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10706,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13613,
"src": "10445:77:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 10708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10445:85:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10700,
"id": 10709,
"nodeType": "Return",
"src": "10438:92:10"
}
]
},
"documentation": {
"id": 10693,
"nodeType": "StructuredDocumentation",
"src": "10141:200:10",
"text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not"
},
"functionSelector": "3ab8857c",
"id": 10711,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10697,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "10403:8:10"
},
"parameters": {
"id": 10696,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10695,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10711,
"src": "10375:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10694,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10375:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10374:16:10"
},
"returnParameters": {
"id": 10700,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10699,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10711,
"src": "10421:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10698,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "10421:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10420:6:10"
},
"scope": 11667,
"src": "10347:191:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13474
],
"body": {
"id": 10729,
"nodeType": "Block",
"src": "10909:138:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10726,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10714,
"src": "11021:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10722,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "10960:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10721,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "10950:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10723,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10950:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10720,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "10927:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10927:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10725,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13620,
"src": "10927:93:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view external returns (uint256)"
}
},
"id": 10727,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10927:112:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10719,
"id": 10728,
"nodeType": "Return",
"src": "10920:119:10"
}
]
},
"documentation": {
"id": 10712,
"nodeType": "StructuredDocumentation",
"src": "10546:247:10",
"text": " @dev returns the number of converter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of anchors associated with the given convertible token"
},
"functionSelector": "49c5f32b",
"id": 10730,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenAnchorCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10716,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "10882:8:10"
},
"parameters": {
"id": 10715,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10714,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10730,
"src": "10839:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10713,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "10839:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10838:31:10"
},
"returnParameters": {
"id": 10719,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10718,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10730,
"src": "10900:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10717,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10900:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10899:9:10"
},
"scope": 11667,
"src": "10799:248:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13482
],
"body": {
"id": 10749,
"nodeType": "Block",
"src": "11419:134:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10746,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10733,
"src": "11527:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10742,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "11470:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10741,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "11460:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10743,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11460:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10740,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "11437:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10744,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11437:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13628,
"src": "11437:89:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token) view external returns (address[] memory)"
}
},
"id": 10747,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11437:108:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10739,
"id": 10748,
"nodeType": "Return",
"src": "11430:115:10"
}
]
},
"documentation": {
"id": 10731,
"nodeType": "StructuredDocumentation",
"src": "11055:243:10",
"text": " @dev returns the list of aoncerter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of anchors associated with the given convertible token"
},
"functionSelector": "11839064",
"id": 10750,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenAnchors",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10735,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "11383:8:10"
},
"parameters": {
"id": 10734,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10733,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10750,
"src": "11340:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10732,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "11340:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11339:31:10"
},
"returnParameters": {
"id": 10739,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10738,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10750,
"src": "11401:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10736,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11401:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10737,
"length": null,
"nodeType": "ArrayTypeName",
"src": "11401:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11400:18:10"
},
"scope": 11667,
"src": "11304:249:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13491
],
"body": {
"id": 10771,
"nodeType": "Block",
"src": "11935:141:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10767,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10753,
"src": "12042:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 10768,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10755,
"src": "12061:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10763,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "11986:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10762,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "11976:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11976:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10761,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "11953:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11953:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10766,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13637,
"src": "11953:88:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (contract IERC20Token,uint256) view external returns (contract IConverterAnchor)"
}
},
"id": 10769,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11953:115:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10760,
"id": 10770,
"nodeType": "Return",
"src": "11946:122:10"
}
]
},
"documentation": {
"id": 10751,
"nodeType": "StructuredDocumentation",
"src": "11561:238:10",
"text": " @dev returns the converter anchor associated with a given convertible token at a given index\n @param _index index\n @return anchor associated with the given convertible token at the given index"
},
"functionSelector": "603f51e4",
"id": 10772,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10757,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "11899:8:10"
},
"parameters": {
"id": 10756,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10753,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10772,
"src": "11840:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10752,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "11840:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10755,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10772,
"src": "11871:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10754,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11871:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11839:47:10"
},
"returnParameters": {
"id": 10760,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10759,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10772,
"src": "11917:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10758,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "11917:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11916:18:10"
},
"scope": 11667,
"src": "11805:271:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13500
],
"body": {
"id": 10793,
"nodeType": "Block",
"src": "12508:140:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10789,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10775,
"src": "12614:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 10790,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10777,
"src": "12633:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10785,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "12559:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10784,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "12549:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10786,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12549:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10783,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "12526:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10787,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12526:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10788,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isConvertibleTokenSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13646,
"src": "12526:87:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
"typeString": "function (contract IERC20Token,address) view external returns (bool)"
}
},
"id": 10791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12526:114:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10782,
"id": 10792,
"nodeType": "Return",
"src": "12519:121:10"
}
]
},
"documentation": {
"id": 10773,
"nodeType": "StructuredDocumentation",
"src": "12084:301:10",
"text": " @dev checks whether or not a given value is a converter anchor of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is an anchor of the given convertible token, false if not"
},
"functionSelector": "b4c4197a",
"id": 10794,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleTokenAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10779,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "12484:8:10"
},
"parameters": {
"id": 10778,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10775,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10794,
"src": "12425:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10774,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "12425:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10777,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10794,
"src": "12456:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10776,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12456:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12424:47:10"
},
"returnParameters": {
"id": 10782,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10781,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10794,
"src": "12502:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10780,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12502:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12501:6:10"
},
"scope": 11667,
"src": "12391:257:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10846,
"nodeType": "Block",
"src": "13040:261:10",
"statements": [
{
"assignments": [
10807
],
"declarations": [
{
"constant": false,
"id": 10807,
"mutability": "mutable",
"name": "converters",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10846,
"src": "13051:30:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10805,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13051:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10806,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13051:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10814,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10811,
"name": "_anchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10798,
"src": "13101:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10812,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "13101:15:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10810,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "13084:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
"typeString": "function (uint256) pure returns (contract IConverter[] memory)"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10808,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13088:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10809,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13088:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
}
},
"id": 10813,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13084:33:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "13051:66:10"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 10841,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10826,
"name": "converters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10807,
"src": "13189:10:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"id": 10828,
"indexExpression": {
"argumentTypes": null,
"id": 10827,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13200:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "13189:13:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10833,
"name": "_anchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10798,
"src": "13241:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10835,
"indexExpression": {
"argumentTypes": null,
"id": 10834,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13250:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "13241:11:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10832,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "13224:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10836,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13224:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 22838,
"src": "13224:35:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 10838,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13224:37:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10831,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "13216:8:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_payable_$",
"typeString": "type(address payable)"
},
"typeName": {
"id": 10830,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13216:8:10",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 10839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13216:46:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 10829,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "13205:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 10840,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13205:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"src": "13189:74:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10842,
"nodeType": "ExpressionStatement",
"src": "13189:74:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10822,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10819,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13150:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10820,
"name": "_anchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10798,
"src": "13154:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "13154:15:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "13150:19:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10843,
"initializationExpression": {
"assignments": [
10816
],
"declarations": [
{
"constant": false,
"id": 10816,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10843,
"src": "13135:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10815,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13135:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10818,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10817,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "13147:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "13135:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10824,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "13171:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10823,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13171:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10825,
"nodeType": "ExpressionStatement",
"src": "13171:3:10"
},
"nodeType": "ForStatement",
"src": "13130:133:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10844,
"name": "converters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10807,
"src": "13283:10:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"functionReturnParameters": 10803,
"id": 10845,
"nodeType": "Return",
"src": "13276:17:10"
}
]
},
"documentation": {
"id": 10795,
"nodeType": "StructuredDocumentation",
"src": "12656:277:10",
"text": " @dev returns a list of converters for a given list of anchors\n this is a utility function that can be used to reduce the number of calls to the contract\n @param _anchors list of converter anchors\n @return list of converters"
},
"functionSelector": "610c0b05",
"id": 10847,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertersByAnchors",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10799,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10798,
"mutability": "mutable",
"name": "_anchors",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10847,
"src": "12971:25:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10796,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12971:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10797,
"length": null,
"nodeType": "ArrayTypeName",
"src": "12971:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12970:27:10"
},
"returnParameters": {
"id": 10803,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10802,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10847,
"src": "13019:19:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10800,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13019:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10801,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13019:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13018:21:10"
},
"scope": 11667,
"src": "12939:362:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10866,
"nodeType": "Block",
"src": "13579:123:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 10864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10855,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10850,
"src": "13645:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "token",
"nodeType": "MemberAccess",
"referencedDeclaration": 13297,
"src": "13645:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function () view external returns (contract IConverterAnchor)"
}
},
"id": 10857,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13645:18:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 22838,
"src": "13645:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 10859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13645:26:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10862,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10850,
"src": "13683:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "13675:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 10860,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13675:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 10863,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13675:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "13645:49:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10854,
"id": 10865,
"nodeType": "Return",
"src": "13638:56:10"
}
]
},
"documentation": {
"id": 10848,
"nodeType": "StructuredDocumentation",
"src": "13309:188:10",
"text": " @dev checks whether or not a given converter is valid\n @param _converter converter\n @return true if the given converter is valid, false if not"
},
"functionSelector": "954254f5",
"id": 10867,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConverterValid",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10851,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10850,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10867,
"src": "13529:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10849,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13529:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13528:23:10"
},
"returnParameters": {
"id": 10854,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10853,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10867,
"src": "13573:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10852,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "13573:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13572:6:10"
},
"scope": 11667,
"src": "13503:199:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10949,
"nodeType": "Block",
"src": "14068:799:10",
"statements": [
{
"assignments": [
10876
],
"declarations": [
{
"constant": false,
"id": 10876,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10949,
"src": "14079:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10875,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14079:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10880,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10877,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14107:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "14107:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 10879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14107:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14079:60:10"
},
{
"assignments": [
10884
],
"declarations": [
{
"constant": false,
"id": 10884,
"mutability": "mutable",
"name": "reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10949,
"src": "14150:34:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10882,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "14150:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10883,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14150:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10890,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10888,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14205:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10887,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "14187:17:10",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$",
"typeString": "function (uint256) pure returns (contract IERC20Token[] memory)"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10885,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "14191:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10886,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14191:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
}
},
"id": 10889,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14187:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14150:73:10"
},
{
"assignments": [
10895
],
"declarations": [
{
"constant": false,
"id": 10895,
"mutability": "mutable",
"name": "reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10949,
"src": "14234:30:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 10893,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "14234:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10894,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14234:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10901,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10899,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14280:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10898,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "14267:12:10",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$",
"typeString": "function (uint256) pure returns (uint32[] memory)"
},
"typeName": {
"baseType": {
"id": 10896,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "14271:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10897,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14271:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
}
},
"id": 10900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14267:31:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14234:64:10"
},
{
"body": {
"id": 10934,
"nodeType": "Block",
"src": "14418:206:10",
"statements": [
{
"assignments": [
10913
],
"declarations": [
{
"constant": false,
"id": 10913,
"mutability": "mutable",
"name": "reserveToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10934,
"src": "14433:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10912,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "14433:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10918,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10916,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14487:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 10914,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14460:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13334,
"src": "14460:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 10917,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14460:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14433:56:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10923,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10919,
"name": "reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10884,
"src": "14504:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10921,
"indexExpression": {
"argumentTypes": null,
"id": 10920,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14518:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "14504:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 10922,
"name": "reserveToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10913,
"src": "14523:12:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"src": "14504:31:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10924,
"nodeType": "ExpressionStatement",
"src": "14504:31:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10925,
"name": "reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10895,
"src": "14550:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10927,
"indexExpression": {
"argumentTypes": null,
"id": 10926,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14565:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "14550:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10929,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14587:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 10930,
"name": "reserveToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10913,
"src": "14599:12:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 10928,
"name": "getReserveWeight",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11465,
"src": "14570:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
"typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
}
},
"id": 10931,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14570:42:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "14550:62:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10933,
"nodeType": "ExpressionStatement",
"src": "14550:62:10"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10908,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10906,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14390:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 10907,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14394:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "14390:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10935,
"initializationExpression": {
"assignments": [
10903
],
"declarations": [
{
"constant": false,
"id": 10903,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10935,
"src": "14375:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10902,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14375:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10905,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10904,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14387:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "14375:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14413:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10909,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14413:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10911,
"nodeType": "ExpressionStatement",
"src": "14413:3:10"
},
"nodeType": "ForStatement",
"src": "14370:254:10"
},
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"id": 10947,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10938,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14774:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 10939,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14786:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10937,
"name": "getConverterType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11520,
"src": "14757:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
"typeString": "function (contract IConverter,uint256) view returns (uint16)"
}
},
"id": 10940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14757:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10941,
"name": "reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10884,
"src": "14806:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 10942,
"name": "reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10895,
"src": "14821:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 10936,
"name": "getLiquidityPoolByConfig",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11031,
"src": "14732:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
}
},
"id": 10943,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14732:104:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 10945,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14857:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 10944,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "14840:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10946,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14840:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"src": "14732:127:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10874,
"id": 10948,
"nodeType": "Return",
"src": "14725:134:10"
}
]
},
"documentation": {
"id": 10868,
"nodeType": "StructuredDocumentation",
"src": "13710:260:10",
"text": " @dev checks if a liquidity pool with given configuration is already registered\n @param _converter converter with specific configuration\n @return if a liquidity pool with the same configuration is already registered"
},
"functionSelector": "8f1d0e1a",
"id": 10950,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isSimilarLiquidityPoolRegistered",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10871,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10870,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10950,
"src": "14018:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10869,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "14018:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14017:23:10"
},
"returnParameters": {
"id": 10874,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10873,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10950,
"src": "14062:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10872,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "14062:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14061:6:10"
},
"scope": 11667,
"src": "13976:891:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11030,
"nodeType": "Block",
"src": "15390:869:10",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 10973,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10964,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "15483:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10965,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15483:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10966,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10959,
"src": "15508:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15508:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "15483:47:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10972,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10969,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "15534:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15534:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 10971,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15558:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "15534:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "15483:76:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11025,
"nodeType": "IfStatement",
"src": "15479:734:10",
"trueBody": {
"id": 11024,
"nodeType": "Block",
"src": "15561:652:10",
"statements": [
{
"assignments": [
10978
],
"declarations": [
{
"constant": false,
"id": 10978,
"mutability": "mutable",
"name": "convertibleTokenAnchors",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11024,
"src": "15651:40:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10976,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15651:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10977,
"length": null,
"nodeType": "ArrayTypeName",
"src": "15651:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10982,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10980,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "15723:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
],
"id": 10979,
"name": "getLeastFrequentTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11380,
"src": "15694:28:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token[] memory) view returns (address[] memory)"
}
},
"id": 10981,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "15694:44:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15651:87:10"
},
{
"body": {
"id": 11022,
"nodeType": "Block",
"src": "15881:321:10",
"statements": [
{
"assignments": [
10995
],
"declarations": [
{
"constant": false,
"id": 10995,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11022,
"src": "15900:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10994,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "15900:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11001,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10997,
"name": "convertibleTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10978,
"src": "15943:23:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10999,
"indexExpression": {
"argumentTypes": null,
"id": 10998,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10984,
"src": "15967:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "15943:26:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10996,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "15926:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 11000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "15926:44:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15900:70:10"
},
{
"assignments": [
11003
],
"declarations": [
{
"constant": false,
"id": 11003,
"mutability": "mutable",
"name": "converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11022,
"src": "15989:20:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11002,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "15989:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11012,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11007,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10995,
"src": "16031:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 11008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 22838,
"src": "16031:12:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 11009,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16031:14:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11006,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "16023:8:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_payable_$",
"typeString": "type(address payable)"
},
"typeName": {
"id": 11005,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16023:8:10",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11010,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16023:23:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 11004,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "16012:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 11011,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16012:35:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15989:58:10"
},
{
"condition": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11014,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11003,
"src": "16100:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 11015,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10953,
"src": "16111:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 11016,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "16118:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 11017,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10959,
"src": "16134:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 11013,
"name": "isConverterReserveConfigEqual",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11446,
"src": "16070:29:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_bool_$",
"typeString": "function (contract IConverter,uint16,contract IERC20Token[] memory,uint32[] memory) view returns (bool)"
}
},
"id": 11018,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16070:80:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11021,
"nodeType": "IfStatement",
"src": "16066:120:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 11019,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10995,
"src": "16180:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10963,
"id": 11020,
"nodeType": "Return",
"src": "16173:13:10"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10987,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10984,
"src": "15840:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10988,
"name": "convertibleTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10978,
"src": "15844:23:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15844:30:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "15840:34:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11023,
"initializationExpression": {
"assignments": [
10984
],
"declarations": [
{
"constant": false,
"id": 10984,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11023,
"src": "15825:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10983,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15825:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10986,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10985,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15837:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "15825:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10992,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "15876:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10991,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10984,
"src": "15876:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10993,
"nodeType": "ExpressionStatement",
"src": "15876:3:10"
},
"nodeType": "ForStatement",
"src": "15820:382:10"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 11027,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "16249:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 11026,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "16232:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 11028,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16232:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10963,
"id": 11029,
"nodeType": "Return",
"src": "16225:26:10"
}
]
},
"documentation": {
"id": 10951,
"nodeType": "StructuredDocumentation",
"src": "14875:352:10",
"text": " @dev searches for a liquidity pool with specific configuration\n @param _type converter type, see ConverterBase contract main doc\n @param _reserveTokens reserve tokens\n @param _reserveWeights reserve weights\n @return the liquidity pool, or zero if no such liquidity pool exists"
},
"functionSelector": "1d3fccd5",
"id": 11031,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolByConfig",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10960,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10953,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15267:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 10952,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "15267:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10956,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15281:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10954,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "15281:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10955,
"length": null,
"nodeType": "ArrayTypeName",
"src": "15281:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10959,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15318:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 10957,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "15318:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10958,
"length": null,
"nodeType": "ArrayTypeName",
"src": "15318:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15266:84:10"
},
"returnParameters": {
"id": 10963,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10962,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15372:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10961,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "15372:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15371:18:10"
},
"scope": 11667,
"src": "15233:1026:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11053,
"nodeType": "Block",
"src": "16489:149:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11042,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11036,
"src": "16537:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11039,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11034,
"src": "16500:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11041,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13509,
"src": "16500:36:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16500:45:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11044,
"nodeType": "ExpressionStatement",
"src": "16500:45:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11046,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11036,
"src": "16582:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11045,
"name": "ConverterAnchorAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10265,
"src": "16561:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16561:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11048,
"nodeType": "EmitStatement",
"src": "16556:34:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11050,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11036,
"src": "16622:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11049,
"name": "SmartTokenAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10299,
"src": "16606:15:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11051,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16606:24:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11052,
"nodeType": "EmitStatement",
"src": "16601:29:10"
}
]
},
"documentation": {
"id": 11032,
"nodeType": "StructuredDocumentation",
"src": "16267:115:10",
"text": " @dev adds a converter anchor to the registry\n @param _anchor converter anchor"
},
"id": 11054,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addAnchor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11037,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11034,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11054,
"src": "16407:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11033,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "16407:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11036,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11054,
"src": "16454:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11035,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "16454:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16406:73:10"
},
"returnParameters": {
"id": 11038,
"nodeType": "ParameterList",
"parameters": [],
"src": "16489:0:10"
},
"scope": 11667,
"src": "16388:250:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11076,
"nodeType": "Block",
"src": "16876:156:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11065,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11059,
"src": "16927:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11062,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11057,
"src": "16887:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "removeSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13514,
"src": "16887:39:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11066,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16887:48:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11067,
"nodeType": "ExpressionStatement",
"src": "16887:48:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11069,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11059,
"src": "16974:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11068,
"name": "ConverterAnchorRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10270,
"src": "16951:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11070,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16951:31:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11071,
"nodeType": "EmitStatement",
"src": "16946:36:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11073,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11059,
"src": "17016:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11072,
"name": "SmartTokenRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10304,
"src": "16998:17:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16998:26:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11075,
"nodeType": "EmitStatement",
"src": "16993:31:10"
}
]
},
"documentation": {
"id": 11055,
"nodeType": "StructuredDocumentation",
"src": "16646:120:10",
"text": " @dev removes a converter anchor from the registry\n @param _anchor converter anchor"
},
"id": 11077,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeAnchor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11060,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11057,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11077,
"src": "16794:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11056,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "16794:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11059,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11077,
"src": "16841:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11058,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "16841:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16793:73:10"
},
"returnParameters": {
"id": 11061,
"nodeType": "ParameterList",
"parameters": [],
"src": "16876:0:10"
},
"scope": 11667,
"src": "16772:260:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11095,
"nodeType": "Block",
"src": "17308:136:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11088,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11082,
"src": "17359:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11085,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11080,
"src": "17319:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11087,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13519,
"src": "17319:39:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11089,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17319:61:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11090,
"nodeType": "ExpressionStatement",
"src": "17319:61:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11092,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11082,
"src": "17415:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11091,
"name": "LiquidityPoolAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10275,
"src": "17396:18:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17396:40:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11094,
"nodeType": "EmitStatement",
"src": "17391:45:10"
}
]
},
"documentation": {
"id": 11078,
"nodeType": "StructuredDocumentation",
"src": "17040:141:10",
"text": " @dev adds a liquidity pool to the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
},
"id": 11096,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11083,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11080,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11096,
"src": "17213:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11079,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "17213:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11082,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11096,
"src": "17260:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11081,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "17260:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17212:86:10"
},
"returnParameters": {
"id": 11084,
"nodeType": "ParameterList",
"parameters": [],
"src": "17308:0:10"
},
"scope": 11667,
"src": "17187:257:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11114,
"nodeType": "Block",
"src": "17728:141:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11107,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11101,
"src": "17782:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11104,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11099,
"src": "17739:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "removeLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13524,
"src": "17739:42:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17739:64:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11109,
"nodeType": "ExpressionStatement",
"src": "17739:64:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11111,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11101,
"src": "17840:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11110,
"name": "LiquidityPoolRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10280,
"src": "17819:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11112,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17819:42:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11113,
"nodeType": "EmitStatement",
"src": "17814:47:10"
}
]
},
"documentation": {
"id": 11097,
"nodeType": "StructuredDocumentation",
"src": "17452:146:10",
"text": " @dev removes a liquidity pool from the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
},
"id": 11115,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11099,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11115,
"src": "17633:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11098,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "17633:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11101,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11115,
"src": "17680:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11100,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "17680:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17632:86:10"
},
"returnParameters": {
"id": 11103,
"nodeType": "ParameterList",
"parameters": [],
"src": "17728:0:10"
},
"scope": 11667,
"src": "17604:265:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11137,
"nodeType": "Block",
"src": "18220:154:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11128,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11120,
"src": "18274:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11129,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11122,
"src": "18293:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11125,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11118,
"src": "18231:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13531,
"src": "18231:42:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
}
},
"id": 11130,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18231:70:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11131,
"nodeType": "ExpressionStatement",
"src": "18231:70:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11133,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11120,
"src": "18339:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11134,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11122,
"src": "18358:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11132,
"name": "ConvertibleTokenAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10287,
"src": "18317:21:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18317:49:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11136,
"nodeType": "EmitStatement",
"src": "18312:54:10"
}
]
},
"documentation": {
"id": 11116,
"nodeType": "StructuredDocumentation",
"src": "17877:195:10",
"text": " @dev adds a convertible token to the registry\n @param _convertibleToken convertible token\n @param _anchor associated converter anchor"
},
"id": 11138,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11123,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11118,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11138,
"src": "18107:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11117,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "18107:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11120,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11138,
"src": "18154:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11119,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "18154:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11122,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11138,
"src": "18185:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11121,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "18185:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18106:104:10"
},
"returnParameters": {
"id": 11124,
"nodeType": "ParameterList",
"parameters": [],
"src": "18220:0:10"
},
"scope": 11667,
"src": "18078:296:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11160,
"nodeType": "Block",
"src": "18733:159:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11151,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11143,
"src": "18790:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11152,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11145,
"src": "18809:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11148,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11141,
"src": "18744:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "removeConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13538,
"src": "18744:45:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
}
},
"id": 11153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18744:73:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11154,
"nodeType": "ExpressionStatement",
"src": "18744:73:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11156,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11143,
"src": "18857:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11157,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11145,
"src": "18876:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11155,
"name": "ConvertibleTokenRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10294,
"src": "18833:23:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18833:51:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11159,
"nodeType": "EmitStatement",
"src": "18828:56:10"
}
]
},
"documentation": {
"id": 11139,
"nodeType": "StructuredDocumentation",
"src": "18382:200:10",
"text": " @dev removes a convertible token from the registry\n @param _convertibleToken convertible token\n @param _anchor associated converter anchor"
},
"id": 11161,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11146,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11141,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11161,
"src": "18620:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11140,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "18620:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11143,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11161,
"src": "18667:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11142,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "18667:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11145,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11161,
"src": "18698:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11144,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "18698:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18619:104:10"
},
"returnParameters": {
"id": 11147,
"nodeType": "ParameterList",
"parameters": [],
"src": "18733:0:10"
},
"scope": 11667,
"src": "18588:304:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11233,
"nodeType": "Block",
"src": "18961:749:10",
"statements": [
{
"assignments": [
11167
],
"declarations": [
{
"constant": false,
"id": 11167,
"mutability": "mutable",
"name": "converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11233,
"src": "18972:44:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11166,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "18972:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11173,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11170,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "19052:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11169,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "19042:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 11171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19042:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11168,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "19019:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 11172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19019:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "18972:105:10"
},
{
"assignments": [
11175
],
"declarations": [
{
"constant": false,
"id": 11175,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11233,
"src": "19088:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11174,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "19088:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11181,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11177,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11163,
"src": "19125:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 11176,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "19114:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 11178,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19114:22:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "token",
"nodeType": "MemberAccess",
"referencedDeclaration": 13297,
"src": "19114:28:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function () view external returns (contract IConverterAnchor)"
}
},
"id": 11180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19114:30:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19088:56:10"
},
{
"assignments": [
11183
],
"declarations": [
{
"constant": false,
"id": 11183,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11233,
"src": "19155:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11182,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19155:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11187,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11184,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11163,
"src": "19183:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "19183:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 11186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19183:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19155:60:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11189,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19275:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11190,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19298:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11188,
"name": "addAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11054,
"src": "19265:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11191,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19265:40:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11192,
"nodeType": "ExpressionStatement",
"src": "19265:40:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11193,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11183,
"src": "19320:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11194,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19340:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "19320:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11202,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19452:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11206,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19495:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11205,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "19487:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11204,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19487:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11207,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19487:15:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11203,
"name": "ISmartToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21182,
"src": "19475:11:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
"typeString": "type(contract ISmartToken)"
}
},
"id": 11208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19475:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
}
},
{
"argumentTypes": null,
"id": 11209,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19505:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11201,
"name": "addConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11138,
"src": "19432:19:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19432:80:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11211,
"nodeType": "ExpressionStatement",
"src": "19432:80:10"
},
"id": 11212,
"nodeType": "IfStatement",
"src": "19316:196:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11197,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19373:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11198,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19396:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11196,
"name": "addLiquidityPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11096,
"src": "19356:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19356:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11200,
"nodeType": "ExpressionStatement",
"src": "19356:47:10"
}
},
{
"body": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11224,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19641:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11227,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11214,
"src": "19691:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 11225,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11163,
"src": "19664:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13334,
"src": "19664:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 11228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19664:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11229,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19695:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11223,
"name": "addConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11138,
"src": "19621:19:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19621:81:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11231,
"nodeType": "ExpressionStatement",
"src": "19621:81:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11217,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11214,
"src": "19580:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 11218,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11183,
"src": "19584:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "19580:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11232,
"initializationExpression": {
"assignments": [
11214
],
"declarations": [
{
"constant": false,
"id": 11214,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11232,
"src": "19565:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11213,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19565:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11216,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11215,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19577:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "19565:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "19603:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11220,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11214,
"src": "19603:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11222,
"nodeType": "ExpressionStatement",
"src": "19603:3:10"
},
"nodeType": "ForStatement",
"src": "19560:142:10"
}
]
},
"documentation": null,
"id": 11234,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addConverterInternal",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11164,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11163,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11234,
"src": "18930:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11162,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "18930:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18929:23:10"
},
"returnParameters": {
"id": 11165,
"nodeType": "ParameterList",
"parameters": [],
"src": "18961:0:10"
},
"scope": 11667,
"src": "18900:810:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11306,
"nodeType": "Block",
"src": "19782:767:10",
"statements": [
{
"assignments": [
11240
],
"declarations": [
{
"constant": false,
"id": 11240,
"mutability": "mutable",
"name": "converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11306,
"src": "19793:44:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11239,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "19793:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11246,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11243,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "19873:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11242,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "19863:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 11244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19863:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11241,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "19840:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 11245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19840:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19793:105:10"
},
{
"assignments": [
11248
],
"declarations": [
{
"constant": false,
"id": 11248,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11306,
"src": "19909:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11247,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "19909:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11254,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11250,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11236,
"src": "19946:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 11249,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "19935:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 11251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19935:22:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "token",
"nodeType": "MemberAccess",
"referencedDeclaration": 13297,
"src": "19935:28:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function () view external returns (contract IConverterAnchor)"
}
},
"id": 11253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19935:30:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19909:56:10"
},
{
"assignments": [
11256
],
"declarations": [
{
"constant": false,
"id": 11256,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11306,
"src": "19976:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11255,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19976:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11260,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11257,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11236,
"src": "20004:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "20004:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 11259,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20004:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19976:60:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11262,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20102:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11263,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20125:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11261,
"name": "removeAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11077,
"src": "20089:12:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20089:43:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11265,
"nodeType": "ExpressionStatement",
"src": "20089:43:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11266,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11256,
"src": "20147:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11267,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20167:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "20147:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11275,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20285:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11279,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20328:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11278,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "20320:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11277,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20320:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20320:15:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11276,
"name": "ISmartToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21182,
"src": "20308:11:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
"typeString": "type(contract ISmartToken)"
}
},
"id": 11281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20308:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
}
},
{
"argumentTypes": null,
"id": 11282,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20338:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11274,
"name": "removeConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11161,
"src": "20262:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11283,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20262:83:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11284,
"nodeType": "ExpressionStatement",
"src": "20262:83:10"
},
"id": 11285,
"nodeType": "IfStatement",
"src": "20143:202:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11270,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20203:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11271,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20226:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11269,
"name": "removeLiquidityPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11115,
"src": "20183:19:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20183:50:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11273,
"nodeType": "ExpressionStatement",
"src": "20183:50:10"
}
},
{
"body": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11297,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20480:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11300,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11287,
"src": "20530:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 11298,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11236,
"src": "20503:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13334,
"src": "20503:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 11301,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20503:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11302,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20534:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11296,
"name": "removeConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11161,
"src": "20457:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11303,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20457:84:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11304,
"nodeType": "ExpressionStatement",
"src": "20457:84:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11290,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11287,
"src": "20416:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 11291,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11256,
"src": "20420:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "20416:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11305,
"initializationExpression": {
"assignments": [
11287
],
"declarations": [
{
"constant": false,
"id": 11287,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11305,
"src": "20401:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11286,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20401:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11289,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11288,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20413:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "20401:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11294,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "20439:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11293,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11287,
"src": "20439:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11295,
"nodeType": "ExpressionStatement",
"src": "20439:3:10"
},
"nodeType": "ForStatement",
"src": "20396:145:10"
}
]
},
"documentation": null,
"id": 11307,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeConverterInternal",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11237,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11236,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11307,
"src": "19751:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11235,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "19751:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "19750:23:10"
},
"returnParameters": {
"id": 11238,
"nodeType": "ParameterList",
"parameters": [],
"src": "19782:0:10"
},
"scope": 11667,
"src": "19718:831:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11379,
"nodeType": "Block",
"src": "20672:819:10",
"statements": [
{
"assignments": [
11317
],
"declarations": [
{
"constant": false,
"id": 11317,
"mutability": "mutable",
"name": "converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11379,
"src": "20683:44:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11316,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "20683:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11323,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11320,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "20763:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11319,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "20753:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 11321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20753:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11318,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "20730:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 11322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20730:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "20683:105:10"
},
{
"assignments": [
11325
],
"declarations": [
{
"constant": false,
"id": 11325,
"mutability": "mutable",
"name": "minAnchorCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11379,
"src": "20799:22:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11324,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20799:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11332,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11328,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "20881:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11330,
"indexExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11329,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20896:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "20881:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11326,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11317,
"src": "20824:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13620,
"src": "20824:56:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view external returns (uint256)"
}
},
"id": 11331,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20824:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "20799:100:10"
},
{
"assignments": [
11334
],
"declarations": [
{
"constant": false,
"id": 11334,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11379,
"src": "20910:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11333,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20910:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11336,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11335,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20926:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "20910:17:10"
},
{
"body": {
"id": 11370,
"nodeType": "Block",
"src": "21078:311:10",
"statements": [
{
"assignments": [
11349
],
"declarations": [
{
"constant": false,
"id": 11349,
"mutability": "mutable",
"name": "convertibleTokenAnchorCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11370,
"src": "21093:35:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11348,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21093:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11356,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11352,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "21188:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11354,
"indexExpression": {
"argumentTypes": null,
"id": 11353,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21203:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "21188:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11350,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11317,
"src": "21131:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11351,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13620,
"src": "21131:56:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view external returns (uint256)"
}
},
"id": 11355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21131:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21093:113:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11359,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11357,
"name": "minAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11325,
"src": "21225:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 11358,
"name": "convertibleTokenAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11349,
"src": "21242:27:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21225:44:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11369,
"nodeType": "IfStatement",
"src": "21221:157:10",
"trueBody": {
"id": 11368,
"nodeType": "Block",
"src": "21271:107:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 11362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 11360,
"name": "minAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11325,
"src": "21290:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 11361,
"name": "convertibleTokenAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11349,
"src": "21307:27:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21290:44:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11363,
"nodeType": "ExpressionStatement",
"src": "21290:44:10"
},
{
"expression": {
"argumentTypes": null,
"id": 11366,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 11364,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11334,
"src": "21353:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 11365,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21361:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21353:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11367,
"nodeType": "ExpressionStatement",
"src": "21353:9:10"
}
]
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11344,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11341,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21046:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11342,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "21050:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "21050:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21046:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11371,
"initializationExpression": {
"assignments": [
11338
],
"declarations": [
{
"constant": false,
"id": 11338,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11371,
"src": "21031:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11337,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21031:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11340,
"initialValue": {
"argumentTypes": null,
"hexValue": "31",
"id": 11339,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21043:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"nodeType": "VariableDeclarationStatement",
"src": "21031:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "21073:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11345,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21073:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11347,
"nodeType": "ExpressionStatement",
"src": "21073:3:10"
},
"nodeType": "ForStatement",
"src": "21026:363:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11374,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "21461:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11376,
"indexExpression": {
"argumentTypes": null,
"id": 11375,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11334,
"src": "21476:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "21461:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11372,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11317,
"src": "21408:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11373,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13628,
"src": "21408:52:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token) view external returns (address[] memory)"
}
},
"id": 11377,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21408:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 11315,
"id": 11378,
"nodeType": "Return",
"src": "21401:82:10"
}
]
},
"documentation": null,
"id": 11380,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLeastFrequentTokenAnchors",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11311,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11310,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11380,
"src": "20595:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11308,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "20595:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 11309,
"length": null,
"nodeType": "ArrayTypeName",
"src": "20595:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20594:37:10"
},
"returnParameters": {
"id": 11315,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11314,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11380,
"src": "20654:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11312,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20654:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11313,
"length": null,
"nodeType": "ArrayTypeName",
"src": "20654:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20653:18:10"
},
"scope": 11667,
"src": "20557:934:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11445,
"nodeType": "Block",
"src": "21673:484:10",
"statements": [
{
"assignments": [
11396
],
"declarations": [
{
"constant": false,
"id": 11396,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11445,
"src": "21684:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11395,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21684:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11400,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11397,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11382,
"src": "21712:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "21712:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 11399,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21712:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21684:60:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"id": 11406,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11401,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11384,
"src": "21761:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11403,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11382,
"src": "21787:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 11404,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11396,
"src": "21799:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 11402,
"name": "getConverterType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11520,
"src": "21770:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
"typeString": "function (contract IConverter,uint256) view returns (uint16)"
}
},
"id": 11405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21770:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"src": "21761:56:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11409,
"nodeType": "IfStatement",
"src": "21757:87:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 11407,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21839:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 11394,
"id": 11408,
"nodeType": "Return",
"src": "21832:12:10"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11413,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11410,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11387,
"src": "21861:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "21861:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 11412,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11396,
"src": "21886:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21861:42:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11416,
"nodeType": "IfStatement",
"src": "21857:73:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 11414,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21925:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 11394,
"id": 11415,
"nodeType": "Return",
"src": "21918:12:10"
}
},
{
"body": {
"id": 11441,
"nodeType": "Block",
"src": "21995:131:10",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 11437,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11428,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11390,
"src": "22014:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 11430,
"indexExpression": {
"argumentTypes": null,
"id": 11429,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "22030:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "22014:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11432,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11382,
"src": "22053:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11433,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11387,
"src": "22065:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11435,
"indexExpression": {
"argumentTypes": null,
"id": 11434,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "22080:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "22065:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11431,
"name": "getReserveWeight",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11465,
"src": "22036:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
"typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
}
},
"id": 11436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22036:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "22014:69:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11440,
"nodeType": "IfStatement",
"src": "22010:104:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 11438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22109:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 11394,
"id": 11439,
"nodeType": "Return",
"src": "22102:12:10"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11424,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11421,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "21963:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11422,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11387,
"src": "21967:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11423,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "21967:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21963:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11442,
"initializationExpression": {
"assignments": [
11418
],
"declarations": [
{
"constant": false,
"id": 11418,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11442,
"src": "21948:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11417,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21948:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11420,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11419,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21960:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "21948:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11426,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "21990:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11425,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "21990:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11427,
"nodeType": "ExpressionStatement",
"src": "21990:3:10"
},
"nodeType": "ForStatement",
"src": "21943:183:10"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 11443,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22145:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 11394,
"id": 11444,
"nodeType": "Return",
"src": "22138:11:10"
}
]
},
"documentation": null,
"id": 11446,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConverterReserveConfigEqual",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11391,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11382,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21538:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11381,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "21538:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11384,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21561:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 11383,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "21561:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11387,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21575:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11385,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "21575:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 11386,
"length": null,
"nodeType": "ArrayTypeName",
"src": "21575:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11390,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21612:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 11388,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "21612:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 11389,
"length": null,
"nodeType": "ArrayTypeName",
"src": "21612:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21537:107:10"
},
"returnParameters": {
"id": 11394,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11393,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21667:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11392,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "21667:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21666:6:10"
},
"scope": 11667,
"src": "21499:658:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11464,
"nodeType": "Block",
"src": "22400:102:10",
"statements": [
{
"assignments": [
null,
11456,
null,
null,
null
],
"declarations": [
null,
{
"constant": false,
"id": 11456,
"mutability": "mutable",
"name": "weight",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11464,
"src": "22414:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 11455,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "22414:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
null,
null,
null
],
"id": 11461,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11459,
"name": "_reserveToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11450,
"src": "22456:13:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11457,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11448,
"src": "22434:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11458,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectors",
"nodeType": "MemberAccess",
"referencedDeclaration": 13320,
"src": "22434:21:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
"typeString": "function (contract IERC20Token) view external returns (uint256,uint32,bool,bool,bool)"
}
},
"id": 11460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22434:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
"typeString": "tuple(uint256,uint32,bool,bool,bool)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22411:59:10"
},
{
"expression": {
"argumentTypes": null,
"id": 11462,
"name": "weight",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11456,
"src": "22488:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"functionReturnParameters": 11454,
"id": 11463,
"nodeType": "Return",
"src": "22481:13:10"
}
]
},
"documentation": null,
"id": 11465,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getReserveWeight",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11451,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11448,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11465,
"src": "22320:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11447,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "22320:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11450,
"mutability": "mutable",
"name": "_reserveToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11465,
"src": "22343:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11449,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "22343:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22319:50:10"
},
"returnParameters": {
"id": 11454,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11453,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11465,
"src": "22392:6:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 11452,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "22392:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22391:8:10"
},
"scope": 11667,
"src": "22294:208:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"constant": true,
"id": 11473,
"mutability": "constant",
"name": "CONVERTER_TYPE_FUNC_SELECTOR",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11667,
"src": "22510:91:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 11466,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "22510:6:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "636f6e766572746572547970652829",
"id": 11470,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22582:17:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
"typeString": "literal_string \"converterType()\""
},
"value": "converterType()"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
"typeString": "literal_string \"converterType()\""
}
],
"id": 11469,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "22572:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 11471,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22572:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11468,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "22565:6:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes4_$",
"typeString": "type(bytes4)"
},
"typeName": {
"id": 11467,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "22565:6:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11472,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22565:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "private"
},
{
"body": {
"id": 11519,
"nodeType": "Block",
"src": "22843:297:10",
"statements": [
{
"assignments": [
11483,
11485
],
"declarations": [
{
"constant": false,
"id": 11483,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11519,
"src": "22855:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11482,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "22855:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11485,
"mutability": "mutable",
"name": "returnData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11519,
"src": "22869:23:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 11484,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "22869:5:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11496,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11493,
"name": "CONVERTER_TYPE_FUNC_SELECTOR",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11473,
"src": "22950:28:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
],
"expression": {
"argumentTypes": null,
"id": 11491,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "22927:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11492,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "22927:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 11494,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22927:52:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11488,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11475,
"src": "22904:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 11487,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "22896:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11486,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "22896:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22896:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 11490,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "staticcall",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "22896:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) view returns (bool,bytes memory)"
}
},
"id": 11495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22896:84:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22854:126:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 11502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11497,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11483,
"src": "22995:7:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11501,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11498,
"name": "returnData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11485,
"src": "23006:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 11499,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "23006:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3332",
"id": 11500,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23027:2:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "23006:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "22995:34:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11511,
"nodeType": "IfStatement",
"src": "22991:93:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11505,
"name": "returnData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11485,
"src": "23063:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 11507,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "23076:6:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint16_$",
"typeString": "type(uint16)"
},
"typeName": {
"id": 11506,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "23076:6:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
}
],
"id": 11508,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "23075:8:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint16_$",
"typeString": "type(uint16)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_type$_t_uint16_$",
"typeString": "type(uint16)"
}
],
"expression": {
"argumentTypes": null,
"id": 11503,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "23052:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11504,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "decode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "23052:10:10",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 11509,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23052:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"functionReturnParameters": 11481,
"id": 11510,
"nodeType": "Return",
"src": "23045:39:10"
}
},
{
"expression": {
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11512,
"name": "_reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11477,
"src": "23102:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11513,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23123:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "23102:22:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11516,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23131:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"id": 11517,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "23102:30:10",
"trueExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11515,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23127:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 11481,
"id": 11518,
"nodeType": "Return",
"src": "23095:37:10"
}
]
},
"documentation": null,
"id": 11520,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConverterType",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11478,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11475,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11520,
"src": "22762:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11474,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "22762:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11477,
"mutability": "mutable",
"name": "_reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11520,
"src": "22785:26:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11476,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22785:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22761:51:10"
},
"returnParameters": {
"id": 11481,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11480,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11520,
"src": "22835:6:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 11479,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "22835:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22834:8:10"
},
"scope": 11667,
"src": "22736:404:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11529,
"nodeType": "Block",
"src": "23296:42:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 11526,
"name": "getAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10514,
"src": "23314:14:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 11527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23314:16:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 11525,
"id": 11528,
"nodeType": "Return",
"src": "23307:23:10"
}
]
},
"documentation": {
"id": 11521,
"nodeType": "StructuredDocumentation",
"src": "23148:82:10",
"text": " @dev deprecated, backward compatibility, use `getAnchorCount`"
},
"functionSelector": "e571049b",
"id": 11530,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11522,
"nodeType": "ParameterList",
"parameters": [],
"src": "23263:2:10"
},
"returnParameters": {
"id": 11525,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11524,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11530,
"src": "23287:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11523,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23287:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23286:9:10"
},
"scope": 11667,
"src": "23236:102:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11540,
"nodeType": "Block",
"src": "23495:38:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 11537,
"name": "getAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10531,
"src": "23513:10:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view returns (address[] memory)"
}
},
"id": 11538,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23513:12:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 11536,
"id": 11539,
"nodeType": "Return",
"src": "23506:19:10"
}
]
},
"documentation": {
"id": 11531,
"nodeType": "StructuredDocumentation",
"src": "23346:78:10",
"text": " @dev deprecated, backward compatibility, use `getAnchors`"
},
"functionSelector": "04ceaf41",
"id": 11541,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11532,
"nodeType": "ParameterList",
"parameters": [],
"src": "23453:2:10"
},
"returnParameters": {
"id": 11536,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11535,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11541,
"src": "23477:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11533,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23477:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11534,
"length": null,
"nodeType": "ArrayTypeName",
"src": "23477:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23476:18:10"
},
"scope": 11667,
"src": "23430:103:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11553,
"nodeType": "Block",
"src": "23702:43:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11550,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11544,
"src": "23730:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 11549,
"name": "getAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10550,
"src": "23720:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint256) view returns (contract IConverterAnchor)"
}
},
"id": 11551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23720:17:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11548,
"id": 11552,
"nodeType": "Return",
"src": "23713:24:10"
}
]
},
"documentation": {
"id": 11542,
"nodeType": "StructuredDocumentation",
"src": "23541:77:10",
"text": " @dev deprecated, backward compatibility, use `getAnchor`"
},
"functionSelector": "a109d214",
"id": 11554,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11545,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11544,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11554,
"src": "23647:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11543,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23647:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23646:16:10"
},
"returnParameters": {
"id": 11548,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11547,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11554,
"src": "23684:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11546,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "23684:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23683:18:10"
},
"scope": 11667,
"src": "23624:121:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11566,
"nodeType": "Block",
"src": "23900:42:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11563,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11557,
"src": "23927:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11562,
"name": "isAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10569,
"src": "23918:8:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 11564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23918:16:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 11561,
"id": 11565,
"nodeType": "Return",
"src": "23911:23:10"
}
]
},
"documentation": {
"id": 11555,
"nodeType": "StructuredDocumentation",
"src": "23753:76:10",
"text": " @dev deprecated, backward compatibility, use `isAnchor`"
},
"functionSelector": "4123ef60",
"id": 11567,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11558,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11557,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11567,
"src": "23857:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11556,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23857:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23856:16:10"
},
"returnParameters": {
"id": 11561,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11560,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11567,
"src": "23894:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11559,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "23894:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23893:6:10"
},
"scope": 11667,
"src": "23835:107:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11579,
"nodeType": "Block",
"src": "24159:75:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11576,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11570,
"src": "24208:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11575,
"name": "getConvertibleTokenAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10730,
"src": "24177:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view returns (uint256)"
}
},
"id": 11577,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "24177:49:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 11574,
"id": 11578,
"nodeType": "Return",
"src": "24170:56:10"
}
]
},
"documentation": {
"id": 11568,
"nodeType": "StructuredDocumentation",
"src": "23950:98:10",
"text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
},
"functionSelector": "a43d5e94",
"id": 11580,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11571,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11570,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11580,
"src": "24098:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11569,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24098:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24097:31:10"
},
"returnParameters": {
"id": 11574,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11573,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11580,
"src": "24150:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11572,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24150:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24149:9:10"
},
"scope": 11667,
"src": "24054:180:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11593,
"nodeType": "Block",
"src": "24452:71:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11590,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11583,
"src": "24497:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11589,
"name": "getConvertibleTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10750,
"src": "24470:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token) view returns (address[] memory)"
}
},
"id": 11591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "24470:45:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 11588,
"id": 11592,
"nodeType": "Return",
"src": "24463:52:10"
}
]
},
"documentation": {
"id": 11581,
"nodeType": "StructuredDocumentation",
"src": "24242:94:10",
"text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
},
"functionSelector": "f4fb86c0",
"id": 11594,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11584,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11583,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11594,
"src": "24382:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11582,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24382:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24381:31:10"
},
"returnParameters": {
"id": 11588,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11587,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11594,
"src": "24434:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11585,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24434:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11586,
"length": null,
"nodeType": "ArrayTypeName",
"src": "24434:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24433:18:10"
},
"scope": 11667,
"src": "24342:181:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11609,
"nodeType": "Block",
"src": "24755:78:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11605,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11597,
"src": "24799:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11606,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11599,
"src": "24818:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 11604,
"name": "getConvertibleTokenAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10772,
"src": "24773:25:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (contract IERC20Token,uint256) view returns (contract IConverterAnchor)"
}
},
"id": 11607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "24773:52:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11603,
"id": 11608,
"nodeType": "Return",
"src": "24766:59:10"
}
]
},
"documentation": {
"id": 11595,
"nodeType": "StructuredDocumentation",
"src": "24531:93:10",
"text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
},
"functionSelector": "d6c4b5b2",
"id": 11610,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11600,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11597,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11610,
"src": "24669:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11596,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24669:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11599,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11610,
"src": "24700:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11598,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24700:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24668:47:10"
},
"returnParameters": {
"id": 11603,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11602,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11610,
"src": "24737:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11601,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "24737:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24736:18:10"
},
"scope": 11667,
"src": "24630:203:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11625,
"nodeType": "Block",
"src": "25051:77:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11621,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11613,
"src": "25094:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11622,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11615,
"src": "25113:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11620,
"name": "isConvertibleTokenAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10794,
"src": "25069:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
"typeString": "function (contract IERC20Token,address) view returns (bool)"
}
},
"id": 11623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "25069:51:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 11619,
"id": 11624,
"nodeType": "Return",
"src": "25062:58:10"
}
]
},
"documentation": {
"id": 11611,
"nodeType": "StructuredDocumentation",
"src": "24841:92:10",
"text": " @dev deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
},
"functionSelector": "725b8786",
"id": 11626,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11616,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11613,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11626,
"src": "24977:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11612,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24977:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11615,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11626,
"src": "25008:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11614,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "25008:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24976:47:10"
},
"returnParameters": {
"id": 11619,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11618,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11626,
"src": "25045:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11617,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "25045:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25044:6:10"
},
"scope": 11667,
"src": "24939:189:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11640,
"nodeType": "Block",
"src": "25341:62:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11637,
"name": "_smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11630,
"src": "25382:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
],
"id": 11636,
"name": "getConvertersByAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10847,
"src": "25359:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
"typeString": "function (address[] memory) view returns (contract IConverter[] memory)"
}
},
"id": 11638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "25359:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"functionReturnParameters": 11635,
"id": 11639,
"nodeType": "Return",
"src": "25352:43:10"
}
]
},
"documentation": {
"id": 11627,
"nodeType": "StructuredDocumentation",
"src": "25136:90:10",
"text": " @dev deprecated, backward compatibility, use `getConvertersByAnchors`"
},
"functionSelector": "1f8e2620",
"id": 11641,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertersBySmartTokens",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11631,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11630,
"mutability": "mutable",
"name": "_smartTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11641,
"src": "25268:29:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11628,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "25268:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11629,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25268:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25267:31:10"
},
"returnParameters": {
"id": 11635,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11634,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11641,
"src": "25320:19:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11632,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "25320:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11633,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25320:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25319:21:10"
},
"scope": 11667,
"src": "25232:171:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11665,
"nodeType": "Block",
"src": "25659:118:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11657,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11654,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11645,
"src": "25702:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11655,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "25702:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11656,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "25726:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "25702:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11659,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "25734:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"id": 11660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "25702:33:10",
"trueExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11658,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "25730:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 11661,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11645,
"src": "25737:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 11662,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11648,
"src": "25753:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 11653,
"name": "getLiquidityPoolByConfig",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11031,
"src": "25677:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
}
},
"id": 11663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "25677:92:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11652,
"id": 11664,
"nodeType": "Return",
"src": "25670:99:10"
}
]
},
"documentation": {
"id": 11642,
"nodeType": "StructuredDocumentation",
"src": "25411:92:10",
"text": " @dev deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
},
"functionSelector": "c22b82f0",
"id": 11666,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolByReserveConfig",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11649,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11645,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11666,
"src": "25550:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11643,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "25550:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 11644,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25550:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11648,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11666,
"src": "25587:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 11646,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "25587:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 11647,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25587:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25549:70:10"
},
"returnParameters": {
"id": 11652,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11651,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11666,
"src": "25641:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11650,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "25641:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25640:18:10"
},
"scope": 11667,
"src": "25509:268:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
}
],
"scope": 11668,
"src": "1414:24366:10"
}
],
"src": "52:25730:10"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
"exportedSymbols": {
"ConverterRegistry": [
11667
]
},
"id": 11668,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 10246,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:10"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol",
"file": "../utility/TokenHandler.sol",
"id": 10247,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 22527,
"src": "77:37:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"file": "../utility/ContractRegistryClient.sol",
"id": 10248,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 21720,
"src": "116:47:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
"file": "./interfaces/IConverter.sol",
"id": 10249,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13341,
"src": "165:37:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol",
"file": "./interfaces/IConverterFactory.sol",
"id": 10250,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13390,
"src": "204:44:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol",
"file": "./interfaces/IConverterRegistry.sol",
"id": 10251,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13502,
"src": "250:45:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol",
"file": "./interfaces/IConverterRegistryData.sol",
"id": 10252,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 13648,
"src": "297:49:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol",
"file": "../token/interfaces/ISmartToken.sol",
"id": 10253,
"nodeType": "ImportDirective",
"scope": 11668,
"sourceUnit": 21183,
"src": "348:45:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 10255,
"name": "IConverterRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13501,
"src": "1444:18:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistry_$13501",
"typeString": "contract IConverterRegistry"
}
},
"id": 10256,
"nodeType": "InheritanceSpecifier",
"src": "1444:18:10"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 10257,
"name": "ContractRegistryClient",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21719,
"src": "1464:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
"typeString": "contract ContractRegistryClient"
}
},
"id": 10258,
"nodeType": "InheritanceSpecifier",
"src": "1464:22:10"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 10259,
"name": "TokenHandler",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22526,
"src": "1488:12:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TokenHandler_$22526",
"typeString": "contract TokenHandler"
}
},
"id": 10260,
"nodeType": "InheritanceSpecifier",
"src": "1488:12:10"
}
],
"contractDependencies": [
13501,
21719,
21818,
22526,
22661,
22847
],
"contractKind": "contract",
"documentation": {
"id": 10254,
"nodeType": "StructuredDocumentation",
"src": "397:1015:10",
"text": " @dev The ConverterRegistry maintains a list of all active converters in the Bancor Network.\n Since converters can be upgraded and thus their address can change, the registry actually keeps\n converter anchors internally and not the converters themselves.\n The active converter for each anchor can be easily accessed by querying the anchor's owner.\n The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller:\n - Anchors - can be used to get all the latest / historical data in the network\n - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc.\n - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool\n tokens), and for each one - all anchors that hold it in their reserves\n The contract fires events whenever one of the primitives is added to or removed from the registry\n The contract is upgradable."
},
"fullyImplemented": true,
"id": 11667,
"linearizedBaseContracts": [
11667,
22526,
21719,
22661,
21818,
22847,
13501
],
"name": "ConverterRegistry",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 10261,
"nodeType": "StructuredDocumentation",
"src": "1508:129:10",
"text": " @dev triggered when a converter anchor is added to the registry\n @param _anchor smart token"
},
"id": 10265,
"name": "ConverterAnchorAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10264,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10263,
"indexed": true,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10265,
"src": "1670:32:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10262,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1670:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1669:34:10"
},
"src": "1643:61:10"
},
{
"anonymous": false,
"documentation": {
"id": 10266,
"nodeType": "StructuredDocumentation",
"src": "1712:133:10",
"text": " @dev triggered when a converter anchor is removed from the registry\n @param _anchor smart token"
},
"id": 10270,
"name": "ConverterAnchorRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10269,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10268,
"indexed": true,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10270,
"src": "1880:32:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10267,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "1880:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1879:34:10"
},
"src": "1851:63:10"
},
{
"anonymous": false,
"documentation": {
"id": 10271,
"nodeType": "StructuredDocumentation",
"src": "1922:137:10",
"text": " @dev triggered when a liquidity pool is added to the registry\n @param _liquidityPool liquidity pool"
},
"id": 10275,
"name": "LiquidityPoolAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10273,
"indexed": true,
"mutability": "mutable",
"name": "_liquidityPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10275,
"src": "2090:39:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10272,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2090:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2089:41:10"
},
"src": "2065:66:10"
},
{
"anonymous": false,
"documentation": {
"id": 10276,
"nodeType": "StructuredDocumentation",
"src": "2139:141:10",
"text": " @dev triggered when a liquidity pool is removed from the registry\n @param _liquidityPool liquidity pool"
},
"id": 10280,
"name": "LiquidityPoolRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10279,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10278,
"indexed": true,
"mutability": "mutable",
"name": "_liquidityPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10280,
"src": "2313:39:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10277,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2313:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2312:41:10"
},
"src": "2286:68:10"
},
{
"anonymous": false,
"documentation": {
"id": 10281,
"nodeType": "StructuredDocumentation",
"src": "2362:197:10",
"text": " @dev triggered when a convertible token is added to the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
},
"id": 10287,
"name": "ConvertibleTokenAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10286,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10283,
"indexed": true,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10287,
"src": "2593:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10282,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "2593:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10285,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10287,
"src": "2632:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10284,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2632:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2592:77:10"
},
"src": "2565:105:10"
},
{
"anonymous": false,
"documentation": {
"id": 10288,
"nodeType": "StructuredDocumentation",
"src": "2678:201:10",
"text": " @dev triggered when a convertible token is removed from the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
},
"id": 10294,
"name": "ConvertibleTokenRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10293,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10290,
"indexed": true,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10294,
"src": "2915:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10289,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "2915:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10292,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10294,
"src": "2954:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10291,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "2954:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2914:77:10"
},
"src": "2885:107:10"
},
{
"anonymous": false,
"documentation": {
"id": 10295,
"nodeType": "StructuredDocumentation",
"src": "3000:88:10",
"text": " @dev deprecated, backward compatibility, use `ConverterAnchorAdded`"
},
"id": 10299,
"name": "SmartTokenAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 10298,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10297,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10299,
"src": "3116:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10296,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "3116:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3115:38:10"
},
"src": "3094:60:10"
},
{
"anonymous": false,
"documentation": {
"id": 10300,
"nodeType": "StructuredDocumentation",
"src": "3162:90:10",
"text": " @dev deprecated, backward compatibility, use `ConverterAnchorRemoved`"
},
"id": 10304,
"name": "SmartTokenRemoved",
"nodeType": "EventDefinition",
"parameters": {
"id": 10303,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10302,
"indexed": true,
"mutability": "mutable",
"name": "_smartToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10304,
"src": "3282:36:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10301,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "3282:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3281:38:10"
},
"src": "3258:62:10"
},
{
"body": {
"id": 10313,
"nodeType": "Block",
"src": "3561:8:10",
"statements": []
},
"documentation": {
"id": 10305,
"nodeType": "StructuredDocumentation",
"src": "3328:145:10",
"text": " @dev initializes a new ConverterRegistry instance\n @param _registry address of a contract registry contract"
},
"id": 10314,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 10310,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10307,
"src": "3543:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"id": 10311,
"modifierName": {
"argumentTypes": null,
"id": 10309,
"name": "ContractRegistryClient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21719,
"src": "3520:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
"typeString": "type(contract ContractRegistryClient)"
}
},
"nodeType": "ModifierInvocation",
"src": "3520:33:10"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10308,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10307,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10314,
"src": "3491:27:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 10306,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "3491:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3490:29:10"
},
"returnParameters": {
"id": 10312,
"nodeType": "ParameterList",
"parameters": [],
"src": "3561:0:10"
},
"scope": 11667,
"src": "3479:90:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10453,
"nodeType": "Block",
"src": "4488:991:10",
"statements": [
{
"assignments": [
10337
],
"declarations": [
{
"constant": false,
"id": 10337,
"mutability": "mutable",
"name": "length",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4499:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10336,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4499:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10340,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10338,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10328,
"src": "4516:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4516:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4499:38:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10342,
"name": "length",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10337,
"src": "4556:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10343,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10331,
"src": "4566:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10344,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4566:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4556:32:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f5245534552564553",
"id": 10346,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4590:22:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
"typeString": "literal_string \"ERR_INVALID_RESERVES\""
},
"value": "ERR_INVALID_RESERVES"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
"typeString": "literal_string \"ERR_INVALID_RESERVES\""
}
],
"id": 10341,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4548:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10347,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4548:65:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10348,
"nodeType": "ExpressionStatement",
"src": "4548:65:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"id": 10358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10351,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10317,
"src": "4657:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10352,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10328,
"src": "4664:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 10353,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10331,
"src": "4680:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 10350,
"name": "getLiquidityPoolByConfig",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11031,
"src": "4632:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
}
},
"id": 10354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4632:64:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 10356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4717:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 10355,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "4700:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10357,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4700:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"src": "4632:87:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f414c52454144595f455849535453",
"id": 10359,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4721:20:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
"typeString": "literal_string \"ERR_ALREADY_EXISTS\""
},
"value": "ERR_ALREADY_EXISTS"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
"typeString": "literal_string \"ERR_ALREADY_EXISTS\""
}
],
"id": 10349,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4624:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10360,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4624:118:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10361,
"nodeType": "ExpressionStatement",
"src": "4624:118:10"
},
{
"assignments": [
10363
],
"declarations": [
{
"constant": false,
"id": 10363,
"mutability": "mutable",
"name": "factory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4755:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
},
"typeName": {
"contractScope": null,
"id": 10362,
"name": "IConverterFactory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13389,
"src": "4755:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10369,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10366,
"name": "CONVERTER_FACTORY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21536,
"src": "4811:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10365,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "4801:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4801:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10364,
"name": "IConverterFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13389,
"src": "4783:17:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterFactory_$13389_$",
"typeString": "type(contract IConverterFactory)"
}
},
"id": 10368,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4783:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4755:75:10"
},
{
"assignments": [
10371
],
"declarations": [
{
"constant": false,
"id": 10371,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4841:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10370,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "4841:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10381,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10375,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10317,
"src": "4905:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10376,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10319,
"src": "4912:5:10",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 10377,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10321,
"src": "4919:7:10",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 10378,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10323,
"src": "4928:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"id": 10373,
"name": "factory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10363,
"src": "4884:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"id": 10374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createAnchor",
"nodeType": "MemberAccess",
"referencedDeclaration": 13368,
"src": "4884:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,string memory,string memory,uint8) external returns (contract IConverterAnchor)"
}
},
"id": 10379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4884:54:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 10372,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "4867:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4867:72:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4841:98:10"
},
{
"assignments": [
10383
],
"declarations": [
{
"constant": false,
"id": 10383,
"mutability": "mutable",
"name": "converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10453,
"src": "4950:20:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10382,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "4950:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10393,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10387,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10317,
"src": "5008:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10388,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10371,
"src": "5015:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
{
"argumentTypes": null,
"id": 10389,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "5023:8:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
{
"argumentTypes": null,
"id": 10390,
"name": "_maxConversionFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10325,
"src": "5033:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"expression": {
"argumentTypes": null,
"id": 10385,
"name": "factory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10363,
"src": "4984:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterFactory_$13389",
"typeString": "contract IConverterFactory"
}
},
"id": 10386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createConverter",
"nodeType": "MemberAccess",
"referencedDeclaration": 13381,
"src": "4984:23:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_contract$_IConverterAnchor_$13349_$_t_contract$_IContractRegistry_$22831_$_t_uint32_$returns$_t_contract$_IConverter_$13340_$",
"typeString": "function (uint16,contract IConverterAnchor,contract IContractRegistry,uint32) external returns (contract IConverter)"
}
},
"id": 10391,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4984:67:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10384,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "4973:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 10392,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4973:79:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4950:102:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10394,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10371,
"src": "5065:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "acceptOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22846,
"src": "5065:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
"typeString": "function () external"
}
},
"id": 10397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5065:24:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10398,
"nodeType": "ExpressionStatement",
"src": "5065:24:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10399,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5100:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "acceptOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22846,
"src": "5100:25:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
"typeString": "function () external"
}
},
"id": 10402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5100:27:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10403,
"nodeType": "ExpressionStatement",
"src": "5100:27:10"
},
{
"body": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10417,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10328,
"src": "5211:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10419,
"indexExpression": {
"argumentTypes": null,
"id": 10418,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5226:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5211:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10420,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10331,
"src": "5230:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10422,
"indexExpression": {
"argumentTypes": null,
"id": 10421,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5246:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5230:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"expression": {
"argumentTypes": null,
"id": 10414,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5190:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10416,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addReserve",
"nodeType": "MemberAccess",
"referencedDeclaration": 13292,
"src": "5190:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
"typeString": "function (contract IERC20Token,uint32) external"
}
},
"id": 10423,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5190:59:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10424,
"nodeType": "ExpressionStatement",
"src": "5190:59:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10410,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10408,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5160:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 10409,
"name": "length",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10337,
"src": "5164:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5160:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10425,
"initializationExpression": {
"assignments": [
10405
],
"declarations": [
{
"constant": false,
"id": 10405,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10425,
"src": "5145:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10404,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5145:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10407,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10406,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5157:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "5145:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10412,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "5172:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10411,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10405,
"src": "5172:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10413,
"nodeType": "ExpressionStatement",
"src": "5172:3:10"
},
"nodeType": "ForStatement",
"src": "5140:109:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10431,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5295:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10430,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5287:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 10429,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5287:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 10432,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5287:18:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"expression": {
"argumentTypes": null,
"id": 10426,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10371,
"src": "5262:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22843,
"src": "5262:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
"typeString": "function (address) external"
}
},
"id": 10433,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5262:44:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10434,
"nodeType": "ExpressionStatement",
"src": "5262:44:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10435,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5317:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10437,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "acceptAnchorOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 13261,
"src": "5317:31:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
"typeString": "function () external"
}
},
"id": 10438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5317:33:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10439,
"nodeType": "ExpressionStatement",
"src": "5317:33:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10443,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "5389:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 10444,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5389:10:10",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"expression": {
"argumentTypes": null,
"id": 10440,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5361:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10442,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferOwnership",
"nodeType": "MemberAccess",
"referencedDeclaration": 22843,
"src": "5361:27:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
"typeString": "function (address) external"
}
},
"id": 10445,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5361:39:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10446,
"nodeType": "ExpressionStatement",
"src": "5361:39:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10448,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5434:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10447,
"name": "addConverterInternal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11234,
"src": "5413:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
"typeString": "function (contract IConverter)"
}
},
"id": 10449,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5413:31:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10450,
"nodeType": "ExpressionStatement",
"src": "5413:31:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10451,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10383,
"src": "5462:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"functionReturnParameters": 10335,
"id": 10452,
"nodeType": "Return",
"src": "5455:16:10"
}
]
},
"documentation": {
"id": 10315,
"nodeType": "StructuredDocumentation",
"src": "3577:596:10",
"text": " @dev creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\n @param _type converter type, see ConverterBase contract main doc\n @param _name token / pool name\n @param _symbol token / pool symbol\n @param _decimals token / pool decimals\n @param _maxConversionFee maximum conversion-fee\n @param _reserveTokens reserve tokens\n @param _reserveWeights reserve weights\n @return new converter"
},
"functionSelector": "5a0a6618",
"id": 10454,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "newConverter",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10332,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10317,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4211:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 10316,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "4211:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10319,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4234:19:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 10318,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4234:6:10",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10321,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4264:21:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 10320,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4264:6:10",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10323,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4296:15:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 10322,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4296:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10325,
"mutability": "mutable",
"name": "_maxConversionFee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4322:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 10324,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4322:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10328,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4357:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10326,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "4357:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10327,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4357:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10331,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4403:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 10329,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4403:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10330,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4403:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4200:241:10"
},
"returnParameters": {
"id": 10335,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10334,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10454,
"src": "4471:10:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10333,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "4471:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4470:12:10"
},
"scope": 11667,
"src": "4179:1300:10",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 10473,
"nodeType": "Block",
"src": "5710:124:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10464,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10457,
"src": "5746:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10463,
"name": "isConverterValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10867,
"src": "5729:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
"typeString": "function (contract IConverter) view returns (bool)"
}
},
"id": 10465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5729:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f434f4e564552544552",
"id": 10466,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5759:23:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
"typeString": "literal_string \"ERR_INVALID_CONVERTER\""
},
"value": "ERR_INVALID_CONVERTER"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
"typeString": "literal_string \"ERR_INVALID_CONVERTER\""
}
],
"id": 10462,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5721:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5721:62:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10468,
"nodeType": "ExpressionStatement",
"src": "5721:62:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10470,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10457,
"src": "5815:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10469,
"name": "addConverterInternal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11234,
"src": "5794:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
"typeString": "function (contract IConverter)"
}
},
"id": 10471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5794:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10472,
"nodeType": "ExpressionStatement",
"src": "5794:32:10"
}
]
},
"documentation": {
"id": 10455,
"nodeType": "StructuredDocumentation",
"src": "5487:155:10",
"text": " @dev adds an existing converter to the registry\n can only be called by the owner\n @param _converter converter"
},
"functionSelector": "6ce1c4dc",
"id": 10474,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 10460,
"modifierName": {
"argumentTypes": null,
"id": 10459,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "5700:9:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "5700:9:10"
}
],
"name": "addConverter",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10458,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10457,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10474,
"src": "5670:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10456,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "5670:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5669:23:10"
},
"returnParameters": {
"id": 10461,
"nodeType": "ParameterList",
"parameters": [],
"src": "5710:0:10"
},
"scope": 11667,
"src": "5648:186:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10497,
"nodeType": "Block",
"src": "6178:147:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 10489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 10484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10481,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "6197:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 10482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6197:10:10",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 10483,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21728,
"src": "6211:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6197:19:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"id": 10488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "6220:29:10",
"subExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10486,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10477,
"src": "6238:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10485,
"name": "isConverterValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10867,
"src": "6221:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
"typeString": "function (contract IConverter) view returns (bool)"
}
},
"id": 10487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6221:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "6197:52:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4143434553535f44454e494544",
"id": 10490,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6251:19:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
},
"value": "ERR_ACCESS_DENIED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
}
],
"id": 10480,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6189:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 10491,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6189:82:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10492,
"nodeType": "ExpressionStatement",
"src": "6189:82:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10494,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10477,
"src": "6306:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10493,
"name": "removeConverterInternal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11307,
"src": "6282:23:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
"typeString": "function (contract IConverter)"
}
},
"id": 10495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6282:35:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 10496,
"nodeType": "ExpressionStatement",
"src": "6282:35:10"
}
]
},
"documentation": {
"id": 10475,
"nodeType": "StructuredDocumentation",
"src": "5842:275:10",
"text": " @dev removes a converter from the registry\n anyone can remove an existing converter from the registry, as long as the converter is invalid\n note that the owner can also remove valid converters\n @param _converter converter"
},
"functionSelector": "9e76a007",
"id": 10498,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeConverter",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10478,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10477,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10498,
"src": "6148:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10476,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "6148:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6147:23:10"
},
"returnParameters": {
"id": 10479,
"nodeType": "ParameterList",
"parameters": [],
"src": "6178:0:10"
},
"scope": 11667,
"src": "6123:202:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13397
],
"body": {
"id": 10513,
"nodeType": "Block",
"src": "6529:105:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10507,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "6580:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10506,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "6570:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6570:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10505,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "6547:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10509,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6547:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10510,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13543,
"src": "6547:77:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 10511,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6547:79:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10504,
"id": 10512,
"nodeType": "Return",
"src": "6540:86:10"
}
]
},
"documentation": {
"id": 10499,
"nodeType": "StructuredDocumentation",
"src": "6333:125:10",
"text": " @dev returns the number of converter anchors in the registry\n @return number of anchors"
},
"functionSelector": "d3182bed",
"id": 10514,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAnchorCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10501,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6502:8:10"
},
"parameters": {
"id": 10500,
"nodeType": "ParameterList",
"parameters": [],
"src": "6487:2:10"
},
"returnParameters": {
"id": 10504,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10503,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10514,
"src": "6520:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10502,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6520:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6519:9:10"
},
"scope": 11667,
"src": "6464:170:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13403
],
"body": {
"id": 10530,
"nodeType": "Block",
"src": "6839:101:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10524,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "6890:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10523,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "6880:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10525,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6880:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10522,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "6857:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6857:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSmartTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13549,
"src": "6857:73:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view external returns (address[] memory)"
}
},
"id": 10528,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6857:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10521,
"id": 10529,
"nodeType": "Return",
"src": "6850:82:10"
}
]
},
"documentation": {
"id": 10515,
"nodeType": "StructuredDocumentation",
"src": "6642:121:10",
"text": " @dev returns the list of converter anchors in the registry\n @return list of anchors"
},
"functionSelector": "effb3c6e",
"id": 10531,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAnchors",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10517,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6803:8:10"
},
"parameters": {
"id": 10516,
"nodeType": "ParameterList",
"parameters": [],
"src": "6788:2:10"
},
"returnParameters": {
"id": 10521,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10520,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10531,
"src": "6821:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10518,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6821:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10519,
"length": null,
"nodeType": "ArrayTypeName",
"src": "6821:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6820:18:10"
},
"scope": 11667,
"src": "6769:171:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13410
],
"body": {
"id": 10549,
"nodeType": "Block",
"src": "7189:106:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10546,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10534,
"src": "7280:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10542,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "7240:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10541,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "7230:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7230:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10540,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "7207:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7207:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10545,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13556,
"src": "7207:72:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint256) view external returns (contract IConverterAnchor)"
}
},
"id": 10547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7207:80:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10539,
"id": 10548,
"nodeType": "Return",
"src": "7200:87:10"
}
]
},
"documentation": {
"id": 10532,
"nodeType": "StructuredDocumentation",
"src": "6948:152:10",
"text": " @dev returns the converter anchor at a given index\n @param _index index\n @return anchor at the given index"
},
"functionSelector": "4c7df18f",
"id": 10550,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10536,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7153:8:10"
},
"parameters": {
"id": 10535,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10534,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10550,
"src": "7125:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10533,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7125:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7124:16:10"
},
"returnParameters": {
"id": 10539,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10538,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10550,
"src": "7171:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10537,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "7171:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7170:18:10"
},
"scope": 11667,
"src": "7106:189:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13417
],
"body": {
"id": 10568,
"nodeType": "Block",
"src": "7568:105:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10565,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10553,
"src": "7658:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10561,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "7619:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10560,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "7609:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7609:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10559,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "7586:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10563,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7586:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13563,
"src": "7586:71:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 10566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7586:79:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10558,
"id": 10567,
"nodeType": "Return",
"src": "7579:86:10"
}
]
},
"documentation": {
"id": 10551,
"nodeType": "StructuredDocumentation",
"src": "7303:189:10",
"text": " @dev checks whether or not a given value is a converter anchor\n @param _value value\n @return true if the given value is an anchor, false if not"
},
"functionSelector": "d8cced2a",
"id": 10569,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10555,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7544:8:10"
},
"parameters": {
"id": 10554,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10553,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10569,
"src": "7516:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7516:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7515:16:10"
},
"returnParameters": {
"id": 10558,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10557,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10569,
"src": "7562:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10556,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7562:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7561:6:10"
},
"scope": 11667,
"src": "7498:175:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13422
],
"body": {
"id": 10584,
"nodeType": "Block",
"src": "7890:108:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10578,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "7941:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10577,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "7931:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10579,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7931:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10576,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "7908:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7908:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10581,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidityPoolCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13568,
"src": "7908:80:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 10582,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7908:82:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10575,
"id": 10583,
"nodeType": "Return",
"src": "7901:89:10"
}
]
},
"documentation": {
"id": 10570,
"nodeType": "StructuredDocumentation",
"src": "7681:131:10",
"text": " @dev returns the number of liquidity pools in the registry\n @return number of liquidity pools"
},
"functionSelector": "7a5f0ffd",
"id": 10585,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10572,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7863:8:10"
},
"parameters": {
"id": 10571,
"nodeType": "ParameterList",
"parameters": [],
"src": "7848:2:10"
},
"returnParameters": {
"id": 10575,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10574,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10585,
"src": "7881:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10573,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7881:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7880:9:10"
},
"scope": 11667,
"src": "7818:180:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13428
],
"body": {
"id": 10601,
"nodeType": "Block",
"src": "8216:104:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10595,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "8267:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10594,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "8257:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8257:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10593,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "8234:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8234:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10598,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidityPools",
"nodeType": "MemberAccess",
"referencedDeclaration": 13574,
"src": "8234:76:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view external returns (address[] memory)"
}
},
"id": 10599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8234:78:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10592,
"id": 10600,
"nodeType": "Return",
"src": "8227:85:10"
}
]
},
"documentation": {
"id": 10586,
"nodeType": "StructuredDocumentation",
"src": "8006:127:10",
"text": " @dev returns the list of liquidity pools in the registry\n @return list of liquidity pools"
},
"functionSelector": "7f45c4c3",
"id": 10602,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPools",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10588,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8180:8:10"
},
"parameters": {
"id": 10587,
"nodeType": "ParameterList",
"parameters": [],
"src": "8165:2:10"
},
"returnParameters": {
"id": 10592,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10591,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10602,
"src": "8198:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10589,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8198:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10590,
"length": null,
"nodeType": "ArrayTypeName",
"src": "8198:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8197:18:10"
},
"scope": 11667,
"src": "8139:181:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13435
],
"body": {
"id": 10620,
"nodeType": "Block",
"src": "8582:109:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10617,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10605,
"src": "8676:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10613,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "8633:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10612,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "8623:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8623:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10611,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "8600:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8600:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13581,
"src": "8600:75:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint256) view external returns (contract IConverterAnchor)"
}
},
"id": 10618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8600:83:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10610,
"id": 10619,
"nodeType": "Return",
"src": "8593:90:10"
}
]
},
"documentation": {
"id": 10603,
"nodeType": "StructuredDocumentation",
"src": "8328:158:10",
"text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index"
},
"functionSelector": "a74498aa",
"id": 10621,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10607,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8546:8:10"
},
"parameters": {
"id": 10606,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10605,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10621,
"src": "8518:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10604,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8518:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8517:16:10"
},
"returnParameters": {
"id": 10610,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10609,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10621,
"src": "8564:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10608,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "8564:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8563:18:10"
},
"scope": 11667,
"src": "8492:199:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13442
],
"body": {
"id": 10639,
"nodeType": "Block",
"src": "8976:108:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10636,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10624,
"src": "9069:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10632,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "9027:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10631,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "9017:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10633,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9017:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10630,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "8994:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8994:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10635,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13588,
"src": "8994:74:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 10637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8994:82:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10629,
"id": 10638,
"nodeType": "Return",
"src": "8987:89:10"
}
]
},
"documentation": {
"id": 10622,
"nodeType": "StructuredDocumentation",
"src": "8699:194:10",
"text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not"
},
"functionSelector": "e85455d7",
"id": 10640,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10626,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8952:8:10"
},
"parameters": {
"id": 10625,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10624,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10640,
"src": "8924:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10623,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8924:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8923:16:10"
},
"returnParameters": {
"id": 10629,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10628,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10640,
"src": "8970:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10627,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "8970:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8969:6:10"
},
"scope": 11667,
"src": "8899:185:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13447
],
"body": {
"id": 10655,
"nodeType": "Block",
"src": "9310:111:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10649,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "9361:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10648,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "9351:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9351:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10647,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "9328:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9328:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10652,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13593,
"src": "9328:83:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 10653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9328:85:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10646,
"id": 10654,
"nodeType": "Return",
"src": "9321:92:10"
}
]
},
"documentation": {
"id": 10641,
"nodeType": "StructuredDocumentation",
"src": "9092:137:10",
"text": " @dev returns the number of convertible tokens in the registry\n @return number of convertible tokens"
},
"functionSelector": "69be4784",
"id": 10656,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10643,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9283:8:10"
},
"parameters": {
"id": 10642,
"nodeType": "ParameterList",
"parameters": [],
"src": "9268:2:10"
},
"returnParameters": {
"id": 10646,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10645,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10656,
"src": "9301:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10644,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9301:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9300:9:10"
},
"scope": 11667,
"src": "9235:186:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13453
],
"body": {
"id": 10672,
"nodeType": "Block",
"src": "9648:107:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10666,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "9699:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10665,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "9689:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9689:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10664,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "9666:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9666:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10669,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13599,
"src": "9666:79:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view external returns (address[] memory)"
}
},
"id": 10670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9666:81:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10663,
"id": 10671,
"nodeType": "Return",
"src": "9659:88:10"
}
]
},
"documentation": {
"id": 10657,
"nodeType": "StructuredDocumentation",
"src": "9429:133:10",
"text": " @dev returns the list of convertible tokens in the registry\n @return list of convertible tokens"
},
"functionSelector": "5f1b50fe",
"id": 10673,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10659,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9612:8:10"
},
"parameters": {
"id": 10658,
"nodeType": "ParameterList",
"parameters": [],
"src": "9597:2:10"
},
"returnParameters": {
"id": 10663,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10662,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10673,
"src": "9630:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10660,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9630:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10661,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9630:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9629:18:10"
},
"scope": 11667,
"src": "9568:187:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13460
],
"body": {
"id": 10691,
"nodeType": "Block",
"src": "10021:112:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10688,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10676,
"src": "10118:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10684,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "10072:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10683,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "10062:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10062:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10682,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "10039:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10686,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10039:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10687,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13606,
"src": "10039:78:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 10689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10039:86:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"functionReturnParameters": 10681,
"id": 10690,
"nodeType": "Return",
"src": "10032:93:10"
}
]
},
"documentation": {
"id": 10674,
"nodeType": "StructuredDocumentation",
"src": "9763:164:10",
"text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index"
},
"functionSelector": "865cf194",
"id": 10692,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10678,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "9990:8:10"
},
"parameters": {
"id": 10677,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10676,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10692,
"src": "9962:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10675,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9962:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9961:16:10"
},
"returnParameters": {
"id": 10681,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10680,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10692,
"src": "10008:11:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10679,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "10008:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10007:13:10"
},
"scope": 11667,
"src": "9933:200:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13467
],
"body": {
"id": 10710,
"nodeType": "Block",
"src": "10427:111:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10707,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10695,
"src": "10523:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10703,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "10478:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10702,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "10468:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10704,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10468:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10701,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "10445:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10705,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10445:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10706,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13613,
"src": "10445:77:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 10708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10445:85:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10700,
"id": 10709,
"nodeType": "Return",
"src": "10438:92:10"
}
]
},
"documentation": {
"id": 10693,
"nodeType": "StructuredDocumentation",
"src": "10141:200:10",
"text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not"
},
"functionSelector": "3ab8857c",
"id": 10711,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10697,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "10403:8:10"
},
"parameters": {
"id": 10696,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10695,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10711,
"src": "10375:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10694,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10375:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10374:16:10"
},
"returnParameters": {
"id": 10700,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10699,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10711,
"src": "10421:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10698,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "10421:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10420:6:10"
},
"scope": 11667,
"src": "10347:191:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13474
],
"body": {
"id": 10729,
"nodeType": "Block",
"src": "10909:138:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10726,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10714,
"src": "11021:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10722,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "10960:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10721,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "10950:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10723,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10950:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10720,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "10927:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10927:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10725,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13620,
"src": "10927:93:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view external returns (uint256)"
}
},
"id": 10727,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10927:112:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 10719,
"id": 10728,
"nodeType": "Return",
"src": "10920:119:10"
}
]
},
"documentation": {
"id": 10712,
"nodeType": "StructuredDocumentation",
"src": "10546:247:10",
"text": " @dev returns the number of converter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of anchors associated with the given convertible token"
},
"functionSelector": "49c5f32b",
"id": 10730,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenAnchorCount",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10716,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "10882:8:10"
},
"parameters": {
"id": 10715,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10714,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10730,
"src": "10839:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10713,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "10839:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10838:31:10"
},
"returnParameters": {
"id": 10719,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10718,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10730,
"src": "10900:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10717,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10900:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10899:9:10"
},
"scope": 11667,
"src": "10799:248:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13482
],
"body": {
"id": 10749,
"nodeType": "Block",
"src": "11419:134:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10746,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10733,
"src": "11527:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10742,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "11470:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10741,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "11460:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10743,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11460:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10740,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "11437:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10744,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11437:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13628,
"src": "11437:89:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token) view external returns (address[] memory)"
}
},
"id": 10747,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11437:108:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 10739,
"id": 10748,
"nodeType": "Return",
"src": "11430:115:10"
}
]
},
"documentation": {
"id": 10731,
"nodeType": "StructuredDocumentation",
"src": "11055:243:10",
"text": " @dev returns the list of aoncerter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of anchors associated with the given convertible token"
},
"functionSelector": "11839064",
"id": 10750,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenAnchors",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10735,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "11383:8:10"
},
"parameters": {
"id": 10734,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10733,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10750,
"src": "11340:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10732,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "11340:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11339:31:10"
},
"returnParameters": {
"id": 10739,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10738,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10750,
"src": "11401:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10736,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11401:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10737,
"length": null,
"nodeType": "ArrayTypeName",
"src": "11401:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11400:18:10"
},
"scope": 11667,
"src": "11304:249:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13491
],
"body": {
"id": 10771,
"nodeType": "Block",
"src": "11935:141:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10767,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10753,
"src": "12042:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 10768,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10755,
"src": "12061:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10763,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "11986:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10762,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "11976:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11976:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10761,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "11953:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11953:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10766,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13637,
"src": "11953:88:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (contract IERC20Token,uint256) view external returns (contract IConverterAnchor)"
}
},
"id": 10769,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11953:115:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10760,
"id": 10770,
"nodeType": "Return",
"src": "11946:122:10"
}
]
},
"documentation": {
"id": 10751,
"nodeType": "StructuredDocumentation",
"src": "11561:238:10",
"text": " @dev returns the converter anchor associated with a given convertible token at a given index\n @param _index index\n @return anchor associated with the given convertible token at the given index"
},
"functionSelector": "603f51e4",
"id": 10772,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10757,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "11899:8:10"
},
"parameters": {
"id": 10756,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10753,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10772,
"src": "11840:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10752,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "11840:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10755,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10772,
"src": "11871:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10754,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11871:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11839:47:10"
},
"returnParameters": {
"id": 10760,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10759,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10772,
"src": "11917:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10758,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "11917:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11916:18:10"
},
"scope": 11667,
"src": "11805:271:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
13500
],
"body": {
"id": 10793,
"nodeType": "Block",
"src": "12508:140:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10789,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10775,
"src": "12614:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 10790,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10777,
"src": "12633:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10785,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "12559:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 10784,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "12549:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 10786,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12549:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10783,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "12526:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 10787,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12526:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 10788,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isConvertibleTokenSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13646,
"src": "12526:87:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
"typeString": "function (contract IERC20Token,address) view external returns (bool)"
}
},
"id": 10791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12526:114:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10782,
"id": 10792,
"nodeType": "Return",
"src": "12519:121:10"
}
]
},
"documentation": {
"id": 10773,
"nodeType": "StructuredDocumentation",
"src": "12084:301:10",
"text": " @dev checks whether or not a given value is a converter anchor of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is an anchor of the given convertible token, false if not"
},
"functionSelector": "b4c4197a",
"id": 10794,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleTokenAnchor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 10779,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "12484:8:10"
},
"parameters": {
"id": 10778,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10775,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10794,
"src": "12425:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10774,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "12425:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10777,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10794,
"src": "12456:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10776,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12456:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12424:47:10"
},
"returnParameters": {
"id": 10782,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10781,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10794,
"src": "12502:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10780,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12502:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12501:6:10"
},
"scope": 11667,
"src": "12391:257:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10846,
"nodeType": "Block",
"src": "13040:261:10",
"statements": [
{
"assignments": [
10807
],
"declarations": [
{
"constant": false,
"id": 10807,
"mutability": "mutable",
"name": "converters",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10846,
"src": "13051:30:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10805,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13051:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10806,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13051:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10814,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10811,
"name": "_anchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10798,
"src": "13101:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10812,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "13101:15:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10810,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "13084:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
"typeString": "function (uint256) pure returns (contract IConverter[] memory)"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10808,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13088:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10809,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13088:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
}
},
"id": 10813,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13084:33:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "13051:66:10"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 10841,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10826,
"name": "converters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10807,
"src": "13189:10:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"id": 10828,
"indexExpression": {
"argumentTypes": null,
"id": 10827,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13200:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "13189:13:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10833,
"name": "_anchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10798,
"src": "13241:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10835,
"indexExpression": {
"argumentTypes": null,
"id": 10834,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13250:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "13241:11:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10832,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "13224:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10836,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13224:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 22838,
"src": "13224:35:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 10838,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13224:37:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10831,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "13216:8:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_payable_$",
"typeString": "type(address payable)"
},
"typeName": {
"id": 10830,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13216:8:10",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 10839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13216:46:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 10829,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "13205:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 10840,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13205:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"src": "13189:74:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10842,
"nodeType": "ExpressionStatement",
"src": "13189:74:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10822,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10819,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13150:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10820,
"name": "_anchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10798,
"src": "13154:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "13154:15:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "13150:19:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10843,
"initializationExpression": {
"assignments": [
10816
],
"declarations": [
{
"constant": false,
"id": 10816,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10843,
"src": "13135:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10815,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13135:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10818,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10817,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "13147:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "13135:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10824,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "13171:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10823,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10816,
"src": "13171:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10825,
"nodeType": "ExpressionStatement",
"src": "13171:3:10"
},
"nodeType": "ForStatement",
"src": "13130:133:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10844,
"name": "converters",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10807,
"src": "13283:10:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"functionReturnParameters": 10803,
"id": 10845,
"nodeType": "Return",
"src": "13276:17:10"
}
]
},
"documentation": {
"id": 10795,
"nodeType": "StructuredDocumentation",
"src": "12656:277:10",
"text": " @dev returns a list of converters for a given list of anchors\n this is a utility function that can be used to reduce the number of calls to the contract\n @param _anchors list of converter anchors\n @return list of converters"
},
"functionSelector": "610c0b05",
"id": 10847,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertersByAnchors",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10799,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10798,
"mutability": "mutable",
"name": "_anchors",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10847,
"src": "12971:25:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10796,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12971:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10797,
"length": null,
"nodeType": "ArrayTypeName",
"src": "12971:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12970:27:10"
},
"returnParameters": {
"id": 10803,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10802,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10847,
"src": "13019:19:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10800,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13019:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10801,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13019:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13018:21:10"
},
"scope": 11667,
"src": "12939:362:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10866,
"nodeType": "Block",
"src": "13579:123:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 10864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10855,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10850,
"src": "13645:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "token",
"nodeType": "MemberAccess",
"referencedDeclaration": 13297,
"src": "13645:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function () view external returns (contract IConverterAnchor)"
}
},
"id": 10857,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13645:18:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 10858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 22838,
"src": "13645:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 10859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13645:26:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10862,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10850,
"src": "13683:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 10861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "13675:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 10860,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13675:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 10863,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13675:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "13645:49:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10854,
"id": 10865,
"nodeType": "Return",
"src": "13638:56:10"
}
]
},
"documentation": {
"id": 10848,
"nodeType": "StructuredDocumentation",
"src": "13309:188:10",
"text": " @dev checks whether or not a given converter is valid\n @param _converter converter\n @return true if the given converter is valid, false if not"
},
"functionSelector": "954254f5",
"id": 10867,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConverterValid",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10851,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10850,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10867,
"src": "13529:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10849,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "13529:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13528:23:10"
},
"returnParameters": {
"id": 10854,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10853,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10867,
"src": "13573:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10852,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "13573:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13572:6:10"
},
"scope": 11667,
"src": "13503:199:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 10949,
"nodeType": "Block",
"src": "14068:799:10",
"statements": [
{
"assignments": [
10876
],
"declarations": [
{
"constant": false,
"id": 10876,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10949,
"src": "14079:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10875,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14079:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10880,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 10877,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14107:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "14107:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 10879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14107:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14079:60:10"
},
{
"assignments": [
10884
],
"declarations": [
{
"constant": false,
"id": 10884,
"mutability": "mutable",
"name": "reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10949,
"src": "14150:34:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10882,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "14150:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10883,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14150:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10890,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10888,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14205:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10887,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "14187:17:10",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$",
"typeString": "function (uint256) pure returns (contract IERC20Token[] memory)"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10885,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "14191:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10886,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14191:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
}
},
"id": 10889,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14187:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14150:73:10"
},
{
"assignments": [
10895
],
"declarations": [
{
"constant": false,
"id": 10895,
"mutability": "mutable",
"name": "reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10949,
"src": "14234:30:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 10893,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "14234:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10894,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14234:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10901,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10899,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14280:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10898,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "14267:12:10",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$",
"typeString": "function (uint256) pure returns (uint32[] memory)"
},
"typeName": {
"baseType": {
"id": 10896,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "14271:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10897,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14271:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
}
},
"id": 10900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14267:31:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14234:64:10"
},
{
"body": {
"id": 10934,
"nodeType": "Block",
"src": "14418:206:10",
"statements": [
{
"assignments": [
10913
],
"declarations": [
{
"constant": false,
"id": 10913,
"mutability": "mutable",
"name": "reserveToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10934,
"src": "14433:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 10912,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "14433:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10918,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10916,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14487:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 10914,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14460:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 10915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13334,
"src": "14460:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 10917,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14460:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14433:56:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10923,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10919,
"name": "reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10884,
"src": "14504:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10921,
"indexExpression": {
"argumentTypes": null,
"id": 10920,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14518:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "14504:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 10922,
"name": "reserveToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10913,
"src": "14523:12:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"src": "14504:31:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10924,
"nodeType": "ExpressionStatement",
"src": "14504:31:10"
},
{
"expression": {
"argumentTypes": null,
"id": 10932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10925,
"name": "reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10895,
"src": "14550:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10927,
"indexExpression": {
"argumentTypes": null,
"id": 10926,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14565:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "14550:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10929,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14587:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 10930,
"name": "reserveToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10913,
"src": "14599:12:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 10928,
"name": "getReserveWeight",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11465,
"src": "14570:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
"typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
}
},
"id": 10931,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14570:42:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "14550:62:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10933,
"nodeType": "ExpressionStatement",
"src": "14550:62:10"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10908,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10906,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14390:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 10907,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14394:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "14390:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10935,
"initializationExpression": {
"assignments": [
10903
],
"declarations": [
{
"constant": false,
"id": 10903,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10935,
"src": "14375:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10902,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14375:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10905,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10904,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14387:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "14375:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14413:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10909,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10903,
"src": "14413:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10911,
"nodeType": "ExpressionStatement",
"src": "14413:3:10"
},
"nodeType": "ForStatement",
"src": "14370:254:10"
},
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"id": 10947,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10938,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10870,
"src": "14774:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 10939,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10876,
"src": "14786:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 10937,
"name": "getConverterType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11520,
"src": "14757:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
"typeString": "function (contract IConverter,uint256) view returns (uint16)"
}
},
"id": 10940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14757:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 10941,
"name": "reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10884,
"src": "14806:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 10942,
"name": "reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10895,
"src": "14821:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 10936,
"name": "getLiquidityPoolByConfig",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11031,
"src": "14732:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
}
},
"id": 10943,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14732:104:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 10945,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14857:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 10944,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "14840:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 10946,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14840:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"src": "14732:127:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 10874,
"id": 10948,
"nodeType": "Return",
"src": "14725:134:10"
}
]
},
"documentation": {
"id": 10868,
"nodeType": "StructuredDocumentation",
"src": "13710:260:10",
"text": " @dev checks if a liquidity pool with given configuration is already registered\n @param _converter converter with specific configuration\n @return if a liquidity pool with the same configuration is already registered"
},
"functionSelector": "8f1d0e1a",
"id": 10950,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isSimilarLiquidityPoolRegistered",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10871,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10870,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10950,
"src": "14018:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 10869,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "14018:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14017:23:10"
},
"returnParameters": {
"id": 10874,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10873,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 10950,
"src": "14062:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 10872,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "14062:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14061:6:10"
},
"scope": 11667,
"src": "13976:891:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11030,
"nodeType": "Block",
"src": "15390:869:10",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 10973,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10964,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "15483:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10965,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15483:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10966,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10959,
"src": "15508:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 10967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15508:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "15483:47:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10972,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10969,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "15534:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 10970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15534:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 10971,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15558:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "15534:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "15483:76:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11025,
"nodeType": "IfStatement",
"src": "15479:734:10",
"trueBody": {
"id": 11024,
"nodeType": "Block",
"src": "15561:652:10",
"statements": [
{
"assignments": [
10978
],
"declarations": [
{
"constant": false,
"id": 10978,
"mutability": "mutable",
"name": "convertibleTokenAnchors",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11024,
"src": "15651:40:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 10976,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15651:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10977,
"length": null,
"nodeType": "ArrayTypeName",
"src": "15651:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10982,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 10980,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "15723:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
],
"id": 10979,
"name": "getLeastFrequentTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11380,
"src": "15694:28:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token[] memory) view returns (address[] memory)"
}
},
"id": 10981,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "15694:44:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15651:87:10"
},
{
"body": {
"id": 11022,
"nodeType": "Block",
"src": "15881:321:10",
"statements": [
{
"assignments": [
10995
],
"declarations": [
{
"constant": false,
"id": 10995,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11022,
"src": "15900:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10994,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "15900:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11001,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 10997,
"name": "convertibleTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10978,
"src": "15943:23:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10999,
"indexExpression": {
"argumentTypes": null,
"id": 10998,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10984,
"src": "15967:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "15943:26:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 10996,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "15926:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 11000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "15926:44:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15900:70:10"
},
{
"assignments": [
11003
],
"declarations": [
{
"constant": false,
"id": 11003,
"mutability": "mutable",
"name": "converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11022,
"src": "15989:20:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11002,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "15989:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11012,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11007,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10995,
"src": "16031:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"id": 11008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 22838,
"src": "16031:12:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 11009,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16031:14:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11006,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "16023:8:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_payable_$",
"typeString": "type(address payable)"
},
"typeName": {
"id": 11005,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16023:8:10",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11010,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16023:23:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 11004,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "16012:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 11011,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16012:35:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15989:58:10"
},
{
"condition": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11014,
"name": "converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11003,
"src": "16100:9:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 11015,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10953,
"src": "16111:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 11016,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10956,
"src": "16118:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 11017,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10959,
"src": "16134:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 11013,
"name": "isConverterReserveConfigEqual",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11446,
"src": "16070:29:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_bool_$",
"typeString": "function (contract IConverter,uint16,contract IERC20Token[] memory,uint32[] memory) view returns (bool)"
}
},
"id": 11018,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16070:80:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11021,
"nodeType": "IfStatement",
"src": "16066:120:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 11019,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10995,
"src": "16180:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10963,
"id": 11020,
"nodeType": "Return",
"src": "16173:13:10"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 10990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 10987,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10984,
"src": "15840:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 10988,
"name": "convertibleTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10978,
"src": "15844:23:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 10989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "15844:30:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "15840:34:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11023,
"initializationExpression": {
"assignments": [
10984
],
"declarations": [
{
"constant": false,
"id": 10984,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11023,
"src": "15825:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10983,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15825:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 10986,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 10985,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15837:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "15825:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 10992,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "15876:3:10",
"subExpression": {
"argumentTypes": null,
"id": 10991,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10984,
"src": "15876:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10993,
"nodeType": "ExpressionStatement",
"src": "15876:3:10"
},
"nodeType": "ForStatement",
"src": "15820:382:10"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 11027,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "16249:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 11026,
"name": "IConverterAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13349,
"src": "16232:16:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "type(contract IConverterAnchor)"
}
},
"id": 11028,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16232:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 10963,
"id": 11029,
"nodeType": "Return",
"src": "16225:26:10"
}
]
},
"documentation": {
"id": 10951,
"nodeType": "StructuredDocumentation",
"src": "14875:352:10",
"text": " @dev searches for a liquidity pool with specific configuration\n @param _type converter type, see ConverterBase contract main doc\n @param _reserveTokens reserve tokens\n @param _reserveWeights reserve weights\n @return the liquidity pool, or zero if no such liquidity pool exists"
},
"functionSelector": "1d3fccd5",
"id": 11031,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolByConfig",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 10960,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10953,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15267:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 10952,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "15267:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10956,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15281:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 10954,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "15281:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 10955,
"length": null,
"nodeType": "ArrayTypeName",
"src": "15281:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 10959,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15318:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 10957,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "15318:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 10958,
"length": null,
"nodeType": "ArrayTypeName",
"src": "15318:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15266:84:10"
},
"returnParameters": {
"id": 10963,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10962,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11031,
"src": "15372:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 10961,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "15372:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15371:18:10"
},
"scope": 11667,
"src": "15233:1026:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11053,
"nodeType": "Block",
"src": "16489:149:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11042,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11036,
"src": "16537:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11039,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11034,
"src": "16500:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11041,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13509,
"src": "16500:36:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16500:45:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11044,
"nodeType": "ExpressionStatement",
"src": "16500:45:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11046,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11036,
"src": "16582:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11045,
"name": "ConverterAnchorAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10265,
"src": "16561:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16561:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11048,
"nodeType": "EmitStatement",
"src": "16556:34:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11050,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11036,
"src": "16622:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11049,
"name": "SmartTokenAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10299,
"src": "16606:15:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11051,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16606:24:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11052,
"nodeType": "EmitStatement",
"src": "16601:29:10"
}
]
},
"documentation": {
"id": 11032,
"nodeType": "StructuredDocumentation",
"src": "16267:115:10",
"text": " @dev adds a converter anchor to the registry\n @param _anchor converter anchor"
},
"id": 11054,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addAnchor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11037,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11034,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11054,
"src": "16407:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11033,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "16407:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11036,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11054,
"src": "16454:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11035,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "16454:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16406:73:10"
},
"returnParameters": {
"id": 11038,
"nodeType": "ParameterList",
"parameters": [],
"src": "16489:0:10"
},
"scope": 11667,
"src": "16388:250:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11076,
"nodeType": "Block",
"src": "16876:156:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11065,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11059,
"src": "16927:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11062,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11057,
"src": "16887:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "removeSmartToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13514,
"src": "16887:39:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11066,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16887:48:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11067,
"nodeType": "ExpressionStatement",
"src": "16887:48:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11069,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11059,
"src": "16974:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11068,
"name": "ConverterAnchorRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10270,
"src": "16951:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11070,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16951:31:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11071,
"nodeType": "EmitStatement",
"src": "16946:36:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11073,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11059,
"src": "17016:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11072,
"name": "SmartTokenRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10304,
"src": "16998:17:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "16998:26:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11075,
"nodeType": "EmitStatement",
"src": "16993:31:10"
}
]
},
"documentation": {
"id": 11055,
"nodeType": "StructuredDocumentation",
"src": "16646:120:10",
"text": " @dev removes a converter anchor from the registry\n @param _anchor converter anchor"
},
"id": 11077,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeAnchor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11060,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11057,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11077,
"src": "16794:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11056,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "16794:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11059,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11077,
"src": "16841:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11058,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "16841:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16793:73:10"
},
"returnParameters": {
"id": 11061,
"nodeType": "ParameterList",
"parameters": [],
"src": "16876:0:10"
},
"scope": 11667,
"src": "16772:260:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11095,
"nodeType": "Block",
"src": "17308:136:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11088,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11082,
"src": "17359:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11085,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11080,
"src": "17319:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11087,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13519,
"src": "17319:39:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11089,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17319:61:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11090,
"nodeType": "ExpressionStatement",
"src": "17319:61:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11092,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11082,
"src": "17415:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11091,
"name": "LiquidityPoolAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10275,
"src": "17396:18:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17396:40:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11094,
"nodeType": "EmitStatement",
"src": "17391:45:10"
}
]
},
"documentation": {
"id": 11078,
"nodeType": "StructuredDocumentation",
"src": "17040:141:10",
"text": " @dev adds a liquidity pool to the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
},
"id": 11096,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11083,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11080,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11096,
"src": "17213:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11079,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "17213:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11082,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11096,
"src": "17260:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11081,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "17260:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17212:86:10"
},
"returnParameters": {
"id": 11084,
"nodeType": "ParameterList",
"parameters": [],
"src": "17308:0:10"
},
"scope": 11667,
"src": "17187:257:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11114,
"nodeType": "Block",
"src": "17728:141:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11107,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11101,
"src": "17782:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11104,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11099,
"src": "17739:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "removeLiquidityPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 13524,
"src": "17739:42:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor) external"
}
},
"id": 11108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17739:64:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11109,
"nodeType": "ExpressionStatement",
"src": "17739:64:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11111,
"name": "_liquidityPoolAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11101,
"src": "17840:20:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11110,
"name": "LiquidityPoolRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10280,
"src": "17819:20:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterAnchor)"
}
},
"id": 11112,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "17819:42:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11113,
"nodeType": "EmitStatement",
"src": "17814:47:10"
}
]
},
"documentation": {
"id": 11097,
"nodeType": "StructuredDocumentation",
"src": "17452:146:10",
"text": " @dev removes a liquidity pool from the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
},
"id": 11115,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeLiquidityPool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11099,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11115,
"src": "17633:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11098,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "17633:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11101,
"mutability": "mutable",
"name": "_liquidityPoolAnchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11115,
"src": "17680:37:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11100,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "17680:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17632:86:10"
},
"returnParameters": {
"id": 11103,
"nodeType": "ParameterList",
"parameters": [],
"src": "17728:0:10"
},
"scope": 11667,
"src": "17604:265:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11137,
"nodeType": "Block",
"src": "18220:154:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11128,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11120,
"src": "18274:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11129,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11122,
"src": "18293:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11125,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11118,
"src": "18231:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13531,
"src": "18231:42:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
}
},
"id": 11130,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18231:70:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11131,
"nodeType": "ExpressionStatement",
"src": "18231:70:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11133,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11120,
"src": "18339:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11134,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11122,
"src": "18358:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11132,
"name": "ConvertibleTokenAdded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10287,
"src": "18317:21:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18317:49:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11136,
"nodeType": "EmitStatement",
"src": "18312:54:10"
}
]
},
"documentation": {
"id": 11116,
"nodeType": "StructuredDocumentation",
"src": "17877:195:10",
"text": " @dev adds a convertible token to the registry\n @param _convertibleToken convertible token\n @param _anchor associated converter anchor"
},
"id": 11138,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11123,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11118,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11138,
"src": "18107:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11117,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "18107:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11120,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11138,
"src": "18154:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11119,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "18154:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11122,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11138,
"src": "18185:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11121,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "18185:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18106:104:10"
},
"returnParameters": {
"id": 11124,
"nodeType": "ParameterList",
"parameters": [],
"src": "18220:0:10"
},
"scope": 11667,
"src": "18078:296:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11160,
"nodeType": "Block",
"src": "18733:159:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11151,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11143,
"src": "18790:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11152,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11145,
"src": "18809:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"expression": {
"argumentTypes": null,
"id": 11148,
"name": "_converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11141,
"src": "18744:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "removeConvertibleToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 13538,
"src": "18744:45:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
}
},
"id": 11153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18744:73:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11154,
"nodeType": "ExpressionStatement",
"src": "18744:73:10"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11156,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11143,
"src": "18857:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11157,
"name": "_anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11145,
"src": "18876:7:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11155,
"name": "ConvertibleTokenRemoved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10294,
"src": "18833:23:10",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "18833:51:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11159,
"nodeType": "EmitStatement",
"src": "18828:56:10"
}
]
},
"documentation": {
"id": 11139,
"nodeType": "StructuredDocumentation",
"src": "18382:200:10",
"text": " @dev removes a convertible token from the registry\n @param _convertibleToken convertible token\n @param _anchor associated converter anchor"
},
"id": 11161,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeConvertibleToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11146,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11141,
"mutability": "mutable",
"name": "_converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11161,
"src": "18620:45:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11140,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "18620:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11143,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11161,
"src": "18667:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11142,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "18667:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11145,
"mutability": "mutable",
"name": "_anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11161,
"src": "18698:24:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11144,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "18698:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18619:104:10"
},
"returnParameters": {
"id": 11147,
"nodeType": "ParameterList",
"parameters": [],
"src": "18733:0:10"
},
"scope": 11667,
"src": "18588:304:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 11233,
"nodeType": "Block",
"src": "18961:749:10",
"statements": [
{
"assignments": [
11167
],
"declarations": [
{
"constant": false,
"id": 11167,
"mutability": "mutable",
"name": "converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11233,
"src": "18972:44:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11166,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "18972:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11173,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11170,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "19052:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11169,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "19042:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 11171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19042:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11168,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "19019:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 11172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19019:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "18972:105:10"
},
{
"assignments": [
11175
],
"declarations": [
{
"constant": false,
"id": 11175,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11233,
"src": "19088:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11174,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "19088:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11181,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11177,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11163,
"src": "19125:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 11176,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "19114:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 11178,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19114:22:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "token",
"nodeType": "MemberAccess",
"referencedDeclaration": 13297,
"src": "19114:28:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function () view external returns (contract IConverterAnchor)"
}
},
"id": 11180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19114:30:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19088:56:10"
},
{
"assignments": [
11183
],
"declarations": [
{
"constant": false,
"id": 11183,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11233,
"src": "19155:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11182,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19155:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11187,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11184,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11163,
"src": "19183:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "19183:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 11186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19183:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19155:60:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11189,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19275:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11190,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19298:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11188,
"name": "addAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11054,
"src": "19265:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11191,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19265:40:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11192,
"nodeType": "ExpressionStatement",
"src": "19265:40:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11193,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11183,
"src": "19320:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11194,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19340:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "19320:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11202,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19452:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11206,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19495:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11205,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "19487:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11204,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19487:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11207,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19487:15:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11203,
"name": "ISmartToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21182,
"src": "19475:11:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
"typeString": "type(contract ISmartToken)"
}
},
"id": 11208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19475:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
}
},
{
"argumentTypes": null,
"id": 11209,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19505:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11201,
"name": "addConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11138,
"src": "19432:19:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19432:80:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11211,
"nodeType": "ExpressionStatement",
"src": "19432:80:10"
},
"id": 11212,
"nodeType": "IfStatement",
"src": "19316:196:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11197,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19373:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11198,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19396:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11196,
"name": "addLiquidityPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11096,
"src": "19356:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19356:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11200,
"nodeType": "ExpressionStatement",
"src": "19356:47:10"
}
},
{
"body": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11224,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11167,
"src": "19641:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11227,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11214,
"src": "19691:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 11225,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11163,
"src": "19664:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13334,
"src": "19664:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 11228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19664:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11229,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11175,
"src": "19695:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11223,
"name": "addConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11138,
"src": "19621:19:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19621:81:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11231,
"nodeType": "ExpressionStatement",
"src": "19621:81:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11217,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11214,
"src": "19580:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 11218,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11183,
"src": "19584:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "19580:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11232,
"initializationExpression": {
"assignments": [
11214
],
"declarations": [
{
"constant": false,
"id": 11214,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11232,
"src": "19565:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11213,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19565:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11216,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11215,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19577:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "19565:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "19603:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11220,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11214,
"src": "19603:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11222,
"nodeType": "ExpressionStatement",
"src": "19603:3:10"
},
"nodeType": "ForStatement",
"src": "19560:142:10"
}
]
},
"documentation": null,
"id": 11234,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addConverterInternal",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11164,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11163,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11234,
"src": "18930:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11162,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "18930:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18929:23:10"
},
"returnParameters": {
"id": 11165,
"nodeType": "ParameterList",
"parameters": [],
"src": "18961:0:10"
},
"scope": 11667,
"src": "18900:810:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11306,
"nodeType": "Block",
"src": "19782:767:10",
"statements": [
{
"assignments": [
11240
],
"declarations": [
{
"constant": false,
"id": 11240,
"mutability": "mutable",
"name": "converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11306,
"src": "19793:44:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11239,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "19793:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11246,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11243,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "19873:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11242,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "19863:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 11244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19863:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11241,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "19840:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 11245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19840:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19793:105:10"
},
{
"assignments": [
11248
],
"declarations": [
{
"constant": false,
"id": 11248,
"mutability": "mutable",
"name": "anchor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11306,
"src": "19909:23:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11247,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "19909:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11254,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11250,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11236,
"src": "19946:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 11249,
"name": "IConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13340,
"src": "19935:10:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
"typeString": "type(contract IConverter)"
}
},
"id": 11251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19935:22:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "token",
"nodeType": "MemberAccess",
"referencedDeclaration": 13297,
"src": "19935:28:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function () view external returns (contract IConverterAnchor)"
}
},
"id": 11253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "19935:30:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19909:56:10"
},
{
"assignments": [
11256
],
"declarations": [
{
"constant": false,
"id": 11256,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11306,
"src": "19976:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11255,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19976:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11260,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11257,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11236,
"src": "20004:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "20004:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 11259,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20004:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19976:60:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11262,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20102:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11263,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20125:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11261,
"name": "removeAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11077,
"src": "20089:12:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20089:43:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11265,
"nodeType": "ExpressionStatement",
"src": "20089:43:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11266,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11256,
"src": "20147:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11267,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20167:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "20147:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11275,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20285:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11279,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20328:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11278,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "20320:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11277,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20320:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20320:15:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11276,
"name": "ISmartToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21182,
"src": "20308:11:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
"typeString": "type(contract ISmartToken)"
}
},
"id": 11281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20308:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
}
},
{
"argumentTypes": null,
"id": 11282,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20338:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_ISmartToken_$21182",
"typeString": "contract ISmartToken"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11274,
"name": "removeConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11161,
"src": "20262:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11283,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20262:83:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11284,
"nodeType": "ExpressionStatement",
"src": "20262:83:10"
},
"id": 11285,
"nodeType": "IfStatement",
"src": "20143:202:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11270,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20203:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"id": 11271,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20226:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11269,
"name": "removeLiquidityPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11115,
"src": "20183:19:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
}
},
"id": 11272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20183:50:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11273,
"nodeType": "ExpressionStatement",
"src": "20183:50:10"
}
},
{
"body": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11297,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11240,
"src": "20480:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11300,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11287,
"src": "20530:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 11298,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11236,
"src": "20503:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13334,
"src": "20503:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
"typeString": "function (uint256) view external returns (contract IERC20Token)"
}
},
"id": 11301,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20503:29:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11302,
"name": "anchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11248,
"src": "20534:6:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
],
"id": 11296,
"name": "removeConvertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11161,
"src": "20457:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
"typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
}
},
"id": 11303,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20457:84:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11304,
"nodeType": "ExpressionStatement",
"src": "20457:84:10"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11290,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11287,
"src": "20416:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 11291,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11256,
"src": "20420:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "20416:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11305,
"initializationExpression": {
"assignments": [
11287
],
"declarations": [
{
"constant": false,
"id": 11287,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11305,
"src": "20401:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11286,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20401:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11289,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11288,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20413:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "20401:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11294,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "20439:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11293,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11287,
"src": "20439:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11295,
"nodeType": "ExpressionStatement",
"src": "20439:3:10"
},
"nodeType": "ForStatement",
"src": "20396:145:10"
}
]
},
"documentation": null,
"id": 11307,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "removeConverterInternal",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11237,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11236,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11307,
"src": "19751:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11235,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "19751:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "19750:23:10"
},
"returnParameters": {
"id": 11238,
"nodeType": "ParameterList",
"parameters": [],
"src": "19782:0:10"
},
"scope": 11667,
"src": "19718:831:10",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11379,
"nodeType": "Block",
"src": "20672:819:10",
"statements": [
{
"assignments": [
11317
],
"declarations": [
{
"constant": false,
"id": 11317,
"mutability": "mutable",
"name": "converterRegistryData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11379,
"src": "20683:44:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
},
"typeName": {
"contractScope": null,
"id": 11316,
"name": "IConverterRegistryData",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13647,
"src": "20683:22:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11323,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11320,
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21548,
"src": "20763:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11319,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "20753:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 11321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20753:34:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11318,
"name": "IConverterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13647,
"src": "20730:22:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
"typeString": "type(contract IConverterRegistryData)"
}
},
"id": 11322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20730:58:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "20683:105:10"
},
{
"assignments": [
11325
],
"declarations": [
{
"constant": false,
"id": 11325,
"mutability": "mutable",
"name": "minAnchorCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11379,
"src": "20799:22:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11324,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20799:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11332,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11328,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "20881:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11330,
"indexExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11329,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20896:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "20881:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11326,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11317,
"src": "20824:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13620,
"src": "20824:56:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view external returns (uint256)"
}
},
"id": 11331,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "20824:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "20799:100:10"
},
{
"assignments": [
11334
],
"declarations": [
{
"constant": false,
"id": 11334,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11379,
"src": "20910:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11333,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20910:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11336,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11335,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "20926:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "20910:17:10"
},
{
"body": {
"id": 11370,
"nodeType": "Block",
"src": "21078:311:10",
"statements": [
{
"assignments": [
11349
],
"declarations": [
{
"constant": false,
"id": 11349,
"mutability": "mutable",
"name": "convertibleTokenAnchorCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11370,
"src": "21093:35:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11348,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21093:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11356,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11352,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "21188:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11354,
"indexExpression": {
"argumentTypes": null,
"id": 11353,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21203:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "21188:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11350,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11317,
"src": "21131:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11351,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13620,
"src": "21131:56:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view external returns (uint256)"
}
},
"id": 11355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21131:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21093:113:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11359,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11357,
"name": "minAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11325,
"src": "21225:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 11358,
"name": "convertibleTokenAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11349,
"src": "21242:27:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21225:44:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11369,
"nodeType": "IfStatement",
"src": "21221:157:10",
"trueBody": {
"id": 11368,
"nodeType": "Block",
"src": "21271:107:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 11362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 11360,
"name": "minAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11325,
"src": "21290:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 11361,
"name": "convertibleTokenAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11349,
"src": "21307:27:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21290:44:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11363,
"nodeType": "ExpressionStatement",
"src": "21290:44:10"
},
{
"expression": {
"argumentTypes": null,
"id": 11366,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 11364,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11334,
"src": "21353:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 11365,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21361:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21353:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11367,
"nodeType": "ExpressionStatement",
"src": "21353:9:10"
}
]
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11344,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11341,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21046:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11342,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "21050:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "21050:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21046:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11371,
"initializationExpression": {
"assignments": [
11338
],
"declarations": [
{
"constant": false,
"id": 11338,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11371,
"src": "21031:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11337,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21031:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11340,
"initialValue": {
"argumentTypes": null,
"hexValue": "31",
"id": 11339,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21043:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"nodeType": "VariableDeclarationStatement",
"src": "21031:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "21073:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11345,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11338,
"src": "21073:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11347,
"nodeType": "ExpressionStatement",
"src": "21073:3:10"
},
"nodeType": "ForStatement",
"src": "21026:363:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11374,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11310,
"src": "21461:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11376,
"indexExpression": {
"argumentTypes": null,
"id": 11375,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11334,
"src": "21476:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "21461:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11372,
"name": "converterRegistryData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11317,
"src": "21408:21:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
"typeString": "contract IConverterRegistryData"
}
},
"id": 11373,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getConvertibleTokenSmartTokens",
"nodeType": "MemberAccess",
"referencedDeclaration": 13628,
"src": "21408:52:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token) view external returns (address[] memory)"
}
},
"id": 11377,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21408:75:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 11315,
"id": 11378,
"nodeType": "Return",
"src": "21401:82:10"
}
]
},
"documentation": null,
"id": 11380,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLeastFrequentTokenAnchors",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11311,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11310,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11380,
"src": "20595:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11308,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "20595:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 11309,
"length": null,
"nodeType": "ArrayTypeName",
"src": "20595:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20594:37:10"
},
"returnParameters": {
"id": 11315,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11314,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11380,
"src": "20654:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11312,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20654:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11313,
"length": null,
"nodeType": "ArrayTypeName",
"src": "20654:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20653:18:10"
},
"scope": 11667,
"src": "20557:934:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11445,
"nodeType": "Block",
"src": "21673:484:10",
"statements": [
{
"assignments": [
11396
],
"declarations": [
{
"constant": false,
"id": 11396,
"mutability": "mutable",
"name": "reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11445,
"src": "21684:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11395,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21684:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11400,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 11397,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11382,
"src": "21712:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectorTokenCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 13339,
"src": "21712:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
"typeString": "function () view external returns (uint16)"
}
},
"id": 11399,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21712:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21684:60:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"id": 11406,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11401,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11384,
"src": "21761:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11403,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11382,
"src": "21787:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"id": 11404,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11396,
"src": "21799:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 11402,
"name": "getConverterType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11520,
"src": "21770:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
"typeString": "function (contract IConverter,uint256) view returns (uint16)"
}
},
"id": 11405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "21770:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"src": "21761:56:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11409,
"nodeType": "IfStatement",
"src": "21757:87:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 11407,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21839:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 11394,
"id": 11408,
"nodeType": "Return",
"src": "21832:12:10"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11413,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11410,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11387,
"src": "21861:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "21861:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 11412,
"name": "reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11396,
"src": "21886:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21861:42:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11416,
"nodeType": "IfStatement",
"src": "21857:73:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 11414,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21925:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 11394,
"id": 11415,
"nodeType": "Return",
"src": "21918:12:10"
}
},
{
"body": {
"id": 11441,
"nodeType": "Block",
"src": "21995:131:10",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 11437,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11428,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11390,
"src": "22014:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
},
"id": 11430,
"indexExpression": {
"argumentTypes": null,
"id": 11429,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "22030:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "22014:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11432,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11382,
"src": "22053:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 11433,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11387,
"src": "22065:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11435,
"indexExpression": {
"argumentTypes": null,
"id": 11434,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "22080:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "22065:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11431,
"name": "getReserveWeight",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11465,
"src": "22036:16:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
"typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
}
},
"id": 11436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22036:47:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "22014:69:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11440,
"nodeType": "IfStatement",
"src": "22010:104:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 11438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22109:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 11394,
"id": 11439,
"nodeType": "Return",
"src": "22102:12:10"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11424,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11421,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "21963:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11422,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11387,
"src": "21967:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11423,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "21967:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "21963:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11442,
"initializationExpression": {
"assignments": [
11418
],
"declarations": [
{
"constant": false,
"id": 11418,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11442,
"src": "21948:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11417,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21948:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11420,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 11419,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "21960:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "21948:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 11426,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "21990:3:10",
"subExpression": {
"argumentTypes": null,
"id": 11425,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11418,
"src": "21990:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11427,
"nodeType": "ExpressionStatement",
"src": "21990:3:10"
},
"nodeType": "ForStatement",
"src": "21943:183:10"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 11443,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22145:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 11394,
"id": 11444,
"nodeType": "Return",
"src": "22138:11:10"
}
]
},
"documentation": null,
"id": 11446,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConverterReserveConfigEqual",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11391,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11382,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21538:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11381,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "21538:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11384,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21561:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 11383,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "21561:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11387,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21575:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11385,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "21575:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 11386,
"length": null,
"nodeType": "ArrayTypeName",
"src": "21575:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11390,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21612:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 11388,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "21612:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 11389,
"length": null,
"nodeType": "ArrayTypeName",
"src": "21612:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21537:107:10"
},
"returnParameters": {
"id": 11394,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11393,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11446,
"src": "21667:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11392,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "21667:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21666:6:10"
},
"scope": 11667,
"src": "21499:658:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11464,
"nodeType": "Block",
"src": "22400:102:10",
"statements": [
{
"assignments": [
null,
11456,
null,
null,
null
],
"declarations": [
null,
{
"constant": false,
"id": 11456,
"mutability": "mutable",
"name": "weight",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11464,
"src": "22414:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 11455,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "22414:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
null,
null,
null
],
"id": 11461,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11459,
"name": "_reserveToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11450,
"src": "22456:13:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"expression": {
"argumentTypes": null,
"id": 11457,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11448,
"src": "22434:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11458,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "connectors",
"nodeType": "MemberAccess",
"referencedDeclaration": 13320,
"src": "22434:21:10",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
"typeString": "function (contract IERC20Token) view external returns (uint256,uint32,bool,bool,bool)"
}
},
"id": 11460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22434:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
"typeString": "tuple(uint256,uint32,bool,bool,bool)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22411:59:10"
},
{
"expression": {
"argumentTypes": null,
"id": 11462,
"name": "weight",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11456,
"src": "22488:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"functionReturnParameters": 11454,
"id": 11463,
"nodeType": "Return",
"src": "22481:13:10"
}
]
},
"documentation": null,
"id": 11465,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getReserveWeight",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11451,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11448,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11465,
"src": "22320:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11447,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "22320:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11450,
"mutability": "mutable",
"name": "_reserveToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11465,
"src": "22343:25:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11449,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "22343:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22319:50:10"
},
"returnParameters": {
"id": 11454,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11453,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11465,
"src": "22392:6:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 11452,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "22392:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22391:8:10"
},
"scope": 11667,
"src": "22294:208:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"constant": true,
"id": 11473,
"mutability": "constant",
"name": "CONVERTER_TYPE_FUNC_SELECTOR",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11667,
"src": "22510:91:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 11466,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "22510:6:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "636f6e766572746572547970652829",
"id": 11470,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22582:17:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
"typeString": "literal_string \"converterType()\""
},
"value": "converterType()"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
"typeString": "literal_string \"converterType()\""
}
],
"id": 11469,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "22572:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 11471,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22572:28:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 11468,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "22565:6:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes4_$",
"typeString": "type(bytes4)"
},
"typeName": {
"id": 11467,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "22565:6:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11472,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22565:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "private"
},
{
"body": {
"id": 11519,
"nodeType": "Block",
"src": "22843:297:10",
"statements": [
{
"assignments": [
11483,
11485
],
"declarations": [
{
"constant": false,
"id": 11483,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11519,
"src": "22855:12:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11482,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "22855:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11485,
"mutability": "mutable",
"name": "returnData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11519,
"src": "22869:23:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 11484,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "22869:5:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 11496,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11493,
"name": "CONVERTER_TYPE_FUNC_SELECTOR",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11473,
"src": "22950:28:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
],
"expression": {
"argumentTypes": null,
"id": 11491,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "22927:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11492,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "22927:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 11494,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22927:52:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11488,
"name": "_converter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11475,
"src": "22904:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
],
"id": 11487,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "22896:7:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11486,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "22896:7:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 11489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22896:19:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 11490,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "staticcall",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "22896:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) view returns (bool,bytes memory)"
}
},
"id": 11495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "22896:84:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22854:126:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 11502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11497,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11483,
"src": "22995:7:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11501,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11498,
"name": "returnData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11485,
"src": "23006:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 11499,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "23006:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3332",
"id": 11500,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23027:2:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "23006:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "22995:34:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 11511,
"nodeType": "IfStatement",
"src": "22991:93:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11505,
"name": "returnData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11485,
"src": "23063:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 11507,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "23076:6:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint16_$",
"typeString": "type(uint16)"
},
"typeName": {
"id": 11506,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "23076:6:10",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
}
],
"id": 11508,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "23075:8:10",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint16_$",
"typeString": "type(uint16)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_type$_t_uint16_$",
"typeString": "type(uint16)"
}
],
"expression": {
"argumentTypes": null,
"id": 11503,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "23052:3:10",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11504,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "decode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "23052:10:10",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 11509,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23052:32:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"functionReturnParameters": 11481,
"id": 11510,
"nodeType": "Return",
"src": "23045:39:10"
}
},
{
"expression": {
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 11512,
"name": "_reserveTokenCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11477,
"src": "23102:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11513,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23123:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "23102:22:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11516,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23131:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"id": 11517,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "23102:30:10",
"trueExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11515,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "23127:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 11481,
"id": 11518,
"nodeType": "Return",
"src": "23095:37:10"
}
]
},
"documentation": null,
"id": 11520,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConverterType",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11478,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11475,
"mutability": "mutable",
"name": "_converter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11520,
"src": "22762:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 11474,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "22762:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11477,
"mutability": "mutable",
"name": "_reserveTokenCount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11520,
"src": "22785:26:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11476,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22785:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22761:51:10"
},
"returnParameters": {
"id": 11481,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11480,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11520,
"src": "22835:6:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 11479,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "22835:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22834:8:10"
},
"scope": 11667,
"src": "22736:404:10",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 11529,
"nodeType": "Block",
"src": "23296:42:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 11526,
"name": "getAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10514,
"src": "23314:14:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 11527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23314:16:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 11525,
"id": 11528,
"nodeType": "Return",
"src": "23307:23:10"
}
]
},
"documentation": {
"id": 11521,
"nodeType": "StructuredDocumentation",
"src": "23148:82:10",
"text": " @dev deprecated, backward compatibility, use `getAnchorCount`"
},
"functionSelector": "e571049b",
"id": 11530,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11522,
"nodeType": "ParameterList",
"parameters": [],
"src": "23263:2:10"
},
"returnParameters": {
"id": 11525,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11524,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11530,
"src": "23287:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11523,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23287:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23286:9:10"
},
"scope": 11667,
"src": "23236:102:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11540,
"nodeType": "Block",
"src": "23495:38:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 11537,
"name": "getAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10531,
"src": "23513:10:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function () view returns (address[] memory)"
}
},
"id": 11538,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23513:12:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 11536,
"id": 11539,
"nodeType": "Return",
"src": "23506:19:10"
}
]
},
"documentation": {
"id": 11531,
"nodeType": "StructuredDocumentation",
"src": "23346:78:10",
"text": " @dev deprecated, backward compatibility, use `getAnchors`"
},
"functionSelector": "04ceaf41",
"id": 11541,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11532,
"nodeType": "ParameterList",
"parameters": [],
"src": "23453:2:10"
},
"returnParameters": {
"id": 11536,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11535,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11541,
"src": "23477:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11533,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23477:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11534,
"length": null,
"nodeType": "ArrayTypeName",
"src": "23477:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23476:18:10"
},
"scope": 11667,
"src": "23430:103:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11553,
"nodeType": "Block",
"src": "23702:43:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11550,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11544,
"src": "23730:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 11549,
"name": "getAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10550,
"src": "23720:9:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint256) view returns (contract IConverterAnchor)"
}
},
"id": 11551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23720:17:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11548,
"id": 11552,
"nodeType": "Return",
"src": "23713:24:10"
}
]
},
"documentation": {
"id": 11542,
"nodeType": "StructuredDocumentation",
"src": "23541:77:10",
"text": " @dev deprecated, backward compatibility, use `getAnchor`"
},
"functionSelector": "a109d214",
"id": 11554,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11545,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11544,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11554,
"src": "23647:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11543,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23647:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23646:16:10"
},
"returnParameters": {
"id": 11548,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11547,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11554,
"src": "23684:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11546,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "23684:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23683:18:10"
},
"scope": 11667,
"src": "23624:121:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11566,
"nodeType": "Block",
"src": "23900:42:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11563,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11557,
"src": "23927:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11562,
"name": "isAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10569,
"src": "23918:8:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 11564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "23918:16:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 11561,
"id": 11565,
"nodeType": "Return",
"src": "23911:23:10"
}
]
},
"documentation": {
"id": 11555,
"nodeType": "StructuredDocumentation",
"src": "23753:76:10",
"text": " @dev deprecated, backward compatibility, use `isAnchor`"
},
"functionSelector": "4123ef60",
"id": 11567,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11558,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11557,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11567,
"src": "23857:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11556,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23857:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23856:16:10"
},
"returnParameters": {
"id": 11561,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11560,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11567,
"src": "23894:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11559,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "23894:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23893:6:10"
},
"scope": 11667,
"src": "23835:107:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11579,
"nodeType": "Block",
"src": "24159:75:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11576,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11570,
"src": "24208:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11575,
"name": "getConvertibleTokenAnchorCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10730,
"src": "24177:30:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
"typeString": "function (contract IERC20Token) view returns (uint256)"
}
},
"id": 11577,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "24177:49:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 11574,
"id": 11578,
"nodeType": "Return",
"src": "24170:56:10"
}
]
},
"documentation": {
"id": 11568,
"nodeType": "StructuredDocumentation",
"src": "23950:98:10",
"text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
},
"functionSelector": "a43d5e94",
"id": 11580,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokenCount",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11571,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11570,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11580,
"src": "24098:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11569,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24098:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24097:31:10"
},
"returnParameters": {
"id": 11574,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11573,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11580,
"src": "24150:7:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11572,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24150:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24149:9:10"
},
"scope": 11667,
"src": "24054:180:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11593,
"nodeType": "Block",
"src": "24452:71:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11590,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11583,
"src": "24497:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
],
"id": 11589,
"name": "getConvertibleTokenAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10750,
"src": "24470:26:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
"typeString": "function (contract IERC20Token) view returns (address[] memory)"
}
},
"id": 11591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "24470:45:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 11588,
"id": 11592,
"nodeType": "Return",
"src": "24463:52:10"
}
]
},
"documentation": {
"id": 11581,
"nodeType": "StructuredDocumentation",
"src": "24242:94:10",
"text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
},
"functionSelector": "f4fb86c0",
"id": 11594,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartTokens",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11584,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11583,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11594,
"src": "24382:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11582,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24382:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24381:31:10"
},
"returnParameters": {
"id": 11588,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11587,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11594,
"src": "24434:16:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11585,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24434:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11586,
"length": null,
"nodeType": "ArrayTypeName",
"src": "24434:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24433:18:10"
},
"scope": 11667,
"src": "24342:181:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11609,
"nodeType": "Block",
"src": "24755:78:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11605,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11597,
"src": "24799:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11606,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11599,
"src": "24818:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 11604,
"name": "getConvertibleTokenAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10772,
"src": "24773:25:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (contract IERC20Token,uint256) view returns (contract IConverterAnchor)"
}
},
"id": 11607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "24773:52:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11603,
"id": 11608,
"nodeType": "Return",
"src": "24766:59:10"
}
]
},
"documentation": {
"id": 11595,
"nodeType": "StructuredDocumentation",
"src": "24531:93:10",
"text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
},
"functionSelector": "d6c4b5b2",
"id": 11610,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11600,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11597,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11610,
"src": "24669:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11596,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24669:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11599,
"mutability": "mutable",
"name": "_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11610,
"src": "24700:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11598,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24700:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24668:47:10"
},
"returnParameters": {
"id": 11603,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11602,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11610,
"src": "24737:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11601,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "24737:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24736:18:10"
},
"scope": 11667,
"src": "24630:203:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11625,
"nodeType": "Block",
"src": "25051:77:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11621,
"name": "_convertibleToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11613,
"src": "25094:17:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
{
"argumentTypes": null,
"id": 11622,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11615,
"src": "25113:6:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11620,
"name": "isConvertibleTokenAnchor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10794,
"src": "25069:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
"typeString": "function (contract IERC20Token,address) view returns (bool)"
}
},
"id": 11623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "25069:51:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 11619,
"id": 11624,
"nodeType": "Return",
"src": "25062:58:10"
}
]
},
"documentation": {
"id": 11611,
"nodeType": "StructuredDocumentation",
"src": "24841:92:10",
"text": " @dev deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
},
"functionSelector": "725b8786",
"id": 11626,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConvertibleTokenSmartToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11616,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11613,
"mutability": "mutable",
"name": "_convertibleToken",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11626,
"src": "24977:29:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
},
"typeName": {
"contractScope": null,
"id": 11612,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "24977:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11615,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11626,
"src": "25008:14:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11614,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "25008:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24976:47:10"
},
"returnParameters": {
"id": 11619,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11618,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11626,
"src": "25045:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 11617,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "25045:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25044:6:10"
},
"scope": 11667,
"src": "24939:189:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11640,
"nodeType": "Block",
"src": "25341:62:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 11637,
"name": "_smartTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11630,
"src": "25382:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
],
"id": 11636,
"name": "getConvertersByAnchors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10847,
"src": "25359:22:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
"typeString": "function (address[] memory) view returns (contract IConverter[] memory)"
}
},
"id": 11638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "25359:36:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[] memory"
}
},
"functionReturnParameters": 11635,
"id": 11639,
"nodeType": "Return",
"src": "25352:43:10"
}
]
},
"documentation": {
"id": 11627,
"nodeType": "StructuredDocumentation",
"src": "25136:90:10",
"text": " @dev deprecated, backward compatibility, use `getConvertersByAnchors`"
},
"functionSelector": "1f8e2620",
"id": 11641,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConvertersBySmartTokens",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11631,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11630,
"mutability": "mutable",
"name": "_smartTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11641,
"src": "25268:29:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 11628,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "25268:7:10",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11629,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25268:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25267:31:10"
},
"returnParameters": {
"id": 11635,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11634,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11641,
"src": "25320:19:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
"typeString": "contract IConverter[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11632,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "25320:10:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 11633,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25320:12:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
"typeString": "contract IConverter[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25319:21:10"
},
"scope": 11667,
"src": "25232:171:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11665,
"nodeType": "Block",
"src": "25659:118:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11657,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 11654,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11645,
"src": "25702:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
"id": 11655,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "25702:21:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11656,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "25726:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "25702:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 11659,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "25734:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"id": 11660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "25702:33:10",
"trueExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 11658,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "25730:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 11661,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11645,
"src": "25737:14:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 11662,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11648,
"src": "25753:15:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"id": 11653,
"name": "getLiquidityPoolByConfig",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11031,
"src": "25677:24:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
"typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
}
},
"id": 11663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "25677:92:10",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"functionReturnParameters": 11652,
"id": 11664,
"nodeType": "Return",
"src": "25670:99:10"
}
]
},
"documentation": {
"id": 11642,
"nodeType": "StructuredDocumentation",
"src": "25411:92:10",
"text": " @dev deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
},
"functionSelector": "c22b82f0",
"id": 11666,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidityPoolByReserveConfig",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11649,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11645,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11666,
"src": "25550:35:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 11643,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "25550:11:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 11644,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25550:13:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11648,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11666,
"src": "25587:31:10",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 11646,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "25587:6:10",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 11647,
"length": null,
"nodeType": "ArrayTypeName",
"src": "25587:8:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25549:70:10"
},
"returnParameters": {
"id": 11652,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11651,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 11666,
"src": "25641:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
},
"typeName": {
"contractScope": null,
"id": 11650,
"name": "IConverterAnchor",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13349,
"src": "25641:16:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverterAnchor_$13349",
"typeString": "contract IConverterAnchor"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25640:18:10"
},
"scope": 11667,
"src": "25509:268:10",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
}
],
"scope": 11668,
"src": "1414:24366:10"
}
],
"src": "52:25730:10"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {
"42": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0xCF60ebC445b636a5ab787F9E8BC465A2A3eF8299",
"transactionHash": "0xea7ab1f17fff15b657a861099e05cfd8196aa6f1062785212d159ddfb0bc09be"
},
"8995": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0xCF60ebC445b636a5ab787F9E8BC465A2A3eF8299",
"transactionHash": "0xea7ab1f17fff15b657a861099e05cfd8196aa6f1062785212d159ddfb0bc09be"
},
"1604964387852": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0x71ee5585513e4fe9BDc67A3f527675C83a74c37e",
"transactionHash": "0xc7e60288612f1da37cfe45a25e9dde2d9ee5f5aeee58a1e72904f7bb07c7270d"
},
"1604964469407": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0x8c3a1Ba32764346c643aF8Ad9A440bBDC41758Fe",
"transactionHash": "0x6ed9d2837a8320c7c6dd7255a96eaa3d2b9fc3b5c9dee387a2db43fda48ff9bc"
},
"1604965528035": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0xEC8e2cC834470B3b7bbE2d1ae69CC0bb26f58EBa",
"transactionHash": "0x01a141adfc530dd82965fb5bea01a2fe668fd85ac421f1fefaff44945217442e"
},
"1604965645554": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0x3C87F4471592cE5d81943EEdA26c5B5e59D062B9",
"transactionHash": "0xf4223f4e3885a9ca67ad25373e9bbfc92a4af7309198d1e63f2eb5f0b2f69e7e"
},
"1604965679541": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0xc6ACc7d18d5084498287e247657d95545C10e9e4",
"transactionHash": "0x4a452a729592b9fbf4afacb288c569879a508acc52e0e47973d826f6ba39d890"
},
"1604965719492": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0x8a62247a070de6c081486797d9C365f3C75526b7",
"transactionHash": "0x958d55e52dcf1d7059ab95aff0ae24649325bc7953e915d990442945fba39651"
},
"1604965760834": {
"events": {
"0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
"0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
"0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
"0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
"0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
"0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
"0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
"0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
"0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
}
},
"links": {},
"address": "0x5eE7451738f30E78BFa1b800dd2c799994D50930",
"transactionHash": "0x050e9db9f0ac9770f8c36cc490f80910d380962c069ac59ab0b29b1d3636d9e7"
}
},
"schemaVersion": "3.2.3",
"updatedAt": "2020-11-10T14:20:45.569Z",
"networkType": "ethereum",
"devdoc": {
"details": "The ConverterRegistry maintains a list of all active converters in the Bancor Network. Since converters can be upgraded and thus their address can change, the registry actually keeps converter anchors internally and not the converters themselves. The active converter for each anchor can be easily accessed by querying the anchor's owner. The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller: - Anchors - can be used to get all the latest / historical data in the network - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc. - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool tokens), and for each one - all anchors that hold it in their reserves The contract fires events whenever one of the primitives is added to or removed from the registry The contract is upgradable.",
"events": {
"ConverterAnchorAdded(address)": {
"details": "triggered when a converter anchor is added to the registry",
"params": {
"_anchor": "smart token"
}
},
"ConverterAnchorRemoved(address)": {
"details": "triggered when a converter anchor is removed from the registry",
"params": {
"_anchor": "smart token"
}
},
"ConvertibleTokenAdded(address,address)": {
"details": "triggered when a convertible token is added to the registry",
"params": {
"_convertibleToken": "convertible token",
"_smartToken": "associated smart token"
}
},
"ConvertibleTokenRemoved(address,address)": {
"details": "triggered when a convertible token is removed from the registry",
"params": {
"_convertibleToken": "convertible token",
"_smartToken": "associated smart token"
}
},
"LiquidityPoolAdded(address)": {
"details": "triggered when a liquidity pool is added to the registry",
"params": {
"_liquidityPool": "liquidity pool"
}
},
"LiquidityPoolRemoved(address)": {
"details": "triggered when a liquidity pool is removed from the registry",
"params": {
"_liquidityPool": "liquidity pool"
}
},
"SmartTokenAdded(address)": {
"details": "deprecated, backward compatibility, use `ConverterAnchorAdded`"
},
"SmartTokenRemoved(address)": {
"details": "deprecated, backward compatibility, use `ConverterAnchorRemoved`"
}
},
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"addConverter(address)": {
"details": "adds an existing converter to the registry can only be called by the owner",
"params": {
"_converter": "converter"
}
},
"constructor": {
"details": "initializes a new ConverterRegistry instance",
"params": {
"_registry": "address of a contract registry contract"
}
},
"getAnchor(uint256)": {
"details": "returns the converter anchor at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "anchor at the given index"
}
},
"getAnchorCount()": {
"details": "returns the number of converter anchors in the registry",
"returns": {
"_0": "number of anchors"
}
},
"getAnchors()": {
"details": "returns the list of converter anchors in the registry",
"returns": {
"_0": "list of anchors"
}
},
"getConvertersByAnchors(address[])": {
"details": "returns a list of converters for a given list of anchors this is a utility function that can be used to reduce the number of calls to the contract",
"params": {
"_anchors": "list of converter anchors"
},
"returns": {
"_0": "list of converters"
}
},
"getConvertersBySmartTokens(address[])": {
"details": "deprecated, backward compatibility, use `getConvertersByAnchors`"
},
"getConvertibleToken(uint256)": {
"details": "returns the convertible token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "convertible token at the given index"
}
},
"getConvertibleTokenAnchor(address,uint256)": {
"details": "returns the converter anchor associated with a given convertible token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "anchor associated with the given convertible token at the given index"
}
},
"getConvertibleTokenAnchorCount(address)": {
"details": "returns the number of converter anchors associated with a given convertible token",
"params": {
"_convertibleToken": "convertible token"
},
"returns": {
"_0": "number of anchors associated with the given convertible token"
}
},
"getConvertibleTokenAnchors(address)": {
"details": "returns the list of aoncerter anchors associated with a given convertible token",
"params": {
"_convertibleToken": "convertible token"
},
"returns": {
"_0": "list of anchors associated with the given convertible token"
}
},
"getConvertibleTokenCount()": {
"details": "returns the number of convertible tokens in the registry",
"returns": {
"_0": "number of convertible tokens"
}
},
"getConvertibleTokenSmartToken(address,uint256)": {
"details": "deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
},
"getConvertibleTokenSmartTokenCount(address)": {
"details": "deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
},
"getConvertibleTokenSmartTokens(address)": {
"details": "deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
},
"getConvertibleTokens()": {
"details": "returns the list of convertible tokens in the registry",
"returns": {
"_0": "list of convertible tokens"
}
},
"getLiquidityPool(uint256)": {
"details": "returns the liquidity pool at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "liquidity pool at the given index"
}
},
"getLiquidityPoolByConfig(uint16,address[],uint32[])": {
"details": "searches for a liquidity pool with specific configuration",
"params": {
"_reserveTokens": "reserve tokens",
"_reserveWeights": "reserve weights",
"_type": "converter type, see ConverterBase contract main doc"
},
"returns": {
"_0": "the liquidity pool, or zero if no such liquidity pool exists"
}
},
"getLiquidityPoolByReserveConfig(address[],uint32[])": {
"details": "deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
},
"getLiquidityPoolCount()": {
"details": "returns the number of liquidity pools in the registry",
"returns": {
"_0": "number of liquidity pools"
}
},
"getLiquidityPools()": {
"details": "returns the list of liquidity pools in the registry",
"returns": {
"_0": "list of liquidity pools"
}
},
"getSmartToken(uint256)": {
"details": "deprecated, backward compatibility, use `getAnchor`"
},
"getSmartTokenCount()": {
"details": "deprecated, backward compatibility, use `getAnchorCount`"
},
"getSmartTokens()": {
"details": "deprecated, backward compatibility, use `getAnchors`"
},
"isAnchor(address)": {
"details": "checks whether or not a given value is a converter anchor",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is an anchor, false if not"
}
},
"isConverterValid(address)": {
"details": "checks whether or not a given converter is valid",
"params": {
"_converter": "converter"
},
"returns": {
"_0": "true if the given converter is valid, false if not"
}
},
"isConvertibleToken(address)": {
"details": "checks whether or not a given value is a convertible token",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a convertible token, false if not"
}
},
"isConvertibleTokenAnchor(address,address)": {
"details": "checks whether or not a given value is a converter anchor of a given convertible token",
"params": {
"_convertibleToken": "convertible token",
"_value": "value"
},
"returns": {
"_0": "true if the given value is an anchor of the given convertible token, false if not"
}
},
"isConvertibleTokenSmartToken(address,address)": {
"details": "deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
},
"isLiquidityPool(address)": {
"details": "checks whether or not a given value is a liquidity pool",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a liquidity pool, false if not"
}
},
"isSimilarLiquidityPoolRegistered(address)": {
"details": "checks if a liquidity pool with given configuration is already registered",
"params": {
"_converter": "converter with specific configuration"
},
"returns": {
"_0": "if a liquidity pool with the same configuration is already registered"
}
},
"isSmartToken(address)": {
"details": "deprecated, backward compatibility, use `isAnchor`"
},
"newConverter(uint16,string,string,uint8,uint32,address[],uint32[])": {
"details": "creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry",
"params": {
"_decimals": "token / pool decimals",
"_maxConversionFee": "maximum conversion-fee",
"_name": "token / pool name",
"_reserveTokens": "reserve tokens",
"_reserveWeights": "reserve weights",
"_symbol": "token / pool symbol",
"_type": "converter type, see ConverterBase contract main doc"
},
"returns": {
"_0": "new converter"
}
},
"removeConverter(address)": {
"details": "removes a converter from the registry anyone can remove an existing converter from the registry, as long as the converter is invalid note that the owner can also remove valid converters",
"params": {
"_converter": "converter"
}
},
"restoreRegistry()": {
"details": "restores the previous contract-registry"
},
"restrictRegistryUpdate(bool)": {
"details": "restricts the permission to update the contract-registry",
"params": {
"_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only"
}
},
"transferOwnership(address)": {
"details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
"params": {
"_newOwner": "new contract owner"
}
},
"updateRegistry()": {
"details": "updates to the new contract-registry"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}