{ "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 } }