{
  "contractName": "ConverterUpgrader",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "contract IEtherToken",
          "name": "_etherToken",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "ConverterOwned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_oldConverter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newConverter",
          "type": "address"
        }
      ],
      "name": "ConverterUpgrade",
      "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"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "etherToken",
      "outputs": [
        {
          "internalType": "contract IEtherToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "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": [],
      "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": "_version",
          "type": "uint16"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_version",
          "type": "bytes32"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_version",
          "type": "bytes32"
        }
      ],
      "name": "upgradeOld",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"contract IEtherToken\",\"name\":\"_etherToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"ConverterOwned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_oldConverter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newConverter\",\"type\":\"address\"}],\"name\":\"ConverterUpgrade\",\"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\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"etherToken\",\"outputs\":[{\"internalType\":\"contract IEtherToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[],\"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\":\"_version\",\"type\":\"uint16\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_version\",\"type\":\"bytes32\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_version\",\"type\":\"bytes32\"}],\"name\":\"upgradeOld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Converter Upgrader The converter upgrader contract allows upgrading an older converter contract (0.4 and up) to the latest version. To begin the upgrade process, simply execute the 'upgrade' function. At the end of the process, the ownership of the newly upgraded converter will be transferred back to the original owner and the original owner will need to execute the 'acceptOwnership' function. The address of the new converter is available in the ConverterUpgrade event. Note that for older converters that don't yet have the 'upgrade' function, ownership should first be transferred manually to the ConverterUpgrader contract using the 'transferOwnership' function and then the upgrader 'upgrade' function should be executed directly.\",\"events\":{\"ConverterOwned(address,address)\":{\"details\":\"triggered when the contract accept a converter ownership\",\"params\":{\"_converter\":\"converter address\",\"_owner\":\"new owner - local upgrader address\"}},\"ConverterUpgrade(address,address)\":{\"details\":\"triggered when the upgrading process is done\",\"params\":{\"_newConverter\":\"new converter address\",\"_oldConverter\":\"old converter address\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"constructor\":{\"details\":\"initializes a new ConverterUpgrader instance\",\"params\":{\"_registry\":\"address of a contract registry contract\"}},\"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\"},\"upgrade(bytes32)\":{\"details\":\"upgrades an old converter to the latest version will throw if ownership wasn't transferred to the upgrader before calling this function. ownership of the new converter will be transferred back to the original owner. fires the ConverterUpgrade event upon success. can only be called by a converter\",\"params\":{\"_version\":\"old converter version\"}},\"upgrade(uint16)\":{\"details\":\"upgrades an old converter to the latest version will throw if ownership wasn't transferred to the upgrader before calling this function. ownership of the new converter will be transferred back to the original owner. fires the ConverterUpgrade event upon success. can only be called by a converter\",\"params\":{\"_version\":\"old converter version\"}},\"upgradeOld(address,bytes32)\":{\"details\":\"upgrades an old converter to the latest version will throw if ownership wasn't transferred to the upgrader before calling this function. ownership of the new converter will be transferred back to the original owner. fires the ConverterUpgrade event upon success.\",\"params\":{\"_converter\":\"old converter contract address\",\"_version\":\"old converter version\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterUpgrader.sol\":\"ConverterUpgrader\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterUpgrader.sol\":{\"keccak256\":\"0x323711379e7fb617613e4260e5e04f745103cbcda30ff8d61ec29529b99d7526\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://770228b2605de3fe44710a54e9ab5116e58e652e9be23c3d0fecb82c7171b6a5\",\"dweb:/ipfs/QmWpJzUtG9Kpq39tFQ6K6pmk69H5HhYamiJAwKSRdcmCPL\"]},\"/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/IConverterUpgrader.sol\":{\"keccak256\":\"0x456faf61358bfd76498892509cc99f9729f310c9450e28b0d03b5e7cd9752802\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://01f7b3f24cc895a948ea44f8e067d312b55ef1e9cf491908f3fb948d02b914da\",\"dweb:/ipfs/QmfSwZrWFWmT8xeX3iwSq75Vs8pQaQBGkmxJEHehUiPP1N\"]},\"/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/converter/types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol\":{\"keccak256\":\"0x2420b67eec33085ab879f4962fc0b98d14ae227f2afccc85308e6333ca1b49fd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://074f808b01138b47d823eff0a15512005144cab48f450ff35ee41cb36adab3e5\",\"dweb:/ipfs/QmS2hpadJLAJCCavW7Gq8TTo8AUEJgqCe1BSFFUQ2MvGiW\"]},\"/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/IEtherToken.sol\":{\"keccak256\":\"0x6ed324da616d70af0b21fa073b1e5329b430e38b470177633a69710eff3da893\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://44f94aa59c67de636423cbdef82efb7d8e0562e73dfc9049a48054156aebaf14\",\"dweb:/ipfs/Qmdn8KAP54s7X3J6TCoZPhCpS19aCQzFYZuFABugJ5JA5D\"]},\"/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/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/IChainlinkPriceOracle.sol\":{\"keccak256\":\"0x544a1d335c9a30e5543f5c069bbd9f73e6478b0a6941481619a0d20eea159c2a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://8649d3ff5e21bf5ff21d45a62193974e08ccec27b392e91cbfdad479a60e87f0\",\"dweb:/ipfs/QmatS5peisTv9PdqVz9eSuveQdhJBqpxfpr5q4YsMv51CZ\"]},\"/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/IPriceOracle.sol\":{\"keccak256\":\"0x39f4f7af694f7f24373901d8edd57245c6e59970cd1b35137ded4bbebe2155bb\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://30d1011854960be9ab326844d4d97324084955593b2903bee969aba6b1b5f8e9\",\"dweb:/ipfs/QmeTQNZRDNrboKD3ikyMj3tNVHGsa1GqBuAXytJAhhK5Az\"]},\"/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": "[encoded data, 15042 characters]",
  "deployedBytecode": "[encoded data, 14512 characters]",
  "immutableReferences": {},
  "sourceMap": "1251:11574:12:-:0;;;2216:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2216:150:12;;;;;;;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;2216:150:12;;594:23:64;2216:150:12;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;::::0;;;2334:10:12::1;:24:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1251:11574:12;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;1251:11574:12:-;;;;;;;",
  "deployedSourceMap": "1251:11574:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;1333:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;2300:925;;;:::i;1243:37::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1243:37:56;;;;;;;;;;;;;;1422:217:57;;;:::i;1154:33:56:-;;;:::i;219:29:57:-;;;:::i;3336:131:12:-;;;;;;;;;;;;;;;;-1:-1:-1;3336:131:12;;;;:::i;3304:137:56:-;;;:::i;1444:29:12:-;;;:::i;2794:114::-;;;;;;;;;;;;;;;;-1:-1:-1;2794:114:12;;:::i;255:23:57:-;;;:::i;3916:1113:12:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3916:1113:12;;;;;;;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::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;1333:38::-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;2300:925::-;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;1243:37::-;;;-1:-1:-1;;;;;1243:37:56;;:::o;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;1154:33:56:-;;;-1:-1:-1;;;;;1154:33:56;;:::o;219:29:57:-;;;-1:-1:-1;;;;;219:29:57;;:::o;3336:131:12:-;3397:62;3419:10;3440:17;;;3397:10;:62::i;:::-;3336:131;:::o;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;1444:29:12:-;;;-1:-1:-1;;;;;1444:29:12;;:::o;2794:114::-;2856:44;2878:10;2891:8;2856:10;:44::i;255:23:57:-;;;-1:-1:-1;;;;;255:23:57;;:::o;3916:1113:12:-;4014:20;4048:10;4014:45;;4070:17;4090:9;-1:-1:-1;;;;;4090:15:12;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4090:17:12;;-1:-1:-1;4118:35:12;4143:9;4118:24;:35::i;:::-;4164:23;4190:26;4206:9;4190:15;:26::i;:::-;4164:52;;4227:37;4240:9;4251:12;4227;:37::i;:::-;4275:42;4293:9;4304:12;4275:17;:42::i;:::-;4328:48;4352:9;4363:12;4328:23;:48::i;:::-;4387:23;4413:9;-1:-1:-1;;;;;4413:15:12;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4413:17:12;;-1:-1:-1;4511:13:12;4527:33;4550:9;4527:22;:33::i;:::-;:57;;;;;4564:9;-1:-1:-1;;;;;4564:18:12;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4564:20:12;4527:57;4511:73;;4627:9;-1:-1:-1;;;;;4601:36:12;:6;-1:-1:-1;;;;;4601:12:12;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4601:14:12;-1:-1:-1;;;;;4601:36:12;;4597:175;;;4654:9;-1:-1:-1;;;;;4654:32:12;;4695:12;4654:55;;;;;;;;;;;;;-1:-1:-1;;;;;4654:55:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4724:12;-1:-1:-1;;;;;4724:34:12;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4597:175;4784:57;4807:9;4818:12;4832:8;4784:22;:57::i;:::-;4854:9;-1:-1:-1;;;;;4854:27:12;;4882:9;4854:38;;;;;;;;;;;;;-1:-1:-1;;;;;4854:38:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4903:12;-1:-1:-1;;;;;4903:30:12;;4934:9;4903:41;;;;;;;;;;;;;-1:-1:-1;;;;;4903:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4962:59:12;;-1:-1:-1;;;;;4962:59:12;;;;-1:-1:-1;4962:59:12;;;-1:-1:-1;4962:59:12;;;;;3916:1113;;;;;;;:::o;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;813:104::-;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4169:33:56;;-1:-1:-1;4077:133:56;;;;:::o;5416:178:12:-;5495:13;-1:-1:-1;;;;;5495:29:12;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5542:44:12;;5580:4;;-1:-1:-1;;;;;;5542:44:12;;;-1:-1:-1;5542:44:12;;;;;5416:178;:::o;5930:992::-;5998:10;6021:23;6047:13;-1:-1:-1;;;;;6047:19:12;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6047:21:12;6105:32;;;-1:-1:-1;;;6105:32:12;;;;6047:21;;-1:-1:-1;6079:23:12;;-1:-1:-1;;;;;6105:30:12;;;;;:32;;;;;6047:21;;6105:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6105:32:12;6175:35;;;-1:-1:-1;;;6175:35:12;;;;6105:32;;-1:-1:-1;6148:24:12;;-1:-1:-1;;;;;6175:33:12;;;;;:35;;;;;6105:32;;6175:35;;;;;;;:33;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6175:35:12;;-1:-1:-1;6264:14:12;6364:37;6387:13;6364:22;:37::i;:::-;6360:279;;;6426:13;-1:-1:-1;;;;;6426:27:12;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6426:29:12;;-1:-1:-1;6360:279:12;;;6612:1;6592:17;:21;;;6588:51;;;-1:-1:-1;6638:1:12;6588:51;6652:34;6707:28;-1:-1:-1;;;6707:9:12;:28::i;:::-;6820:8;;6770:77;;;-1:-1:-1;;;6770:77:12;;;;;;;;;-1:-1:-1;;;;;6770:77:12;;;;;;;6820:8;;;6770:77;;;;;;;;;;;;;6652:84;;-1:-1:-1;6747:20:12;;6770:32;;;;;;:77;;;;;;;;;;;;;;;6747:20;6770:32;:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6770:77:12;6860:27;;;-1:-1:-1;;;6860:27:12;;;;6770:77;;-1:-1:-1;;;;;;6860:25:12;;;;;:27;;;;;;;;;;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6905:9:12;;5930:992;-1:-1:-1;;;;;;;;;;5930:992:12:o;7267:883::-;7360:24;7387:13;-1:-1:-1;;;;;7387:33:12;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7387:35:12;;-1:-1:-1;7440:8:12;7435:708;7458:17;7454:21;;:1;:21;;;7435:708;;;7497:26;7526:13;-1:-1:-1;;;;;7526:29:12;;7556:1;7526:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7526:32:12;7599:40;;;-1:-1:-1;;;7599:40:12;;-1:-1:-1;;;;;7599:40:12;;;;;;;;;7526:32;;-1:-1:-1;7576:13:12;;7599:24;;;;;;:40;;;;;;;;;;;;;;;:24;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7599:40:12;;;;-1:-1:-1;;;;;;7690:37:12;;1394:42;7690:37;7686:446;;;7748:53;;;-1:-1:-1;;;7748:53:12;;1394:42;7748:53;;;;;;;;;;;;;-1:-1:-1;;;;;7748:24:12;;;;;:53;;;;;-1:-1:-1;;7748:53:12;;;;;;;-1:-1:-1;7748:24:12;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7686:446;;;7894:10;;-1:-1:-1;;;;;7876:28:12;;;7894:10;;7876:28;7872:260;;;7925:53;;;-1:-1:-1;;;7925:53:12;;1394:42;7925:53;;;;;;;;;;;;;-1:-1:-1;;;;;7925:24:12;;;;;:53;;;;;-1:-1:-1;;7925:53:12;;;;;;;-1:-1:-1;7925:24:12;:53;;;;;;;;;;7872:260;8068:13;-1:-1:-1;;;;;8068:24:12;;8093:14;8109:6;8068:48;;;;;;;;;;;;;-1:-1:-1;;;;;8068:48:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7872:260;-1:-1:-1;;7477:3:12;;7435:708;;;;7267:883;;;:::o;8390:214::-;8488:20;8511:13;-1:-1:-1;;;;;8511:27:12;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8511:29:12;8551:45;;;-1:-1:-1;;;8551:45:12;;;;;;;;;;;8511:29;;-1:-1:-1;;;;;;8551:30:12;;;;;:45;;;;;-1:-1:-1;;8551:45:12;;;;;;;;-1:-1:-1;8551:30:12;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8390:214;;;:::o;9061:1185::-;9165:22;9198:24;9225:13;-1:-1:-1;;;;;9225:33:12;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9225:35:12;;-1:-1:-1;9278:8:12;9273:966;9296:17;9292:21;;:1;:21;;;9273:966;;;9335:26;9364:13;-1:-1:-1;;;;;9364:29:12;;9394:1;9364:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9364:32:12;;-1:-1:-1;;;;;;9445:37:12;;1394:42;9445:37;9441:787;;;9503:13;-1:-1:-1;;;;;9503:25:12;;9537:13;9503:49;;;;;;;;;;;;;-1:-1:-1;;;;;9503:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9441:787;;;9645:10;;-1:-1:-1;;;;;9627:28:12;;;9645:10;;9627:28;9623:605;;;9693:10;;;;;;;;;-1:-1:-1;;;;;9693:10:12;-1:-1:-1;;;;;9693:20:12;;9722:13;9693:44;;;;;;;;;;;;;-1:-1:-1;;;;;9693:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9693:44:12;9785:10;;;9756:71;;;-1:-1:-1;;;9756:71:12;;-1:-1:-1;;;;;9785:10:12;;;9756:71;;;;;;;9805:4;9756:71;;;;;;;;;;;9693:44;;-1:-1:-1;9756:28:12;;;;;:71;;;;;9785:10;;9756:71;;;;;;;;9785:10;9756:28;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9846:10:12;;;:61;;;-1:-1:-1;;;9846:61:12;;-1:-1:-1;;;;;9846:61:12;;;;;;;;;;;;;;;;;;:10;;;;;-1:-1:-1;9846:21:12;;-1:-1:-1;9846:61:12;;;;;:10;;:61;;;;;;;;:10;;:61;;;;;;;;;;9623:605;10071:43;;;-1:-1:-1;;;10071:43:12;;-1:-1:-1;;;;;10071:43:12;;;;;;;;;10021:14;;10071:19;;;;;:43;;;;;;;;;;;;;;:19;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10071:43:12;10133:79;;;-1:-1:-1;;;10133:79:12;;-1:-1:-1;;;;;10133:79:12;;;;;;;;;;;;;;;;;;;;;;10071:43;;-1:-1:-1;10133:28:12;;;;;;:79;;;;;-1:-1:-1;;10133:79:12;;;;;;;;-1:-1:-1;10133:28:12;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9623:605;;-1:-1:-1;9315:3:12;;9273:966;;;;9061:1185;;;;:::o;12402:420::-;12517:54;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12517:54:12;-1:-1:-1;;;12517:54:12;;;12624:49;;;;12480:4;;;;12497:17;;-1:-1:-1;;;;;12624:30:12;;;12661:4;;12517:54;;12624:49;;;;;;12517:54;12624:49;;;;;;;;;;-1:-1:-1;;12624:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12582:91;;;;12690:7;:34;;;;;12701:10;:17;12722:2;12701:23;12690:34;12686:104;;;12759:10;12748:30;;;;;;;;;;;;;;;-1:-1:-1;12748:30:12;;-1:-1:-1;12741:37:12;;-1:-1:-1;;;12741:37:12;12686:104;-1:-1:-1;12809:5:12;;12402:420;-1:-1:-1;;;;12402:420:12:o;10566:1562::-;10690:37;10713:13;10690:22;:37::i;:::-;10685:64;;10742:7;;10685:64;10761:20;10784:13;-1:-1:-1;;;;;10784:27:12;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10784:29:12;;-1:-1:-1;10845:1:12;10828:18;;;;10824:1297;;;10863:38;10938:13;10863:90;;10968:38;11043:13;10968:90;;11075:24;11102:12;-1:-1:-1;;;;;11102:32:12;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11102:34:12;;-1:-1:-1;11156:8:12;11151:371;11174:17;11170:21;;:1;:21;;;11151:371;;;11265:31;11299:12;-1:-1:-1;;;;;11299:28:12;;11328:1;11299:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11299:31:12;11367:54;;;-1:-1:-1;;;11367:54:12;;-1:-1:-1;;;;;11367:54:12;;;;;;;;;11299:31;;-1:-1:-1;11349:15:12;;11367:33;;;;;;:54;;;;;11299:31;;11367:54;;;;;;;;:33;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11367:54:12;11440:66;;;-1:-1:-1;;;11440:66:12;;-1:-1:-1;;;;;11440:66:12;;;;;;;;;;;;;;;11367:54;;-1:-1:-1;11440:36:12;;;;;;:66;;;;;-1:-1:-1;;11440:66:12;;;;;;;;-1:-1:-1;11440:36:12;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11193:3:12;;;;;-1:-1:-1;11151:371:12;;-1:-1:-1;;;11151:371:12;;;11543:9;11538:57;;11573:7;;;;;;11538:57;11657:31;11691:12;-1:-1:-1;;;;;11691:32:12;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11691:34:12;11817:26;;;-1:-1:-1;;;11817:26:12;;;;11691:34;;-1:-1:-1;11790:24:12;;-1:-1:-1;;;;;11817:24:12;;;;;:26;;;;;11691:34;;11817:26;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11817:26:12;11890;;;-1:-1:-1;;;11890:26:12;;;;11817;;-1:-1:-1;11858:29:12;;-1:-1:-1;;;;;11890:24:12;;;;;:26;;;;;11817;;11890;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11890:26:12;11963;;;-1:-1:-1;;;11963:26:12;;;;11890;;-1:-1:-1;11931:29:12;;-1:-1:-1;;;;;11963:24:12;;;;;:26;;;;;11890;;11963;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11963:26:12;12049:60;;;-1:-1:-1;;;12049:60:12;;-1:-1:-1;;;;;12049:60:12;;;;;;;;;;;;;;;;;;;;;;;11963:26;;-1:-1:-1;12049:21:12;;;;;;:60;;;;;-1:-1:-1;;12049:60:12;;;;;;;;-1:-1:-1;12049:21:12;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10824:1297;;;;;;;10566:1562;;;;;:::o",
  "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./interfaces/IConverter.sol\";\r\nimport \"./interfaces/IConverterUpgrader.sol\";\r\nimport \"./interfaces/IConverterFactory.sol\";\r\nimport \"../utility/ContractRegistryClient.sol\";\r\nimport \"../utility/interfaces/IWhitelist.sol\";\r\nimport \"../token/interfaces/IEtherToken.sol\";\r\nimport \"./types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol\";\r\n\r\n/**\r\n  * @dev Converter Upgrader\r\n  *\r\n  * The converter upgrader contract allows upgrading an older converter contract (0.4 and up)\r\n  * to the latest version.\r\n  * To begin the upgrade process, simply execute the 'upgrade' function.\r\n  * At the end of the process, the ownership of the newly upgraded converter will be transferred\r\n  * back to the original owner and the original owner will need to execute the 'acceptOwnership' function.\r\n  *\r\n  * The address of the new converter is available in the ConverterUpgrade event.\r\n  *\r\n  * Note that for older converters that don't yet have the 'upgrade' function, ownership should first\r\n  * be transferred manually to the ConverterUpgrader contract using the 'transferOwnership' function\r\n  * and then the upgrader 'upgrade' function should be executed directly.\r\n*/\r\ncontract ConverterUpgrader is IConverterUpgrader, ContractRegistryClient {\r\n    IERC20Token private constant ETH_RESERVE_ADDRESS = IERC20Token(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);\r\n    IEtherToken public etherToken;\r\n\r\n    /**\r\n      * @dev triggered when the contract accept a converter ownership\r\n      *\r\n      * @param _converter   converter address\r\n      * @param _owner       new owner - local upgrader address\r\n    */\r\n    event ConverterOwned(IConverter indexed _converter, address indexed _owner);\r\n\r\n    /**\r\n      * @dev triggered when the upgrading process is done\r\n      *\r\n      * @param _oldConverter    old converter address\r\n      * @param _newConverter    new converter address\r\n    */\r\n    event ConverterUpgrade(address indexed _oldConverter, address indexed _newConverter);\r\n\r\n    /**\r\n      * @dev initializes a new ConverterUpgrader instance\r\n      *\r\n      * @param _registry    address of a contract registry contract\r\n    */\r\n    constructor(IContractRegistry _registry, IEtherToken _etherToken) ContractRegistryClient(_registry) public {\r\n        etherToken = _etherToken;\r\n    }\r\n\r\n    /**\r\n      * @dev upgrades an old converter to the latest version\r\n      * will throw if ownership wasn't transferred to the upgrader before calling this function.\r\n      * ownership of the new converter will be transferred back to the original owner.\r\n      * fires the ConverterUpgrade event upon success.\r\n      * can only be called by a converter\r\n      *\r\n      * @param _version old converter version\r\n    */\r\n    function upgrade(bytes32 _version) public override {\r\n        upgradeOld(IConverter(msg.sender), _version);\r\n    }\r\n\r\n    /**\r\n      * @dev upgrades an old converter to the latest version\r\n      * will throw if ownership wasn't transferred to the upgrader before calling this function.\r\n      * ownership of the new converter will be transferred back to the original owner.\r\n      * fires the ConverterUpgrade event upon success.\r\n      * can only be called by a converter\r\n      *\r\n      * @param _version old converter version\r\n    */\r\n    function upgrade(uint16 _version) public override {\r\n        upgradeOld(IConverter(msg.sender), bytes32(uint256(_version)));\r\n    }\r\n\r\n    /**\r\n      * @dev upgrades an old converter to the latest version\r\n      * will throw if ownership wasn't transferred to the upgrader before calling this function.\r\n      * ownership of the new converter will be transferred back to the original owner.\r\n      * fires the ConverterUpgrade event upon success.\r\n      *\r\n      * @param _converter   old converter contract address\r\n      * @param _version     old converter version\r\n    */\r\n    function upgradeOld(IConverter _converter, bytes32 _version) public {\r\n        _version;\r\n        IConverter converter = IConverter(_converter);\r\n        address prevOwner = converter.owner();\r\n        acceptConverterOwnership(converter);\r\n        IConverter newConverter = createConverter(converter);\r\n        copyReserves(converter, newConverter);\r\n        copyConversionFee(converter, newConverter);\r\n        transferReserveBalances(converter, newConverter);\r\n        IConverterAnchor anchor = converter.token();\r\n\r\n        // get the activation status before it's being invalidated\r\n        bool activate = isV28OrHigherConverter(converter) && converter.isActive();\r\n\r\n        if (anchor.owner() == address(converter)) {\r\n            converter.transferTokenOwnership(address(newConverter));\r\n            newConverter.acceptAnchorOwnership();\r\n        }\r\n\r\n        handleTypeSpecificData(converter, newConverter, activate);\r\n\r\n        converter.transferOwnership(prevOwner);\r\n        newConverter.transferOwnership(prevOwner);\r\n\r\n        emit ConverterUpgrade(address(converter), address(newConverter));\r\n    }\r\n\r\n    /**\r\n      * @dev the first step when upgrading a converter is to transfer the ownership to the local contract.\r\n      * the upgrader contract then needs to accept the ownership transfer before initiating\r\n      * the upgrade process.\r\n      * fires the ConverterOwned event upon success\r\n      *\r\n      * @param _oldConverter       converter to accept ownership of\r\n    */\r\n    function acceptConverterOwnership(IConverter _oldConverter) private {\r\n        _oldConverter.acceptOwnership();\r\n        emit ConverterOwned(_oldConverter, address(this));\r\n    }\r\n\r\n    /**\r\n      * @dev creates a new converter with same basic data as the original old converter\r\n      * the newly created converter will have no reserves at this step.\r\n      *\r\n      * @param _oldConverter    old converter contract address\r\n      *\r\n      * @return the new converter  new converter contract address\r\n    */\r\n    function createConverter(IConverter _oldConverter) private returns (IConverter) {\r\n        IConverterAnchor anchor = _oldConverter.token();\r\n        uint32 maxConversionFee = _oldConverter.maxConversionFee();\r\n        uint16 reserveTokenCount = _oldConverter.connectorTokenCount();\r\n\r\n        // determine new converter type\r\n        uint16 newType = 0;\r\n        // new converter - get the type from the converter itself\r\n        if (isV28OrHigherConverter(_oldConverter))\r\n            newType = _oldConverter.converterType();\r\n        // old converter - if it has 1 reserve token, the type is a liquid token, otherwise the type liquidity pool\r\n        else if (reserveTokenCount > 1)\r\n            newType = 1;\r\n\r\n        IConverterFactory converterFactory = IConverterFactory(addressOf(CONVERTER_FACTORY));\r\n        IConverter converter = converterFactory.createConverter(newType, anchor, registry, maxConversionFee);\r\n\r\n        converter.acceptOwnership();\r\n        return converter;\r\n    }\r\n\r\n    /**\r\n      * @dev copies the reserves from the old converter to the new one.\r\n      * note that this will not work for an unlimited number of reserves due to block gas limit constraints.\r\n      *\r\n      * @param _oldConverter    old converter contract address\r\n      * @param _newConverter    new converter contract address\r\n    */\r\n    function copyReserves(IConverter _oldConverter, IConverter _newConverter) private {\r\n        uint16 reserveTokenCount = _oldConverter.connectorTokenCount();\r\n\r\n        for (uint16 i = 0; i < reserveTokenCount; i++) {\r\n            IERC20Token reserveAddress = _oldConverter.connectorTokens(i);\r\n            (, uint32 weight, , , ) = _oldConverter.connectors(reserveAddress);\r\n\r\n            // Ether reserve\r\n            if (reserveAddress == ETH_RESERVE_ADDRESS) {\r\n                _newConverter.addReserve(ETH_RESERVE_ADDRESS, weight);\r\n            }\r\n            // Ether reserve token\r\n            else if (reserveAddress == etherToken) {\r\n                _newConverter.addReserve(ETH_RESERVE_ADDRESS, weight);\r\n            }\r\n            // ERC20 reserve token\r\n            else {\r\n                _newConverter.addReserve(reserveAddress, weight);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n      * @dev copies the conversion fee from the old converter to the new one\r\n      *\r\n      * @param _oldConverter    old converter contract address\r\n      * @param _newConverter    new converter contract address\r\n    */\r\n    function copyConversionFee(IConverter _oldConverter, IConverter _newConverter) private {\r\n        uint32 conversionFee = _oldConverter.conversionFee();\r\n        _newConverter.setConversionFee(conversionFee);\r\n    }\r\n\r\n    /**\r\n      * @dev transfers the balance of each reserve in the old converter to the new one.\r\n      * note that the function assumes that the new converter already has the exact same number of\r\n      * also, this will not work for an unlimited number of reserves due to block gas limit constraints.\r\n      *\r\n      * @param _oldConverter    old converter contract address\r\n      * @param _newConverter    new converter contract address\r\n    */\r\n    function transferReserveBalances(IConverter _oldConverter, IConverter _newConverter) private {\r\n        uint256 reserveBalance;\r\n        uint16 reserveTokenCount = _oldConverter.connectorTokenCount();\r\n\r\n        for (uint16 i = 0; i < reserveTokenCount; i++) {\r\n            IERC20Token reserveAddress = _oldConverter.connectorTokens(i);\r\n            // Ether reserve\r\n            if (reserveAddress == ETH_RESERVE_ADDRESS) {\r\n                _oldConverter.withdrawETH(address(_newConverter));\r\n            }\r\n            // Ether reserve token\r\n            else if (reserveAddress == etherToken) {\r\n                reserveBalance = etherToken.balanceOf(address(_oldConverter));\r\n                _oldConverter.withdrawTokens(etherToken, address(this), reserveBalance);\r\n                etherToken.withdrawTo(address(_newConverter), reserveBalance);\r\n            }\r\n            // ERC20 reserve token\r\n            else {\r\n                IERC20Token connector = reserveAddress;\r\n                reserveBalance = connector.balanceOf(address(_oldConverter));\r\n                _oldConverter.withdrawTokens(connector, address(_newConverter), reserveBalance);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n      * @dev handles upgrading custom (type specific) data from the old converter to the new one\r\n      *\r\n      * @param _oldConverter    old converter contract address\r\n      * @param _newConverter    new converter contract address\r\n      * @param _activate        activate the new converter\r\n    */\r\n    function handleTypeSpecificData(IConverter _oldConverter, IConverter _newConverter, bool _activate) private {\r\n        if (!isV28OrHigherConverter(_oldConverter))\r\n            return;\r\n\r\n        uint16 converterType = _oldConverter.converterType();\r\n        if (converterType == 2) {\r\n            ILiquidityPoolV2Converter oldConverter = ILiquidityPoolV2Converter(address(_oldConverter));\r\n            ILiquidityPoolV2Converter newConverter = ILiquidityPoolV2Converter(address(_newConverter));\r\n\r\n            uint16 reserveTokenCount = oldConverter.connectorTokenCount();\r\n            for (uint16 i = 0; i < reserveTokenCount; i++) {\r\n                // copy reserve staked balance\r\n                IERC20Token reserveTokenAddress = oldConverter.connectorTokens(i);\r\n                uint256 balance = oldConverter.reserveStakedBalance(reserveTokenAddress);\r\n                newConverter.setReserveStakedBalance(reserveTokenAddress, balance);\r\n            }\r\n\r\n            if (!_activate) {\r\n                return;\r\n            }\r\n\r\n            // get the primary reserve token\r\n            IERC20Token primaryReserveToken = oldConverter.primaryReserveToken();\r\n\r\n            // get the chainlink price oracles\r\n            IPriceOracle priceOracle = oldConverter.priceOracle();\r\n            IChainlinkPriceOracle oracleA = priceOracle.tokenAOracle();\r\n            IChainlinkPriceOracle oracleB = priceOracle.tokenBOracle();\r\n\r\n            // activate the new converter\r\n            newConverter.activate(primaryReserveToken, oracleA, oracleB);\r\n        }\r\n    }\r\n\r\n    bytes4 private constant IS_V28_OR_HIGHER_FUNC_SELECTOR = bytes4(keccak256(\"isV28OrHigher()\"));\r\n\r\n    // using a static call to identify converter version\r\n    // can't rely on the version number since the function had a different signature in older converters\r\n    function isV28OrHigherConverter(IConverter _converter) internal view returns (bool) {\r\n        bytes memory data = abi.encodeWithSelector(IS_V28_OR_HIGHER_FUNC_SELECTOR);\r\n        (bool success, bytes memory returnData) = address(_converter).staticcall{ gas: 4000 }(data);\r\n\r\n        if (success && returnData.length == 32) {\r\n            return abi.decode(returnData, (bool));\r\n        }\r\n\r\n        return false;\r\n    }\r\n}\r\n",
  "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterUpgrader.sol",
  "ast": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterUpgrader.sol",
    "exportedSymbols": {
      "ConverterUpgrader": [
        13009
      ]
    },
    "id": 13010,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12326,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:12"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
        "file": "./interfaces/IConverter.sol",
        "id": 12327,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 13341,
        "src": "77:37:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterUpgrader.sol",
        "file": "./interfaces/IConverterUpgrader.sol",
        "id": 12328,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 13661,
        "src": "116:45:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol",
        "file": "./interfaces/IConverterFactory.sol",
        "id": 12329,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 13390,
        "src": "163:44:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "../utility/ContractRegistryClient.sol",
        "id": 12330,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 21720,
        "src": "209:47:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IWhitelist.sol",
        "file": "../utility/interfaces/IWhitelist.sol",
        "id": 12331,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 22918,
        "src": "258:46:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IEtherToken.sol",
        "file": "../token/interfaces/IEtherToken.sol",
        "id": 12332,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 21154,
        "src": "306:45:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol",
        "file": "./types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol",
        "id": 12333,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 18766,
        "src": "353:76:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12335,
              "name": "IConverterUpgrader",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13660,
              "src": "1281:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverterUpgrader_$13660",
                "typeString": "contract IConverterUpgrader"
              }
            },
            "id": 12336,
            "nodeType": "InheritanceSpecifier",
            "src": "1281:18:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12337,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "1301:22:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 12338,
            "nodeType": "InheritanceSpecifier",
            "src": "1301:22:12"
          }
        ],
        "contractDependencies": [
          13660,
          21719,
          21818,
          22661,
          22847
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 12334,
          "nodeType": "StructuredDocumentation",
          "src": "433:816:12",
          "text": " @dev Converter Upgrader\n The converter upgrader contract allows upgrading an older converter contract (0.4 and up)\n to the latest version.\n To begin the upgrade process, simply execute the 'upgrade' function.\n At the end of the process, the ownership of the newly upgraded converter will be transferred\n back to the original owner and the original owner will need to execute the 'acceptOwnership' function.\n The address of the new converter is available in the ConverterUpgrade event.\n Note that for older converters that don't yet have the 'upgrade' function, ownership should first\n be transferred manually to the ConverterUpgrader contract using the 'transferOwnership' function\n and then the upgrader 'upgrade' function should be executed directly."
        },
        "fullyImplemented": true,
        "id": 13009,
        "linearizedBaseContracts": [
          13009,
          21719,
          22661,
          21818,
          22847,
          13660
        ],
        "name": "ConverterUpgrader",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 12343,
            "mutability": "constant",
            "name": "ETH_RESERVE_ADDRESS",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 13009,
            "src": "1331:106:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Token_$21127",
              "typeString": "contract IERC20Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 12339,
              "name": "IERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21127,
              "src": "1331:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                  "id": 12341,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1394:42:12",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  }
                ],
                "id": 12340,
                "name": "IERC20Token",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 21127,
                "src": "1382:11:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                  "typeString": "type(contract IERC20Token)"
                }
              },
              "id": 12342,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1382:55:12",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "functionSelector": "b8066bcb",
            "id": 12345,
            "mutability": "mutable",
            "name": "etherToken",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 13009,
            "src": "1444:29:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IEtherToken_$21153",
              "typeString": "contract IEtherToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 12344,
              "name": "IEtherToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21153,
              "src": "1444:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEtherToken_$21153",
                "typeString": "contract IEtherToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 12346,
              "nodeType": "StructuredDocumentation",
              "src": "1482:202:12",
              "text": " @dev triggered when the contract accept a converter ownership\n @param _converter   converter address\n @param _owner       new owner - local upgrader address"
            },
            "id": 12352,
            "name": "ConverterOwned",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12348,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12352,
                  "src": "1711:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12347,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "1711:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12350,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12352,
                  "src": "1742:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12349,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1742:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1710:55:12"
            },
            "src": "1690:76:12"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 12353,
              "nodeType": "StructuredDocumentation",
              "src": "1774:189:12",
              "text": " @dev triggered when the upgrading process is done\n @param _oldConverter    old converter address\n @param _newConverter    new converter address"
            },
            "id": 12359,
            "name": "ConverterUpgrade",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12355,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12359,
                  "src": "1992:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1992:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12357,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12359,
                  "src": "2023:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2023:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1991:62:12"
            },
            "src": "1969:85:12"
          },
          {
            "body": {
              "id": 12374,
              "nodeType": "Block",
              "src": "2323:43:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12370,
                      "name": "etherToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12345,
                      "src": "2334:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                        "typeString": "contract IEtherToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12371,
                      "name": "_etherToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12364,
                      "src": "2347:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                        "typeString": "contract IEtherToken"
                      }
                    },
                    "src": "2334:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEtherToken_$21153",
                      "typeString": "contract IEtherToken"
                    }
                  },
                  "id": 12373,
                  "nodeType": "ExpressionStatement",
                  "src": "2334:24:12"
                }
              ]
            },
            "documentation": {
              "id": 12360,
              "nodeType": "StructuredDocumentation",
              "src": "2062:148:12",
              "text": " @dev initializes a new ConverterUpgrader instance\n @param _registry    address of a contract registry contract"
            },
            "id": 12375,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12367,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12362,
                    "src": "2305:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 12368,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12366,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "2282:22:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2282:33:12"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12362,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12375,
                  "src": "2228:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12361,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "2228:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12364,
                  "mutability": "mutable",
                  "name": "_etherToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12375,
                  "src": "2257:23:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEtherToken_$21153",
                    "typeString": "contract IEtherToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12363,
                    "name": "IEtherToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21153,
                    "src": "2257:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEtherToken_$21153",
                      "typeString": "contract IEtherToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2227:54:12"
            },
            "returnParameters": {
              "id": 12369,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2323:0:12"
            },
            "scope": 13009,
            "src": "2216:150:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13654
            ],
            "body": {
              "id": 12390,
              "nodeType": "Block",
              "src": "2845:63:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12384,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2878:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2878:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 12383,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "2867:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 12386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2867:22:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12387,
                        "name": "_version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12378,
                        "src": "2891:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12382,
                      "name": "upgradeOld",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12530,
                      "src": "2856:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract IConverter,bytes32)"
                      }
                    },
                    "id": 12388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2856:44:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12389,
                  "nodeType": "ExpressionStatement",
                  "src": "2856:44:12"
                }
              ]
            },
            "documentation": {
              "id": 12376,
              "nodeType": "StructuredDocumentation",
              "src": "2374:414:12",
              "text": " @dev upgrades an old converter to the latest version\n will throw if ownership wasn't transferred to the upgrader before calling this function.\n ownership of the new converter will be transferred back to the original owner.\n fires the ConverterUpgrade event upon success.\n can only be called by a converter\n @param _version old converter version"
            },
            "functionSelector": "bc444e13",
            "id": 12391,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 12380,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2836:8:12"
            },
            "parameters": {
              "id": 12379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12378,
                  "mutability": "mutable",
                  "name": "_version",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12391,
                  "src": "2811:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12377,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2811:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2810:18:12"
            },
            "returnParameters": {
              "id": 12381,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2845:0:12"
            },
            "scope": 13009,
            "src": "2794:114:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13659
            ],
            "body": {
              "id": 12412,
              "nodeType": "Block",
              "src": "3386:81:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12400,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3419:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3419:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 12399,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "3408:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 12402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3408:22:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12407,
                                "name": "_version",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12394,
                                "src": "3448:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 12406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3440:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12405,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3440:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3440:17:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3432:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12403,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3432:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3432:26:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12398,
                      "name": "upgradeOld",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12530,
                      "src": "3397:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract IConverter,bytes32)"
                      }
                    },
                    "id": 12410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3397:62:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12411,
                  "nodeType": "ExpressionStatement",
                  "src": "3397:62:12"
                }
              ]
            },
            "documentation": {
              "id": 12392,
              "nodeType": "StructuredDocumentation",
              "src": "2916:414:12",
              "text": " @dev upgrades an old converter to the latest version\n will throw if ownership wasn't transferred to the upgrader before calling this function.\n ownership of the new converter will be transferred back to the original owner.\n fires the ConverterUpgrade event upon success.\n can only be called by a converter\n @param _version old converter version"
            },
            "functionSelector": "90f58c96",
            "id": 12413,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 12396,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3377:8:12"
            },
            "parameters": {
              "id": 12395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12394,
                  "mutability": "mutable",
                  "name": "_version",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12413,
                  "src": "3353:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 12393,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "3353:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3352:17:12"
            },
            "returnParameters": {
              "id": 12397,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3386:0:12"
            },
            "scope": 13009,
            "src": "3336:131:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12529,
              "nodeType": "Block",
              "src": "3984:1045:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12421,
                    "name": "_version",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12418,
                    "src": "3995:8:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12422,
                  "nodeType": "ExpressionStatement",
                  "src": "3995:8:12"
                },
                {
                  "assignments": [
                    12424
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12424,
                      "mutability": "mutable",
                      "name": "converter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4014:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12423,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "4014:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12428,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12426,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12416,
                        "src": "4048:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12425,
                      "name": "IConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13340,
                      "src": "4037:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                        "typeString": "type(contract IConverter)"
                      }
                    },
                    "id": 12427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4037:22:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4014:45:12"
                },
                {
                  "assignments": [
                    12430
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12430,
                      "mutability": "mutable",
                      "name": "prevOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4070:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12429,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4070:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12434,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12431,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4090:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22838,
                      "src": "4090:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 12433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4090:17:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4070:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12436,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4143:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12435,
                      "name": "acceptConverterOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "4118:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 12437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4118:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12438,
                  "nodeType": "ExpressionStatement",
                  "src": "4118:35:12"
                },
                {
                  "assignments": [
                    12440
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12440,
                      "mutability": "mutable",
                      "name": "newConverter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4164:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12439,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "4164:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12444,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12442,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4206:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12441,
                      "name": "createConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12624,
                      "src": "4190:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$_t_contract$_IConverter_$13340_$",
                        "typeString": "function (contract IConverter) returns (contract IConverter)"
                      }
                    },
                    "id": 12443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4190:26:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4164:52:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12446,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4240:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12447,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4251:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12445,
                      "name": "copyReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12697,
                      "src": "4227:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter)"
                      }
                    },
                    "id": 12448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4227:37:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12449,
                  "nodeType": "ExpressionStatement",
                  "src": "4227:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12451,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4293:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12452,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4304:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12450,
                      "name": "copyConversionFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12718,
                      "src": "4275:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter)"
                      }
                    },
                    "id": 12453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4275:42:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12454,
                  "nodeType": "ExpressionStatement",
                  "src": "4275:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12456,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4352:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12457,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4363:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12455,
                      "name": "transferReserveBalances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12831,
                      "src": "4328:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter)"
                      }
                    },
                    "id": 12458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4328:48:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12459,
                  "nodeType": "ExpressionStatement",
                  "src": "4328:48:12"
                },
                {
                  "assignments": [
                    12461
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12461,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4387:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12460,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "4387:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12465,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12462,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4413:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "4413:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 12464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4413:17:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4387:43:12"
                },
                {
                  "assignments": [
                    12467
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12467,
                      "mutability": "mutable",
                      "name": "activate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4511:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12466,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4511:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12475,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12469,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12424,
                          "src": "4550:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 12468,
                        "name": "isV28OrHigherConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13008,
                        "src": "4527:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                          "typeString": "function (contract IConverter) view returns (bool)"
                        }
                      },
                      "id": 12470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4527:33:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12471,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12424,
                          "src": "4564:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 12472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isActive",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13200,
                        "src": "4564:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                          "typeString": "function () view external returns (bool)"
                        }
                      },
                      "id": 12473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4564:20:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4527:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4511:73:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12476,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12461,
                          "src": "4601:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "id": 12477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22838,
                        "src": "4601:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 12478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4601:14:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12481,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12424,
                          "src": "4627:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 12480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4619:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 12479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 12482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4619:18:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4601:36:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12499,
                  "nodeType": "IfStatement",
                  "src": "4597:175:12",
                  "trueBody": {
                    "id": 12498,
                    "nodeType": "Block",
                    "src": "4639:133:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12489,
                                  "name": "newConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12440,
                                  "src": "4695:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                ],
                                "id": 12488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4687:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12487,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4687:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4687:21:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12484,
                              "name": "converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12424,
                              "src": "4654:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferTokenOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13302,
                            "src": "4654:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 12491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4654:55:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12492,
                        "nodeType": "ExpressionStatement",
                        "src": "4654:55:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12493,
                              "name": "newConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12440,
                              "src": "4724:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "acceptAnchorOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13261,
                            "src": "4724:34:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 12496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4724:36:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12497,
                        "nodeType": "ExpressionStatement",
                        "src": "4724:36:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12501,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4807:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12502,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4818:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12503,
                        "name": "activate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12467,
                        "src": "4832:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12500,
                      "name": "handleTypeSpecificData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12953,
                      "src": "4784:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$_t_bool_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter,bool)"
                      }
                    },
                    "id": 12504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4784:57:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12505,
                  "nodeType": "ExpressionStatement",
                  "src": "4784:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12509,
                        "name": "prevOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12430,
                        "src": "4882:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12506,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4854:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "4854:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 12510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4854:38:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12511,
                  "nodeType": "ExpressionStatement",
                  "src": "4854:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12515,
                        "name": "prevOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12430,
                        "src": "4934:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12512,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4903:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "4903:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 12516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4903:41:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12517,
                  "nodeType": "ExpressionStatement",
                  "src": "4903:41:12"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12521,
                            "name": "converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12424,
                            "src": "4987:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 12520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4979:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12519,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4979:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4979:18:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12525,
                            "name": "newConverter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12440,
                            "src": "5007:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 12524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4999:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12523,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4999:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4999:21:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 12518,
                      "name": "ConverterUpgrade",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12359,
                      "src": "4962:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 12527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4962:59:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12528,
                  "nodeType": "EmitStatement",
                  "src": "4957:64:12"
                }
              ]
            },
            "documentation": {
              "id": 12414,
              "nodeType": "StructuredDocumentation",
              "src": "3475:435:12",
              "text": " @dev upgrades an old converter to the latest version\n will throw if ownership wasn't transferred to the upgrader before calling this function.\n ownership of the new converter will be transferred back to the original owner.\n fires the ConverterUpgrade event upon success.\n @param _converter   old converter contract address\n @param _version     old converter version"
            },
            "functionSelector": "f2cfed87",
            "id": 12530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "upgradeOld",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12416,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12530,
                  "src": "3936:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12415,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "3936:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12418,
                  "mutability": "mutable",
                  "name": "_version",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12530,
                  "src": "3959:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12417,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3959:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3935:41:12"
            },
            "returnParameters": {
              "id": 12420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3984:0:12"
            },
            "scope": 13009,
            "src": "3916:1113:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12549,
              "nodeType": "Block",
              "src": "5484:110:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12536,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12533,
                        "src": "5495:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "5495:29:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 12539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5495:31:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12540,
                  "nodeType": "ExpressionStatement",
                  "src": "5495:31:12"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12542,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12533,
                        "src": "5557:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12545,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "5580:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                              "typeString": "contract ConverterUpgrader"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                              "typeString": "contract ConverterUpgrader"
                            }
                          ],
                          "id": 12544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5572:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12543,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5572:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5572:13:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12541,
                      "name": "ConverterOwned",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12352,
                      "src": "5542:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverter_$13340_$_t_address_$returns$__$",
                        "typeString": "function (contract IConverter,address)"
                      }
                    },
                    "id": 12547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5542:44:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12548,
                  "nodeType": "EmitStatement",
                  "src": "5537:49:12"
                }
              ]
            },
            "documentation": {
              "id": 12531,
              "nodeType": "StructuredDocumentation",
              "src": "5037:373:12",
              "text": " @dev the first step when upgrading a converter is to transfer the ownership to the local contract.\n the upgrader contract then needs to accept the ownership transfer before initiating\n the upgrade process.\n fires the ConverterOwned event upon success\n @param _oldConverter       converter to accept ownership of"
            },
            "id": 12550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "acceptConverterOwnership",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12533,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12550,
                  "src": "5450:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12532,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5450:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5449:26:12"
            },
            "returnParameters": {
              "id": 12535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5484:0:12"
            },
            "scope": 13009,
            "src": "5416:178:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12623,
              "nodeType": "Block",
              "src": "6010:912:12",
              "statements": [
                {
                  "assignments": [
                    12559
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12559,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6021:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12558,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "6021:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12563,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12560,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6047:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "6047:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 12562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6047:21:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6021:47:12"
                },
                {
                  "assignments": [
                    12565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12565,
                      "mutability": "mutable",
                      "name": "maxConversionFee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6079:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12564,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6079:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12569,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12566,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6105:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maxConversionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13243,
                      "src": "6105:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 12568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6105:32:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6079:58:12"
                },
                {
                  "assignments": [
                    12571
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12571,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6148:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12570,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "6148:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12575,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12572,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6175:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12573,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "6175:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 12574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6175:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6148:62:12"
                },
                {
                  "assignments": [
                    12577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12577,
                      "mutability": "mutable",
                      "name": "newType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6264:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12576,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "6264:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12579,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 12578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6281:1:12",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6264:18:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12581,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6387:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12580,
                      "name": "isV28OrHigherConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13008,
                      "src": "6364:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                        "typeString": "function (contract IConverter) view returns (bool)"
                      }
                    },
                    "id": 12582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6364:37:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "id": 12591,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12589,
                        "name": "reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12571,
                        "src": "6592:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 12590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6612:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6592:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 12596,
                    "nodeType": "IfStatement",
                    "src": "6588:51:12",
                    "trueBody": {
                      "expression": {
                        "argumentTypes": null,
                        "id": 12594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 12592,
                          "name": "newType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12577,
                          "src": "6628:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6638:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "6628:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "id": 12595,
                      "nodeType": "ExpressionStatement",
                      "src": "6628:11:12"
                    }
                  },
                  "id": 12597,
                  "nodeType": "IfStatement",
                  "src": "6360:279:12",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12587,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 12583,
                        "name": "newType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12577,
                        "src": "6416:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12584,
                            "name": "_oldConverter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12553,
                            "src": "6426:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          },
                          "id": 12585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "converterType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13190,
                          "src": "6426:27:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_pure$__$returns$_t_uint16_$",
                            "typeString": "function () pure external returns (uint16)"
                          }
                        },
                        "id": 12586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6426:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "src": "6416:39:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 12588,
                    "nodeType": "ExpressionStatement",
                    "src": "6416:39:12"
                  }
                },
                {
                  "assignments": [
                    12599
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12599,
                      "mutability": "mutable",
                      "name": "converterFactory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6652:34:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                        "typeString": "contract IConverterFactory"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12598,
                        "name": "IConverterFactory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13389,
                        "src": "6652:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                          "typeString": "contract IConverterFactory"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12605,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12602,
                            "name": "CONVERTER_FACTORY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21536,
                            "src": "6717:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12601,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "6707:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 12603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6707:28:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12600,
                      "name": "IConverterFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13389,
                      "src": "6689:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterFactory_$13389_$",
                        "typeString": "type(contract IConverterFactory)"
                      }
                    },
                    "id": 12604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6689:47:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                      "typeString": "contract IConverterFactory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6652:84:12"
                },
                {
                  "assignments": [
                    12607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12607,
                      "mutability": "mutable",
                      "name": "converter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6747:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12606,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "6747:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12615,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12610,
                        "name": "newType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12577,
                        "src": "6803:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12611,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12559,
                        "src": "6812:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12612,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21562,
                        "src": "6820:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                          "typeString": "contract IContractRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12613,
                        "name": "maxConversionFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12565,
                        "src": "6830:16:12",
                        "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": 12608,
                        "name": "converterFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12599,
                        "src": "6770:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                          "typeString": "contract IConverterFactory"
                        }
                      },
                      "id": 12609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createConverter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13381,
                      "src": "6770:32:12",
                      "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": 12614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6770:77:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6747:100:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12616,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12607,
                        "src": "6860:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "6860:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 12619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6860:27:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12620,
                  "nodeType": "ExpressionStatement",
                  "src": "6860:27:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12621,
                    "name": "converter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12607,
                    "src": "6905:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "functionReturnParameters": 12557,
                  "id": 12622,
                  "nodeType": "Return",
                  "src": "6898:16:12"
                }
              ]
            },
            "documentation": {
              "id": 12551,
              "nodeType": "StructuredDocumentation",
              "src": "5602:322:12",
              "text": " @dev creates a new converter with same basic data as the original old converter\n the newly created converter will have no reserves at this step.\n @param _oldConverter    old converter contract address\n @return the new converter  new converter contract address"
            },
            "id": 12624,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12553,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12624,
                  "src": "5955:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12552,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5955:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5954:26:12"
            },
            "returnParameters": {
              "id": 12557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12556,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12624,
                  "src": "5998:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12555,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5998:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5997:12:12"
            },
            "scope": 13009,
            "src": "5930:992:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12696,
              "nodeType": "Block",
              "src": "7349:801:12",
              "statements": [
                {
                  "assignments": [
                    12633
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12633,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12696,
                      "src": "7360:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12632,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "7360:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12637,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12634,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12627,
                        "src": "7387:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "7387:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 12636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7387:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7360:62:12"
                },
                {
                  "body": {
                    "id": 12694,
                    "nodeType": "Block",
                    "src": "7482:661:12",
                    "statements": [
                      {
                        "assignments": [
                          12649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12649,
                            "mutability": "mutable",
                            "name": "reserveAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12694,
                            "src": "7497:26:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12648,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "7497:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12654,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12652,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12639,
                              "src": "7556:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12650,
                              "name": "_oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12627,
                              "src": "7526:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "7526:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 12653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7526:32:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7497:61:12"
                      },
                      {
                        "assignments": [
                          null,
                          12656,
                          null,
                          null,
                          null
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 12656,
                            "mutability": "mutable",
                            "name": "weight",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12694,
                            "src": "7576:13:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12655,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7576:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          null,
                          null
                        ],
                        "id": 12661,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12659,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12649,
                              "src": "7624:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12657,
                              "name": "_oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12627,
                              "src": "7599:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13320,
                            "src": "7599:24:12",
                            "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": 12660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7599:40:12",
                          "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": "7573:66:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          "id": 12664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12662,
                            "name": "reserveAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12649,
                            "src": "7690:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12663,
                            "name": "ETH_RESERVE_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12343,
                            "src": "7708:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "src": "7690:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "id": 12675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12673,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12649,
                              "src": "7876:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12674,
                              "name": "etherToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "7894:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                "typeString": "contract IEtherToken"
                              }
                            },
                            "src": "7876:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 12691,
                            "nodeType": "Block",
                            "src": "8049:83:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12687,
                                      "name": "reserveAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12649,
                                      "src": "8093:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12688,
                                      "name": "weight",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12656,
                                      "src": "8109:6:12",
                                      "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": 12684,
                                      "name": "_newConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12629,
                                      "src": "8068:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addReserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13292,
                                    "src": "8068:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                                      "typeString": "function (contract IERC20Token,uint32) external"
                                    }
                                  },
                                  "id": 12689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8068:48:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12690,
                                "nodeType": "ExpressionStatement",
                                "src": "8068:48:12"
                              }
                            ]
                          },
                          "id": 12692,
                          "nodeType": "IfStatement",
                          "src": "7872:260:12",
                          "trueBody": {
                            "id": 12683,
                            "nodeType": "Block",
                            "src": "7906:88:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12679,
                                      "name": "ETH_RESERVE_ADDRESS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12343,
                                      "src": "7950:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12680,
                                      "name": "weight",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12656,
                                      "src": "7971:6:12",
                                      "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": 12676,
                                      "name": "_newConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12629,
                                      "src": "7925:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addReserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13292,
                                    "src": "7925:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                                      "typeString": "function (contract IERC20Token,uint32) external"
                                    }
                                  },
                                  "id": 12681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7925:53:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12682,
                                "nodeType": "ExpressionStatement",
                                "src": "7925:53:12"
                              }
                            ]
                          }
                        },
                        "id": 12693,
                        "nodeType": "IfStatement",
                        "src": "7686:446:12",
                        "trueBody": {
                          "id": 12672,
                          "nodeType": "Block",
                          "src": "7729:88:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12668,
                                    "name": "ETH_RESERVE_ADDRESS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12343,
                                    "src": "7773:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12669,
                                    "name": "weight",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12656,
                                    "src": "7794:6:12",
                                    "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": 12665,
                                    "name": "_newConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12629,
                                    "src": "7748:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "id": 12667,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addReserve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13292,
                                  "src": "7748:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                                    "typeString": "function (contract IERC20Token,uint32) external"
                                  }
                                },
                                "id": 12670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7748:53:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12671,
                              "nodeType": "ExpressionStatement",
                              "src": "7748:53:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 12644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12642,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12639,
                      "src": "7454:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12643,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12633,
                      "src": "7458:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7454:21:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12695,
                  "initializationExpression": {
                    "assignments": [
                      12639
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12639,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12695,
                        "src": "7440:8:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12638,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "7440:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12641,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7451:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7440:12:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7477:3:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12645,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12639,
                        "src": "7477:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 12647,
                    "nodeType": "ExpressionStatement",
                    "src": "7477:3:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "7435:708:12"
                }
              ]
            },
            "documentation": {
              "id": 12625,
              "nodeType": "StructuredDocumentation",
              "src": "6930:331:12",
              "text": " @dev copies the reserves from the old converter to the new one.\n note that this will not work for an unlimited number of reserves due to block gas limit constraints.\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address"
            },
            "id": 12697,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copyReserves",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12627,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12697,
                  "src": "7289:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12626,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "7289:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12629,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12697,
                  "src": "7315:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12628,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "7315:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7288:52:12"
            },
            "returnParameters": {
              "id": 12631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7349:0:12"
            },
            "scope": 13009,
            "src": "7267:883:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12717,
              "nodeType": "Block",
              "src": "8477:127:12",
              "statements": [
                {
                  "assignments": [
                    12706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12706,
                      "mutability": "mutable",
                      "name": "conversionFee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12717,
                      "src": "8488:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12705,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8488:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12710,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12707,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12700,
                        "src": "8511:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "conversionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13238,
                      "src": "8511:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 12709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8511:29:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8488:52:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12714,
                        "name": "conversionFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12706,
                        "src": "8582:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12711,
                        "name": "_newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12702,
                        "src": "8551:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setConversionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13266,
                      "src": "8551:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$returns$__$",
                        "typeString": "function (uint32) external"
                      }
                    },
                    "id": 12715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8551:45:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12716,
                  "nodeType": "ExpressionStatement",
                  "src": "8551:45:12"
                }
              ]
            },
            "documentation": {
              "id": 12698,
              "nodeType": "StructuredDocumentation",
              "src": "8158:226:12",
              "text": " @dev copies the conversion fee from the old converter to the new one\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address"
            },
            "id": 12718,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copyConversionFee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12700,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12718,
                  "src": "8417:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12699,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "8417:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12702,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12718,
                  "src": "8443:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12701,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "8443:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8416:52:12"
            },
            "returnParameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8477:0:12"
            },
            "scope": 13009,
            "src": "8390:214:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12830,
              "nodeType": "Block",
              "src": "9154:1092:12",
              "statements": [
                {
                  "assignments": [
                    12727
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12727,
                      "mutability": "mutable",
                      "name": "reserveBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12830,
                      "src": "9165:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12726,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9165:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12728,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9165:22:12"
                },
                {
                  "assignments": [
                    12730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12730,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12830,
                      "src": "9198:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12729,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "9198:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12734,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12731,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12721,
                        "src": "9225:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "9225:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 12733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9225:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9198:62:12"
                },
                {
                  "body": {
                    "id": 12828,
                    "nodeType": "Block",
                    "src": "9320:919:12",
                    "statements": [
                      {
                        "assignments": [
                          12746
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12746,
                            "mutability": "mutable",
                            "name": "reserveAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12828,
                            "src": "9335:26:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12745,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "9335:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12751,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12749,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12736,
                              "src": "9394:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12747,
                              "name": "_oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12721,
                              "src": "9364:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "9364:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 12750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9364:32:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9335:61:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          "id": 12754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12752,
                            "name": "reserveAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12746,
                            "src": "9445:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12753,
                            "name": "ETH_RESERVE_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12343,
                            "src": "9463:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "src": "9445:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "id": 12767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12765,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12746,
                              "src": "9627:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12766,
                              "name": "etherToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "9645:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                "typeString": "contract IEtherToken"
                              }
                            },
                            "src": "9627:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 12825,
                            "nodeType": "Block",
                            "src": "9978:250:12",
                            "statements": [
                              {
                                "assignments": [
                                  12801
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 12801,
                                    "mutability": "mutable",
                                    "name": "connector",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 12825,
                                    "src": "9997:21:12",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    },
                                    "typeName": {
                                      "contractScope": null,
                                      "id": 12800,
                                      "name": "IERC20Token",
                                      "nodeType": "UserDefinedTypeName",
                                      "referencedDeclaration": 21127,
                                      "src": "9997:11:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 12803,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "id": 12802,
                                  "name": "reserveAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12746,
                                  "src": "10021:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9997:38:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 12804,
                                    "name": "reserveBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12727,
                                    "src": "10054:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 12809,
                                            "name": "_oldConverter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12721,
                                            "src": "10099:13:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          ],
                                          "id": 12808,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10091:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 12807,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10091:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 12810,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10091:22:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12805,
                                        "name": "connector",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12801,
                                        "src": "10071:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                          "typeString": "contract IERC20Token"
                                        }
                                      },
                                      "id": 12806,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21088,
                                      "src": "10071:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 12811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10071:43:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10054:60:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 12813,
                                "nodeType": "ExpressionStatement",
                                "src": "10054:60:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12817,
                                      "name": "connector",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12801,
                                      "src": "10162:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12820,
                                          "name": "_newConverter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12723,
                                          "src": "10181:13:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        ],
                                        "id": 12819,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10173:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12818,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10173:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 12821,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10173:22:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12822,
                                      "name": "reserveBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12727,
                                      "src": "10197:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      },
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12814,
                                      "name": "_oldConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12721,
                                      "src": "10133:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "withdrawTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13280,
                                    "src": "10133:28:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (contract IERC20Token,address,uint256) external"
                                    }
                                  },
                                  "id": 12823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10133:79:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12824,
                                "nodeType": "ExpressionStatement",
                                "src": "10133:79:12"
                              }
                            ]
                          },
                          "id": 12826,
                          "nodeType": "IfStatement",
                          "src": "9623:605:12",
                          "trueBody": {
                            "id": 12799,
                            "nodeType": "Block",
                            "src": "9657:266:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 12768,
                                    "name": "reserveBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12727,
                                    "src": "9676:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 12773,
                                            "name": "_oldConverter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12721,
                                            "src": "9722:13:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          ],
                                          "id": 12772,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9714:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 12771,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9714:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 12774,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9714:22:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12769,
                                        "name": "etherToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12345,
                                        "src": "9693:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                          "typeString": "contract IEtherToken"
                                        }
                                      },
                                      "id": 12770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21088,
                                      "src": "9693:20:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 12775,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9693:44:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9676:61:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 12777,
                                "nodeType": "ExpressionStatement",
                                "src": "9676:61:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12781,
                                      "name": "etherToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12345,
                                      "src": "9785:10:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                        "typeString": "contract IEtherToken"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12784,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "9805:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                                            "typeString": "contract ConverterUpgrader"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                                            "typeString": "contract ConverterUpgrader"
                                          }
                                        ],
                                        "id": 12783,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9797:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12782,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9797:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 12785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9797:13:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12786,
                                      "name": "reserveBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12727,
                                      "src": "9812:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                        "typeString": "contract IEtherToken"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12778,
                                      "name": "_oldConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12721,
                                      "src": "9756:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12780,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "withdrawTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13280,
                                    "src": "9756:28:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (contract IERC20Token,address,uint256) external"
                                    }
                                  },
                                  "id": 12787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9756:71:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12788,
                                "nodeType": "ExpressionStatement",
                                "src": "9756:71:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12794,
                                          "name": "_newConverter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12723,
                                          "src": "9876:13:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        ],
                                        "id": 12793,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9868:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12792,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9868:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 12795,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9868:22:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12796,
                                      "name": "reserveBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12727,
                                      "src": "9892:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12789,
                                      "name": "etherToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12345,
                                      "src": "9846:10:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                        "typeString": "contract IEtherToken"
                                      }
                                    },
                                    "id": 12791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "withdrawTo",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21152,
                                    "src": "9846:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                      "typeString": "function (address payable,uint256) external"
                                    }
                                  },
                                  "id": 12797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9846:61:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12798,
                                "nodeType": "ExpressionStatement",
                                "src": "9846:61:12"
                              }
                            ]
                          }
                        },
                        "id": 12827,
                        "nodeType": "IfStatement",
                        "src": "9441:787:12",
                        "trueBody": {
                          "id": 12764,
                          "nodeType": "Block",
                          "src": "9484:84:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 12760,
                                        "name": "_newConverter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12723,
                                        "src": "9537:13:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IConverter_$13340",
                                          "typeString": "contract IConverter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IConverter_$13340",
                                          "typeString": "contract IConverter"
                                        }
                                      ],
                                      "id": 12759,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9529:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 12758,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9529:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 12761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9529:22:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12755,
                                    "name": "_oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12721,
                                    "src": "9503:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "id": 12757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdrawETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13285,
                                  "src": "9503:25:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$",
                                    "typeString": "function (address payable) external"
                                  }
                                },
                                "id": 12762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9503:49:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12763,
                              "nodeType": "ExpressionStatement",
                              "src": "9503:49:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 12741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12739,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12736,
                      "src": "9292:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12740,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12730,
                      "src": "9296:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "9292:21:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12829,
                  "initializationExpression": {
                    "assignments": [
                      12736
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12736,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12829,
                        "src": "9278:8:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12735,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9278:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12738,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9289:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9278:12:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9315:3:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12742,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12736,
                        "src": "9315:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 12744,
                    "nodeType": "ExpressionStatement",
                    "src": "9315:3:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "9273:966:12"
                }
              ]
            },
            "documentation": {
              "id": 12719,
              "nodeType": "StructuredDocumentation",
              "src": "8612:443:12",
              "text": " @dev transfers the balance of each reserve in the old converter to the new one.\n note that the function assumes that the new converter already has the exact same number of\n also, this will not work for an unlimited number of reserves due to block gas limit constraints.\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address"
            },
            "id": 12831,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferReserveBalances",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12724,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12721,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12831,
                  "src": "9094:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12720,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "9094:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12723,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12831,
                  "src": "9120:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12722,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "9120:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9093:52:12"
            },
            "returnParameters": {
              "id": 12725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9154:0:12"
            },
            "scope": 13009,
            "src": "9061:1185:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12952,
              "nodeType": "Block",
              "src": "10674:1454:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10689:38:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12842,
                          "name": "_oldConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12834,
                          "src": "10713:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 12841,
                        "name": "isV28OrHigherConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13008,
                        "src": "10690:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                          "typeString": "function (contract IConverter) view returns (bool)"
                        }
                      },
                      "id": 12843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10690:37:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12846,
                  "nodeType": "IfStatement",
                  "src": "10685:64:12",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 12840,
                    "id": 12845,
                    "nodeType": "Return",
                    "src": "10742:7:12"
                  }
                },
                {
                  "assignments": [
                    12848
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12848,
                      "mutability": "mutable",
                      "name": "converterType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12952,
                      "src": "10761:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12847,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "10761:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12852,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12849,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12834,
                        "src": "10784:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "converterType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13190,
                      "src": "10784:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$__$returns$_t_uint16_$",
                        "typeString": "function () pure external returns (uint16)"
                      }
                    },
                    "id": 12851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10784:29:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10761:52:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 12855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12853,
                      "name": "converterType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12848,
                      "src": "10828:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 12854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10845:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "10828:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12951,
                  "nodeType": "IfStatement",
                  "src": "10824:1297:12",
                  "trueBody": {
                    "id": 12950,
                    "nodeType": "Block",
                    "src": "10848:1273:12",
                    "statements": [
                      {
                        "assignments": [
                          12857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12857,
                            "mutability": "mutable",
                            "name": "oldConverter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "10863:38:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                              "typeString": "contract ILiquidityPoolV2Converter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12856,
                              "name": "ILiquidityPoolV2Converter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18765,
                              "src": "10863:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12864,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12861,
                                  "name": "_oldConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12834,
                                  "src": "10938:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                ],
                                "id": 12860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10930:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12859,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10930:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10930:22:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 12858,
                            "name": "ILiquidityPoolV2Converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18765,
                            "src": "10904:25:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILiquidityPoolV2Converter_$18765_$",
                              "typeString": "type(contract ILiquidityPoolV2Converter)"
                            }
                          },
                          "id": 12863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10904:49:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                            "typeString": "contract ILiquidityPoolV2Converter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10863:90:12"
                      },
                      {
                        "assignments": [
                          12866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12866,
                            "mutability": "mutable",
                            "name": "newConverter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "10968:38:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                              "typeString": "contract ILiquidityPoolV2Converter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12865,
                              "name": "ILiquidityPoolV2Converter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18765,
                              "src": "10968:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12873,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12870,
                                  "name": "_newConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12836,
                                  "src": "11043:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                ],
                                "id": 12869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11035:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12868,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11035:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11035:22:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 12867,
                            "name": "ILiquidityPoolV2Converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18765,
                            "src": "11009:25:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILiquidityPoolV2Converter_$18765_$",
                              "typeString": "type(contract ILiquidityPoolV2Converter)"
                            }
                          },
                          "id": 12872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11009:49:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                            "typeString": "contract ILiquidityPoolV2Converter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10968:90:12"
                      },
                      {
                        "assignments": [
                          12875
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12875,
                            "mutability": "mutable",
                            "name": "reserveTokenCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11075:24:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 12874,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "11075:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12879,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12876,
                              "name": "oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12857,
                              "src": "11102:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokenCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13339,
                            "src": "11102:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                              "typeString": "function () view external returns (uint16)"
                            }
                          },
                          "id": 12878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11102:34:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11075:61:12"
                      },
                      {
                        "body": {
                          "id": 12911,
                          "nodeType": "Block",
                          "src": "11198:324:12",
                          "statements": [
                            {
                              "assignments": [
                                12891
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12891,
                                  "mutability": "mutable",
                                  "name": "reserveTokenAddress",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 12911,
                                  "src": "11265:31:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 12890,
                                    "name": "IERC20Token",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 21127,
                                    "src": "11265:11:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12896,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12894,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12881,
                                    "src": "11328:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12892,
                                    "name": "oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12857,
                                    "src": "11299:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                      "typeString": "contract ILiquidityPoolV2Converter"
                                    }
                                  },
                                  "id": 12893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "connectorTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13334,
                                  "src": "11299:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                                    "typeString": "function (uint256) view external returns (contract IERC20Token)"
                                  }
                                },
                                "id": 12895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11299:31:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11265:65:12"
                            },
                            {
                              "assignments": [
                                12898
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12898,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 12911,
                                  "src": "11349:15:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 12897,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11349:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12903,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12901,
                                    "name": "reserveTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12891,
                                    "src": "11401:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12899,
                                    "name": "oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12857,
                                    "src": "11367:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                      "typeString": "contract ILiquidityPoolV2Converter"
                                    }
                                  },
                                  "id": 12900,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "reserveStakedBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18738,
                                  "src": "11367:33:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                                    "typeString": "function (contract IERC20Token) view external returns (uint256)"
                                  }
                                },
                                "id": 12902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11367:54:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11349:72:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12907,
                                    "name": "reserveTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12891,
                                    "src": "11477:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12908,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12898,
                                    "src": "11498:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12904,
                                    "name": "newConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12866,
                                    "src": "11440:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                      "typeString": "contract ILiquidityPoolV2Converter"
                                    }
                                  },
                                  "id": 12906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setReserveStakedBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18745,
                                  "src": "11440:36:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$__$",
                                    "typeString": "function (contract IERC20Token,uint256) external"
                                  }
                                },
                                "id": 12909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11440:66:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12910,
                              "nodeType": "ExpressionStatement",
                              "src": "11440:66:12"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 12886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12884,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12881,
                            "src": "11170:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12885,
                            "name": "reserveTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12875,
                            "src": "11174:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "11170:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12912,
                        "initializationExpression": {
                          "assignments": [
                            12881
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12881,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 12912,
                              "src": "11156:8:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "typeName": {
                                "id": 12880,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "11156:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 12883,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11167:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11156:12:12"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11193:3:12",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 12887,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12881,
                              "src": "11193:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "id": 12889,
                          "nodeType": "ExpressionStatement",
                          "src": "11193:3:12"
                        },
                        "nodeType": "ForStatement",
                        "src": "11151:371:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11542:10:12",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 12913,
                            "name": "_activate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12838,
                            "src": "11543:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12917,
                        "nodeType": "IfStatement",
                        "src": "11538:57:12",
                        "trueBody": {
                          "id": 12916,
                          "nodeType": "Block",
                          "src": "11554:41:12",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 12840,
                              "id": 12915,
                              "nodeType": "Return",
                              "src": "11573:7:12"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12919
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12919,
                            "mutability": "mutable",
                            "name": "primaryReserveToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11657:31:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12918,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "11657:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12923,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12920,
                              "name": "oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12857,
                              "src": "11691:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "primaryReserveToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18750,
                            "src": "11691:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function () view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 12922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11691:34:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11657:68:12"
                      },
                      {
                        "assignments": [
                          12925
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12925,
                            "mutability": "mutable",
                            "name": "priceOracle",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11790:24:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                              "typeString": "contract IPriceOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12924,
                              "name": "IPriceOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22891,
                              "src": "11790:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                                "typeString": "contract IPriceOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12929,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12926,
                              "name": "oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12857,
                              "src": "11817:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "priceOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18755,
                            "src": "11817:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IPriceOracle_$22891_$",
                              "typeString": "function () view external returns (contract IPriceOracle)"
                            }
                          },
                          "id": 12928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11817:26:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                            "typeString": "contract IPriceOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11790:53:12"
                      },
                      {
                        "assignments": [
                          12931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12931,
                            "mutability": "mutable",
                            "name": "oracleA",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11858:29:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                              "typeString": "contract IChainlinkPriceOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12930,
                              "name": "IChainlinkPriceOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22821,
                              "src": "11858:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12935,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12932,
                              "name": "priceOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12925,
                              "src": "11890:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                                "typeString": "contract IPriceOracle"
                              }
                            },
                            "id": 12933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenAOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22856,
                            "src": "11890:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IChainlinkPriceOracle_$22821_$",
                              "typeString": "function () view external returns (contract IChainlinkPriceOracle)"
                            }
                          },
                          "id": 12934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11890:26:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                            "typeString": "contract IChainlinkPriceOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11858:58:12"
                      },
                      {
                        "assignments": [
                          12937
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12937,
                            "mutability": "mutable",
                            "name": "oracleB",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11931:29:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                              "typeString": "contract IChainlinkPriceOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12936,
                              "name": "IChainlinkPriceOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22821,
                              "src": "11931:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12941,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12938,
                              "name": "priceOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12925,
                              "src": "11963:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                                "typeString": "contract IPriceOracle"
                              }
                            },
                            "id": 12939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenBOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22861,
                            "src": "11963:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IChainlinkPriceOracle_$22821_$",
                              "typeString": "function () view external returns (contract IChainlinkPriceOracle)"
                            }
                          },
                          "id": 12940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11963:26:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                            "typeString": "contract IChainlinkPriceOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11931:58:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12945,
                              "name": "primaryReserveToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12919,
                              "src": "12071:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12946,
                              "name": "oracleA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12931,
                              "src": "12092:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12947,
                              "name": "oracleB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12937,
                              "src": "12101:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              },
                              {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              },
                              {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12942,
                              "name": "newConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12866,
                              "src": "12049:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "activate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18764,
                            "src": "12049:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IChainlinkPriceOracle_$22821_$_t_contract$_IChainlinkPriceOracle_$22821_$returns$__$",
                              "typeString": "function (contract IERC20Token,contract IChainlinkPriceOracle,contract IChainlinkPriceOracle) external"
                            }
                          },
                          "id": 12948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12049:60:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12949,
                        "nodeType": "ExpressionStatement",
                        "src": "12049:60:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 12832,
              "nodeType": "StructuredDocumentation",
              "src": "10254:306:12",
              "text": " @dev handles upgrading custom (type specific) data from the old converter to the new one\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address\n @param _activate        activate the new converter"
            },
            "id": 12953,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "handleTypeSpecificData",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12834,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12953,
                  "src": "10598:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12833,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "10598:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12836,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12953,
                  "src": "10624:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12835,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "10624:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12838,
                  "mutability": "mutable",
                  "name": "_activate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12953,
                  "src": "10650:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12837,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10650:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10597:68:12"
            },
            "returnParameters": {
              "id": 12840,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10674:0:12"
            },
            "scope": 13009,
            "src": "10566:1562:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12961,
            "mutability": "constant",
            "name": "IS_V28_OR_HIGHER_FUNC_SELECTOR",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 13009,
            "src": "12136:93:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 12954,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "12136:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "69735632384f724869676865722829",
                      "id": 12958,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12210:17:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_d260529c8620a59d78f2e58cfd1294673bb6cba228ad1f34ac7731003ab870dd",
                        "typeString": "literal_string \"isV28OrHigher()\""
                      },
                      "value": "isV28OrHigher()"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_d260529c8620a59d78f2e58cfd1294673bb6cba228ad1f34ac7731003ab870dd",
                        "typeString": "literal_string \"isV28OrHigher()\""
                      }
                    ],
                    "id": 12957,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "12200:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 12959,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "12200:28:12",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                ],
                "id": 12956,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "12193:6:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes4_$",
                  "typeString": "type(bytes4)"
                },
                "typeName": {
                  "id": 12955,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "12193:6:12",
                  "typeDescriptions": {
                    "typeIdentifier": null,
                    "typeString": null
                  }
                }
              },
              "id": 12960,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "12193:36:12",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 13007,
              "nodeType": "Block",
              "src": "12486:336:12",
              "statements": [
                {
                  "assignments": [
                    12969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12969,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13007,
                      "src": "12497:17:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12968,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12497:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12974,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12972,
                        "name": "IS_V28_OR_HIGHER_FUNC_SELECTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12961,
                        "src": "12540:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12970,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "12517:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12517:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 12973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12517:54:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12497:74:12"
                },
                {
                  "assignments": [
                    12976,
                    12978
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12976,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13007,
                      "src": "12583:12:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12975,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12583:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12978,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13007,
                      "src": "12597:23:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12977,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12597:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12988,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12986,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12969,
                        "src": "12668:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "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": 12981,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12963,
                              "src": "12632:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            ],
                            "id": 12980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12624:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 12979,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12624:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 12982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12624:19:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 12983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "staticcall",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12624:30:12",
                        "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": 12985,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "gas"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "argumentTypes": null,
                          "hexValue": "34303030",
                          "id": 12984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12661:4:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4000_by_1",
                            "typeString": "int_const 4000"
                          },
                          "value": "4000"
                        }
                      ],
                      "src": "12624:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 12987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12624:49:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12582:91:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12989,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12976,
                      "src": "12690:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12993,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12990,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12978,
                          "src": "12701:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12701:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 12992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12722:2:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "12701:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12690:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13004,
                  "nodeType": "IfStatement",
                  "src": "12686:104:12",
                  "trueBody": {
                    "id": 13003,
                    "nodeType": "Block",
                    "src": "12726:64:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12997,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12978,
                              "src": "12759:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 12999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12772:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 12998,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12772:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 13000,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12771:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12995,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "12748:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12748:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12748:30:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12967,
                        "id": 13002,
                        "nodeType": "Return",
                        "src": "12741:37:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 13005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12809:5:12",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 12967,
                  "id": 13006,
                  "nodeType": "Return",
                  "src": "12802:12:12"
                }
              ]
            },
            "documentation": null,
            "id": 13008,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigherConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12963,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13008,
                  "src": "12434:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12962,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "12434:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12433:23:12"
            },
            "returnParameters": {
              "id": 12967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12966,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13008,
                  "src": "12480:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12965,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12480:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12479:6:12"
            },
            "scope": 13009,
            "src": "12402:420:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 13010,
        "src": "1251:11574:12"
      }
    ],
    "src": "52:12775:12"
  },
  "legacyAST": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterUpgrader.sol",
    "exportedSymbols": {
      "ConverterUpgrader": [
        13009
      ]
    },
    "id": 13010,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12326,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:12"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
        "file": "./interfaces/IConverter.sol",
        "id": 12327,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 13341,
        "src": "77:37:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterUpgrader.sol",
        "file": "./interfaces/IConverterUpgrader.sol",
        "id": 12328,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 13661,
        "src": "116:45:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol",
        "file": "./interfaces/IConverterFactory.sol",
        "id": 12329,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 13390,
        "src": "163:44:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "../utility/ContractRegistryClient.sol",
        "id": 12330,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 21720,
        "src": "209:47:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IWhitelist.sol",
        "file": "../utility/interfaces/IWhitelist.sol",
        "id": 12331,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 22918,
        "src": "258:46:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IEtherToken.sol",
        "file": "../token/interfaces/IEtherToken.sol",
        "id": 12332,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 21154,
        "src": "306:45:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol",
        "file": "./types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol",
        "id": 12333,
        "nodeType": "ImportDirective",
        "scope": 13010,
        "sourceUnit": 18766,
        "src": "353:76:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12335,
              "name": "IConverterUpgrader",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13660,
              "src": "1281:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverterUpgrader_$13660",
                "typeString": "contract IConverterUpgrader"
              }
            },
            "id": 12336,
            "nodeType": "InheritanceSpecifier",
            "src": "1281:18:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12337,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "1301:22:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 12338,
            "nodeType": "InheritanceSpecifier",
            "src": "1301:22:12"
          }
        ],
        "contractDependencies": [
          13660,
          21719,
          21818,
          22661,
          22847
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 12334,
          "nodeType": "StructuredDocumentation",
          "src": "433:816:12",
          "text": " @dev Converter Upgrader\n The converter upgrader contract allows upgrading an older converter contract (0.4 and up)\n to the latest version.\n To begin the upgrade process, simply execute the 'upgrade' function.\n At the end of the process, the ownership of the newly upgraded converter will be transferred\n back to the original owner and the original owner will need to execute the 'acceptOwnership' function.\n The address of the new converter is available in the ConverterUpgrade event.\n Note that for older converters that don't yet have the 'upgrade' function, ownership should first\n be transferred manually to the ConverterUpgrader contract using the 'transferOwnership' function\n and then the upgrader 'upgrade' function should be executed directly."
        },
        "fullyImplemented": true,
        "id": 13009,
        "linearizedBaseContracts": [
          13009,
          21719,
          22661,
          21818,
          22847,
          13660
        ],
        "name": "ConverterUpgrader",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 12343,
            "mutability": "constant",
            "name": "ETH_RESERVE_ADDRESS",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 13009,
            "src": "1331:106:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Token_$21127",
              "typeString": "contract IERC20Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 12339,
              "name": "IERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21127,
              "src": "1331:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                  "id": 12341,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1394:42:12",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  }
                ],
                "id": 12340,
                "name": "IERC20Token",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 21127,
                "src": "1382:11:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                  "typeString": "type(contract IERC20Token)"
                }
              },
              "id": 12342,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1382:55:12",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "functionSelector": "b8066bcb",
            "id": 12345,
            "mutability": "mutable",
            "name": "etherToken",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 13009,
            "src": "1444:29:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IEtherToken_$21153",
              "typeString": "contract IEtherToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 12344,
              "name": "IEtherToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21153,
              "src": "1444:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEtherToken_$21153",
                "typeString": "contract IEtherToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 12346,
              "nodeType": "StructuredDocumentation",
              "src": "1482:202:12",
              "text": " @dev triggered when the contract accept a converter ownership\n @param _converter   converter address\n @param _owner       new owner - local upgrader address"
            },
            "id": 12352,
            "name": "ConverterOwned",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12348,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12352,
                  "src": "1711:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12347,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "1711:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12350,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12352,
                  "src": "1742:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12349,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1742:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1710:55:12"
            },
            "src": "1690:76:12"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 12353,
              "nodeType": "StructuredDocumentation",
              "src": "1774:189:12",
              "text": " @dev triggered when the upgrading process is done\n @param _oldConverter    old converter address\n @param _newConverter    new converter address"
            },
            "id": 12359,
            "name": "ConverterUpgrade",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12355,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12359,
                  "src": "1992:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1992:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12357,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12359,
                  "src": "2023:29:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2023:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1991:62:12"
            },
            "src": "1969:85:12"
          },
          {
            "body": {
              "id": 12374,
              "nodeType": "Block",
              "src": "2323:43:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12370,
                      "name": "etherToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12345,
                      "src": "2334:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                        "typeString": "contract IEtherToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12371,
                      "name": "_etherToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12364,
                      "src": "2347:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                        "typeString": "contract IEtherToken"
                      }
                    },
                    "src": "2334:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEtherToken_$21153",
                      "typeString": "contract IEtherToken"
                    }
                  },
                  "id": 12373,
                  "nodeType": "ExpressionStatement",
                  "src": "2334:24:12"
                }
              ]
            },
            "documentation": {
              "id": 12360,
              "nodeType": "StructuredDocumentation",
              "src": "2062:148:12",
              "text": " @dev initializes a new ConverterUpgrader instance\n @param _registry    address of a contract registry contract"
            },
            "id": 12375,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12367,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12362,
                    "src": "2305:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 12368,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12366,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "2282:22:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2282:33:12"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12362,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12375,
                  "src": "2228:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12361,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "2228:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12364,
                  "mutability": "mutable",
                  "name": "_etherToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12375,
                  "src": "2257:23:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEtherToken_$21153",
                    "typeString": "contract IEtherToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12363,
                    "name": "IEtherToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21153,
                    "src": "2257:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEtherToken_$21153",
                      "typeString": "contract IEtherToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2227:54:12"
            },
            "returnParameters": {
              "id": 12369,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2323:0:12"
            },
            "scope": 13009,
            "src": "2216:150:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13654
            ],
            "body": {
              "id": 12390,
              "nodeType": "Block",
              "src": "2845:63:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12384,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2878:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2878:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 12383,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "2867:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 12386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2867:22:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12387,
                        "name": "_version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12378,
                        "src": "2891:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12382,
                      "name": "upgradeOld",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12530,
                      "src": "2856:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract IConverter,bytes32)"
                      }
                    },
                    "id": 12388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2856:44:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12389,
                  "nodeType": "ExpressionStatement",
                  "src": "2856:44:12"
                }
              ]
            },
            "documentation": {
              "id": 12376,
              "nodeType": "StructuredDocumentation",
              "src": "2374:414:12",
              "text": " @dev upgrades an old converter to the latest version\n will throw if ownership wasn't transferred to the upgrader before calling this function.\n ownership of the new converter will be transferred back to the original owner.\n fires the ConverterUpgrade event upon success.\n can only be called by a converter\n @param _version old converter version"
            },
            "functionSelector": "bc444e13",
            "id": 12391,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 12380,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2836:8:12"
            },
            "parameters": {
              "id": 12379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12378,
                  "mutability": "mutable",
                  "name": "_version",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12391,
                  "src": "2811:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12377,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2811:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2810:18:12"
            },
            "returnParameters": {
              "id": 12381,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2845:0:12"
            },
            "scope": 13009,
            "src": "2794:114:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13659
            ],
            "body": {
              "id": 12412,
              "nodeType": "Block",
              "src": "3386:81:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12400,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3419:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3419:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 12399,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "3408:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 12402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3408:22:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12407,
                                "name": "_version",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12394,
                                "src": "3448:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "id": 12406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3440:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12405,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3440:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3440:17:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3432:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12403,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3432:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3432:26:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12398,
                      "name": "upgradeOld",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12530,
                      "src": "3397:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_bytes32_$returns$__$",
                        "typeString": "function (contract IConverter,bytes32)"
                      }
                    },
                    "id": 12410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3397:62:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12411,
                  "nodeType": "ExpressionStatement",
                  "src": "3397:62:12"
                }
              ]
            },
            "documentation": {
              "id": 12392,
              "nodeType": "StructuredDocumentation",
              "src": "2916:414:12",
              "text": " @dev upgrades an old converter to the latest version\n will throw if ownership wasn't transferred to the upgrader before calling this function.\n ownership of the new converter will be transferred back to the original owner.\n fires the ConverterUpgrade event upon success.\n can only be called by a converter\n @param _version old converter version"
            },
            "functionSelector": "90f58c96",
            "id": 12413,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 12396,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3377:8:12"
            },
            "parameters": {
              "id": 12395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12394,
                  "mutability": "mutable",
                  "name": "_version",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12413,
                  "src": "3353:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 12393,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "3353:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3352:17:12"
            },
            "returnParameters": {
              "id": 12397,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3386:0:12"
            },
            "scope": 13009,
            "src": "3336:131:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12529,
              "nodeType": "Block",
              "src": "3984:1045:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12421,
                    "name": "_version",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12418,
                    "src": "3995:8:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12422,
                  "nodeType": "ExpressionStatement",
                  "src": "3995:8:12"
                },
                {
                  "assignments": [
                    12424
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12424,
                      "mutability": "mutable",
                      "name": "converter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4014:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12423,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "4014:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12428,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12426,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12416,
                        "src": "4048:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12425,
                      "name": "IConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13340,
                      "src": "4037:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                        "typeString": "type(contract IConverter)"
                      }
                    },
                    "id": 12427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4037:22:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4014:45:12"
                },
                {
                  "assignments": [
                    12430
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12430,
                      "mutability": "mutable",
                      "name": "prevOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4070:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12429,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4070:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12434,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12431,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4090:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22838,
                      "src": "4090:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 12433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4090:17:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4070:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12436,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4143:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12435,
                      "name": "acceptConverterOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12550,
                      "src": "4118:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 12437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4118:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12438,
                  "nodeType": "ExpressionStatement",
                  "src": "4118:35:12"
                },
                {
                  "assignments": [
                    12440
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12440,
                      "mutability": "mutable",
                      "name": "newConverter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4164:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12439,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "4164:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12444,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12442,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4206:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12441,
                      "name": "createConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12624,
                      "src": "4190:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$_t_contract$_IConverter_$13340_$",
                        "typeString": "function (contract IConverter) returns (contract IConverter)"
                      }
                    },
                    "id": 12443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4190:26:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4164:52:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12446,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4240:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12447,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4251:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12445,
                      "name": "copyReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12697,
                      "src": "4227:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter)"
                      }
                    },
                    "id": 12448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4227:37:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12449,
                  "nodeType": "ExpressionStatement",
                  "src": "4227:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12451,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4293:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12452,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4304:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12450,
                      "name": "copyConversionFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12718,
                      "src": "4275:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter)"
                      }
                    },
                    "id": 12453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4275:42:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12454,
                  "nodeType": "ExpressionStatement",
                  "src": "4275:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12456,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4352:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12457,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4363:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12455,
                      "name": "transferReserveBalances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12831,
                      "src": "4328:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter)"
                      }
                    },
                    "id": 12458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4328:48:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12459,
                  "nodeType": "ExpressionStatement",
                  "src": "4328:48:12"
                },
                {
                  "assignments": [
                    12461
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12461,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4387:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12460,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "4387:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12465,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12462,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4413:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "4413:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 12464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4413:17:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4387:43:12"
                },
                {
                  "assignments": [
                    12467
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12467,
                      "mutability": "mutable",
                      "name": "activate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12529,
                      "src": "4511:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12466,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4511:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12475,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12469,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12424,
                          "src": "4550:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 12468,
                        "name": "isV28OrHigherConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13008,
                        "src": "4527:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                          "typeString": "function (contract IConverter) view returns (bool)"
                        }
                      },
                      "id": 12470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4527:33:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12471,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12424,
                          "src": "4564:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 12472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isActive",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13200,
                        "src": "4564:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                          "typeString": "function () view external returns (bool)"
                        }
                      },
                      "id": 12473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4564:20:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4527:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4511:73:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12476,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12461,
                          "src": "4601:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "id": 12477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22838,
                        "src": "4601:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 12478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4601:14:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12481,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12424,
                          "src": "4627:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 12480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4619:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 12479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 12482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4619:18:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4601:36:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12499,
                  "nodeType": "IfStatement",
                  "src": "4597:175:12",
                  "trueBody": {
                    "id": 12498,
                    "nodeType": "Block",
                    "src": "4639:133:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12489,
                                  "name": "newConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12440,
                                  "src": "4695:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                ],
                                "id": 12488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4687:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12487,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4687:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4687:21:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12484,
                              "name": "converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12424,
                              "src": "4654:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferTokenOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13302,
                            "src": "4654:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 12491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4654:55:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12492,
                        "nodeType": "ExpressionStatement",
                        "src": "4654:55:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12493,
                              "name": "newConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12440,
                              "src": "4724:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "acceptAnchorOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13261,
                            "src": "4724:34:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 12496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4724:36:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12497,
                        "nodeType": "ExpressionStatement",
                        "src": "4724:36:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12501,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4807:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12502,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4818:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12503,
                        "name": "activate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12467,
                        "src": "4832:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12500,
                      "name": "handleTypeSpecificData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12953,
                      "src": "4784:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$_t_contract$_IConverter_$13340_$_t_bool_$returns$__$",
                        "typeString": "function (contract IConverter,contract IConverter,bool)"
                      }
                    },
                    "id": 12504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4784:57:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12505,
                  "nodeType": "ExpressionStatement",
                  "src": "4784:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12509,
                        "name": "prevOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12430,
                        "src": "4882:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12506,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12424,
                        "src": "4854:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "4854:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 12510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4854:38:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12511,
                  "nodeType": "ExpressionStatement",
                  "src": "4854:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12515,
                        "name": "prevOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12430,
                        "src": "4934:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12512,
                        "name": "newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12440,
                        "src": "4903:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "4903:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 12516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4903:41:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12517,
                  "nodeType": "ExpressionStatement",
                  "src": "4903:41:12"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12521,
                            "name": "converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12424,
                            "src": "4987:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 12520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4979:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12519,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4979:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4979:18:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12525,
                            "name": "newConverter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12440,
                            "src": "5007:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 12524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4999:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12523,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4999:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4999:21:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 12518,
                      "name": "ConverterUpgrade",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12359,
                      "src": "4962:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 12527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4962:59:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12528,
                  "nodeType": "EmitStatement",
                  "src": "4957:64:12"
                }
              ]
            },
            "documentation": {
              "id": 12414,
              "nodeType": "StructuredDocumentation",
              "src": "3475:435:12",
              "text": " @dev upgrades an old converter to the latest version\n will throw if ownership wasn't transferred to the upgrader before calling this function.\n ownership of the new converter will be transferred back to the original owner.\n fires the ConverterUpgrade event upon success.\n @param _converter   old converter contract address\n @param _version     old converter version"
            },
            "functionSelector": "f2cfed87",
            "id": 12530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "upgradeOld",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12416,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12530,
                  "src": "3936:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12415,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "3936:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12418,
                  "mutability": "mutable",
                  "name": "_version",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12530,
                  "src": "3959:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12417,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3959:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3935:41:12"
            },
            "returnParameters": {
              "id": 12420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3984:0:12"
            },
            "scope": 13009,
            "src": "3916:1113:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12549,
              "nodeType": "Block",
              "src": "5484:110:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12536,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12533,
                        "src": "5495:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "5495:29:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 12539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5495:31:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12540,
                  "nodeType": "ExpressionStatement",
                  "src": "5495:31:12"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12542,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12533,
                        "src": "5557:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12545,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "5580:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                              "typeString": "contract ConverterUpgrader"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                              "typeString": "contract ConverterUpgrader"
                            }
                          ],
                          "id": 12544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5572:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12543,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5572:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5572:13:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12541,
                      "name": "ConverterOwned",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12352,
                      "src": "5542:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverter_$13340_$_t_address_$returns$__$",
                        "typeString": "function (contract IConverter,address)"
                      }
                    },
                    "id": 12547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5542:44:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12548,
                  "nodeType": "EmitStatement",
                  "src": "5537:49:12"
                }
              ]
            },
            "documentation": {
              "id": 12531,
              "nodeType": "StructuredDocumentation",
              "src": "5037:373:12",
              "text": " @dev the first step when upgrading a converter is to transfer the ownership to the local contract.\n the upgrader contract then needs to accept the ownership transfer before initiating\n the upgrade process.\n fires the ConverterOwned event upon success\n @param _oldConverter       converter to accept ownership of"
            },
            "id": 12550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "acceptConverterOwnership",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12533,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12550,
                  "src": "5450:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12532,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5450:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5449:26:12"
            },
            "returnParameters": {
              "id": 12535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5484:0:12"
            },
            "scope": 13009,
            "src": "5416:178:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12623,
              "nodeType": "Block",
              "src": "6010:912:12",
              "statements": [
                {
                  "assignments": [
                    12559
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12559,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6021:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12558,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "6021:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12563,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12560,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6047:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "6047:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 12562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6047:21:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6021:47:12"
                },
                {
                  "assignments": [
                    12565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12565,
                      "mutability": "mutable",
                      "name": "maxConversionFee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6079:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12564,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6079:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12569,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12566,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6105:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maxConversionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13243,
                      "src": "6105:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 12568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6105:32:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6079:58:12"
                },
                {
                  "assignments": [
                    12571
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12571,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6148:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12570,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "6148:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12575,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12572,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6175:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12573,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "6175:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 12574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6175:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6148:62:12"
                },
                {
                  "assignments": [
                    12577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12577,
                      "mutability": "mutable",
                      "name": "newType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6264:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12576,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "6264:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12579,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 12578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6281:1:12",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6264:18:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12581,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12553,
                        "src": "6387:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 12580,
                      "name": "isV28OrHigherConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13008,
                      "src": "6364:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                        "typeString": "function (contract IConverter) view returns (bool)"
                      }
                    },
                    "id": 12582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6364:37:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "id": 12591,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 12589,
                        "name": "reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12571,
                        "src": "6592:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 12590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6612:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6592:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 12596,
                    "nodeType": "IfStatement",
                    "src": "6588:51:12",
                    "trueBody": {
                      "expression": {
                        "argumentTypes": null,
                        "id": 12594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 12592,
                          "name": "newType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12577,
                          "src": "6628:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6638:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "6628:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "id": 12595,
                      "nodeType": "ExpressionStatement",
                      "src": "6628:11:12"
                    }
                  },
                  "id": 12597,
                  "nodeType": "IfStatement",
                  "src": "6360:279:12",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12587,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 12583,
                        "name": "newType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12577,
                        "src": "6416:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12584,
                            "name": "_oldConverter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12553,
                            "src": "6426:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          },
                          "id": 12585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "converterType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13190,
                          "src": "6426:27:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_pure$__$returns$_t_uint16_$",
                            "typeString": "function () pure external returns (uint16)"
                          }
                        },
                        "id": 12586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6426:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "src": "6416:39:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 12588,
                    "nodeType": "ExpressionStatement",
                    "src": "6416:39:12"
                  }
                },
                {
                  "assignments": [
                    12599
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12599,
                      "mutability": "mutable",
                      "name": "converterFactory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6652:34:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                        "typeString": "contract IConverterFactory"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12598,
                        "name": "IConverterFactory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13389,
                        "src": "6652:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                          "typeString": "contract IConverterFactory"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12605,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12602,
                            "name": "CONVERTER_FACTORY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21536,
                            "src": "6717:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12601,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "6707:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 12603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6707:28:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12600,
                      "name": "IConverterFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13389,
                      "src": "6689:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterFactory_$13389_$",
                        "typeString": "type(contract IConverterFactory)"
                      }
                    },
                    "id": 12604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6689:47:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                      "typeString": "contract IConverterFactory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6652:84:12"
                },
                {
                  "assignments": [
                    12607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12607,
                      "mutability": "mutable",
                      "name": "converter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12623,
                      "src": "6747:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12606,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "6747:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12615,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12610,
                        "name": "newType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12577,
                        "src": "6803:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12611,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12559,
                        "src": "6812:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12612,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21562,
                        "src": "6820:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                          "typeString": "contract IContractRegistry"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12613,
                        "name": "maxConversionFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12565,
                        "src": "6830:16:12",
                        "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": 12608,
                        "name": "converterFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12599,
                        "src": "6770:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                          "typeString": "contract IConverterFactory"
                        }
                      },
                      "id": 12609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createConverter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13381,
                      "src": "6770:32:12",
                      "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": 12614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6770:77:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6747:100:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12616,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12607,
                        "src": "6860:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "6860:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 12619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6860:27:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12620,
                  "nodeType": "ExpressionStatement",
                  "src": "6860:27:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12621,
                    "name": "converter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12607,
                    "src": "6905:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "functionReturnParameters": 12557,
                  "id": 12622,
                  "nodeType": "Return",
                  "src": "6898:16:12"
                }
              ]
            },
            "documentation": {
              "id": 12551,
              "nodeType": "StructuredDocumentation",
              "src": "5602:322:12",
              "text": " @dev creates a new converter with same basic data as the original old converter\n the newly created converter will have no reserves at this step.\n @param _oldConverter    old converter contract address\n @return the new converter  new converter contract address"
            },
            "id": 12624,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12553,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12624,
                  "src": "5955:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12552,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5955:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5954:26:12"
            },
            "returnParameters": {
              "id": 12557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12556,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12624,
                  "src": "5998:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12555,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5998:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5997:12:12"
            },
            "scope": 13009,
            "src": "5930:992:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12696,
              "nodeType": "Block",
              "src": "7349:801:12",
              "statements": [
                {
                  "assignments": [
                    12633
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12633,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12696,
                      "src": "7360:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12632,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "7360:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12637,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12634,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12627,
                        "src": "7387:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "7387:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 12636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7387:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7360:62:12"
                },
                {
                  "body": {
                    "id": 12694,
                    "nodeType": "Block",
                    "src": "7482:661:12",
                    "statements": [
                      {
                        "assignments": [
                          12649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12649,
                            "mutability": "mutable",
                            "name": "reserveAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12694,
                            "src": "7497:26:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12648,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "7497:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12654,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12652,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12639,
                              "src": "7556:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12650,
                              "name": "_oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12627,
                              "src": "7526:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "7526:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 12653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7526:32:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7497:61:12"
                      },
                      {
                        "assignments": [
                          null,
                          12656,
                          null,
                          null,
                          null
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 12656,
                            "mutability": "mutable",
                            "name": "weight",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12694,
                            "src": "7576:13:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 12655,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7576:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          null,
                          null
                        ],
                        "id": 12661,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12659,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12649,
                              "src": "7624:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12657,
                              "name": "_oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12627,
                              "src": "7599:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13320,
                            "src": "7599:24:12",
                            "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": 12660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7599:40:12",
                          "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": "7573:66:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          "id": 12664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12662,
                            "name": "reserveAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12649,
                            "src": "7690:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12663,
                            "name": "ETH_RESERVE_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12343,
                            "src": "7708:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "src": "7690:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "id": 12675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12673,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12649,
                              "src": "7876:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12674,
                              "name": "etherToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "7894:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                "typeString": "contract IEtherToken"
                              }
                            },
                            "src": "7876:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 12691,
                            "nodeType": "Block",
                            "src": "8049:83:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12687,
                                      "name": "reserveAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12649,
                                      "src": "8093:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12688,
                                      "name": "weight",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12656,
                                      "src": "8109:6:12",
                                      "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": 12684,
                                      "name": "_newConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12629,
                                      "src": "8068:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addReserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13292,
                                    "src": "8068:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                                      "typeString": "function (contract IERC20Token,uint32) external"
                                    }
                                  },
                                  "id": 12689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8068:48:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12690,
                                "nodeType": "ExpressionStatement",
                                "src": "8068:48:12"
                              }
                            ]
                          },
                          "id": 12692,
                          "nodeType": "IfStatement",
                          "src": "7872:260:12",
                          "trueBody": {
                            "id": 12683,
                            "nodeType": "Block",
                            "src": "7906:88:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12679,
                                      "name": "ETH_RESERVE_ADDRESS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12343,
                                      "src": "7950:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12680,
                                      "name": "weight",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12656,
                                      "src": "7971:6:12",
                                      "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": 12676,
                                      "name": "_newConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12629,
                                      "src": "7925:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addReserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13292,
                                    "src": "7925:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                                      "typeString": "function (contract IERC20Token,uint32) external"
                                    }
                                  },
                                  "id": 12681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7925:53:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12682,
                                "nodeType": "ExpressionStatement",
                                "src": "7925:53:12"
                              }
                            ]
                          }
                        },
                        "id": 12693,
                        "nodeType": "IfStatement",
                        "src": "7686:446:12",
                        "trueBody": {
                          "id": 12672,
                          "nodeType": "Block",
                          "src": "7729:88:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12668,
                                    "name": "ETH_RESERVE_ADDRESS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12343,
                                    "src": "7773:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12669,
                                    "name": "weight",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12656,
                                    "src": "7794:6:12",
                                    "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": 12665,
                                    "name": "_newConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12629,
                                    "src": "7748:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "id": 12667,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addReserve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13292,
                                  "src": "7748:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                                    "typeString": "function (contract IERC20Token,uint32) external"
                                  }
                                },
                                "id": 12670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7748:53:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12671,
                              "nodeType": "ExpressionStatement",
                              "src": "7748:53:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 12644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12642,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12639,
                      "src": "7454:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12643,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12633,
                      "src": "7458:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7454:21:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12695,
                  "initializationExpression": {
                    "assignments": [
                      12639
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12639,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12695,
                        "src": "7440:8:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12638,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "7440:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12641,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7451:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7440:12:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7477:3:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12645,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12639,
                        "src": "7477:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 12647,
                    "nodeType": "ExpressionStatement",
                    "src": "7477:3:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "7435:708:12"
                }
              ]
            },
            "documentation": {
              "id": 12625,
              "nodeType": "StructuredDocumentation",
              "src": "6930:331:12",
              "text": " @dev copies the reserves from the old converter to the new one.\n note that this will not work for an unlimited number of reserves due to block gas limit constraints.\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address"
            },
            "id": 12697,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copyReserves",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12627,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12697,
                  "src": "7289:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12626,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "7289:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12629,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12697,
                  "src": "7315:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12628,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "7315:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7288:52:12"
            },
            "returnParameters": {
              "id": 12631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7349:0:12"
            },
            "scope": 13009,
            "src": "7267:883:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12717,
              "nodeType": "Block",
              "src": "8477:127:12",
              "statements": [
                {
                  "assignments": [
                    12706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12706,
                      "mutability": "mutable",
                      "name": "conversionFee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12717,
                      "src": "8488:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 12705,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8488:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12710,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12707,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12700,
                        "src": "8511:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "conversionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13238,
                      "src": "8511:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                        "typeString": "function () view external returns (uint32)"
                      }
                    },
                    "id": 12709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8511:29:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8488:52:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12714,
                        "name": "conversionFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12706,
                        "src": "8582:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12711,
                        "name": "_newConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12702,
                        "src": "8551:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setConversionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13266,
                      "src": "8551:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint32_$returns$__$",
                        "typeString": "function (uint32) external"
                      }
                    },
                    "id": 12715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8551:45:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12716,
                  "nodeType": "ExpressionStatement",
                  "src": "8551:45:12"
                }
              ]
            },
            "documentation": {
              "id": 12698,
              "nodeType": "StructuredDocumentation",
              "src": "8158:226:12",
              "text": " @dev copies the conversion fee from the old converter to the new one\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address"
            },
            "id": 12718,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copyConversionFee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12700,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12718,
                  "src": "8417:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12699,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "8417:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12702,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12718,
                  "src": "8443:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12701,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "8443:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8416:52:12"
            },
            "returnParameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8477:0:12"
            },
            "scope": 13009,
            "src": "8390:214:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12830,
              "nodeType": "Block",
              "src": "9154:1092:12",
              "statements": [
                {
                  "assignments": [
                    12727
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12727,
                      "mutability": "mutable",
                      "name": "reserveBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12830,
                      "src": "9165:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12726,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9165:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12728,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9165:22:12"
                },
                {
                  "assignments": [
                    12730
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12730,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12830,
                      "src": "9198:24:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12729,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "9198:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12734,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12731,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12721,
                        "src": "9225:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "9225:33:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 12733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9225:35:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9198:62:12"
                },
                {
                  "body": {
                    "id": 12828,
                    "nodeType": "Block",
                    "src": "9320:919:12",
                    "statements": [
                      {
                        "assignments": [
                          12746
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12746,
                            "mutability": "mutable",
                            "name": "reserveAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12828,
                            "src": "9335:26:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12745,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "9335:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12751,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12749,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12736,
                              "src": "9394:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12747,
                              "name": "_oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12721,
                              "src": "9364:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 12748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "9364:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 12750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9364:32:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9335:61:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          "id": 12754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12752,
                            "name": "reserveAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12746,
                            "src": "9445:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12753,
                            "name": "ETH_RESERVE_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12343,
                            "src": "9463:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "src": "9445:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "id": 12767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12765,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12746,
                              "src": "9627:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12766,
                              "name": "etherToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12345,
                              "src": "9645:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                "typeString": "contract IEtherToken"
                              }
                            },
                            "src": "9627:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 12825,
                            "nodeType": "Block",
                            "src": "9978:250:12",
                            "statements": [
                              {
                                "assignments": [
                                  12801
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 12801,
                                    "mutability": "mutable",
                                    "name": "connector",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 12825,
                                    "src": "9997:21:12",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    },
                                    "typeName": {
                                      "contractScope": null,
                                      "id": 12800,
                                      "name": "IERC20Token",
                                      "nodeType": "UserDefinedTypeName",
                                      "referencedDeclaration": 21127,
                                      "src": "9997:11:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 12803,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "id": 12802,
                                  "name": "reserveAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12746,
                                  "src": "10021:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9997:38:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 12804,
                                    "name": "reserveBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12727,
                                    "src": "10054:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 12809,
                                            "name": "_oldConverter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12721,
                                            "src": "10099:13:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          ],
                                          "id": 12808,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10091:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 12807,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10091:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 12810,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10091:22:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12805,
                                        "name": "connector",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12801,
                                        "src": "10071:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                          "typeString": "contract IERC20Token"
                                        }
                                      },
                                      "id": 12806,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21088,
                                      "src": "10071:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 12811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10071:43:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10054:60:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 12813,
                                "nodeType": "ExpressionStatement",
                                "src": "10054:60:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12817,
                                      "name": "connector",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12801,
                                      "src": "10162:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12820,
                                          "name": "_newConverter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12723,
                                          "src": "10181:13:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        ],
                                        "id": 12819,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10173:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12818,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10173:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 12821,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10173:22:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12822,
                                      "name": "reserveBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12727,
                                      "src": "10197:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                        "typeString": "contract IERC20Token"
                                      },
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12814,
                                      "name": "_oldConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12721,
                                      "src": "10133:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "withdrawTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13280,
                                    "src": "10133:28:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (contract IERC20Token,address,uint256) external"
                                    }
                                  },
                                  "id": 12823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10133:79:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12824,
                                "nodeType": "ExpressionStatement",
                                "src": "10133:79:12"
                              }
                            ]
                          },
                          "id": 12826,
                          "nodeType": "IfStatement",
                          "src": "9623:605:12",
                          "trueBody": {
                            "id": 12799,
                            "nodeType": "Block",
                            "src": "9657:266:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 12768,
                                    "name": "reserveBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12727,
                                    "src": "9676:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 12773,
                                            "name": "_oldConverter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12721,
                                            "src": "9722:13:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IConverter_$13340",
                                              "typeString": "contract IConverter"
                                            }
                                          ],
                                          "id": 12772,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9714:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 12771,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9714:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 12774,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9714:22:12",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12769,
                                        "name": "etherToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12345,
                                        "src": "9693:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                          "typeString": "contract IEtherToken"
                                        }
                                      },
                                      "id": 12770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21088,
                                      "src": "9693:20:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 12775,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9693:44:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9676:61:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 12777,
                                "nodeType": "ExpressionStatement",
                                "src": "9676:61:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12781,
                                      "name": "etherToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12345,
                                      "src": "9785:10:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                        "typeString": "contract IEtherToken"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12784,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "9805:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                                            "typeString": "contract ConverterUpgrader"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_ConverterUpgrader_$13009",
                                            "typeString": "contract ConverterUpgrader"
                                          }
                                        ],
                                        "id": 12783,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9797:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12782,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9797:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 12785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9797:13:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12786,
                                      "name": "reserveBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12727,
                                      "src": "9812:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                        "typeString": "contract IEtherToken"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12778,
                                      "name": "_oldConverter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12721,
                                      "src": "9756:13:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverter_$13340",
                                        "typeString": "contract IConverter"
                                      }
                                    },
                                    "id": 12780,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "withdrawTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13280,
                                    "src": "9756:28:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (contract IERC20Token,address,uint256) external"
                                    }
                                  },
                                  "id": 12787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9756:71:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12788,
                                "nodeType": "ExpressionStatement",
                                "src": "9756:71:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12794,
                                          "name": "_newConverter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12723,
                                          "src": "9876:13:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IConverter_$13340",
                                            "typeString": "contract IConverter"
                                          }
                                        ],
                                        "id": 12793,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9868:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 12792,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9868:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 12795,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9868:22:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12796,
                                      "name": "reserveBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12727,
                                      "src": "9892:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12789,
                                      "name": "etherToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12345,
                                      "src": "9846:10:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IEtherToken_$21153",
                                        "typeString": "contract IEtherToken"
                                      }
                                    },
                                    "id": 12791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "withdrawTo",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21152,
                                    "src": "9846:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                      "typeString": "function (address payable,uint256) external"
                                    }
                                  },
                                  "id": 12797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9846:61:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 12798,
                                "nodeType": "ExpressionStatement",
                                "src": "9846:61:12"
                              }
                            ]
                          }
                        },
                        "id": 12827,
                        "nodeType": "IfStatement",
                        "src": "9441:787:12",
                        "trueBody": {
                          "id": 12764,
                          "nodeType": "Block",
                          "src": "9484:84:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 12760,
                                        "name": "_newConverter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12723,
                                        "src": "9537:13:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IConverter_$13340",
                                          "typeString": "contract IConverter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IConverter_$13340",
                                          "typeString": "contract IConverter"
                                        }
                                      ],
                                      "id": 12759,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9529:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 12758,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9529:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 12761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9529:22:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12755,
                                    "name": "_oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12721,
                                    "src": "9503:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "id": 12757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdrawETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13285,
                                  "src": "9503:25:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$",
                                    "typeString": "function (address payable) external"
                                  }
                                },
                                "id": 12762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9503:49:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12763,
                              "nodeType": "ExpressionStatement",
                              "src": "9503:49:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 12741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12739,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12736,
                      "src": "9292:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 12740,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12730,
                      "src": "9296:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "9292:21:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12829,
                  "initializationExpression": {
                    "assignments": [
                      12736
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12736,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12829,
                        "src": "9278:8:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12735,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9278:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12738,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9289:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9278:12:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9315:3:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12742,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12736,
                        "src": "9315:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 12744,
                    "nodeType": "ExpressionStatement",
                    "src": "9315:3:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "9273:966:12"
                }
              ]
            },
            "documentation": {
              "id": 12719,
              "nodeType": "StructuredDocumentation",
              "src": "8612:443:12",
              "text": " @dev transfers the balance of each reserve in the old converter to the new one.\n note that the function assumes that the new converter already has the exact same number of\n also, this will not work for an unlimited number of reserves due to block gas limit constraints.\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address"
            },
            "id": 12831,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferReserveBalances",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12724,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12721,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12831,
                  "src": "9094:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12720,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "9094:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12723,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12831,
                  "src": "9120:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12722,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "9120:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9093:52:12"
            },
            "returnParameters": {
              "id": 12725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9154:0:12"
            },
            "scope": 13009,
            "src": "9061:1185:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12952,
              "nodeType": "Block",
              "src": "10674:1454:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 12844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10689:38:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12842,
                          "name": "_oldConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12834,
                          "src": "10713:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 12841,
                        "name": "isV28OrHigherConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13008,
                        "src": "10690:22:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                          "typeString": "function (contract IConverter) view returns (bool)"
                        }
                      },
                      "id": 12843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10690:37:12",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12846,
                  "nodeType": "IfStatement",
                  "src": "10685:64:12",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 12840,
                    "id": 12845,
                    "nodeType": "Return",
                    "src": "10742:7:12"
                  }
                },
                {
                  "assignments": [
                    12848
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12848,
                      "mutability": "mutable",
                      "name": "converterType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12952,
                      "src": "10761:20:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 12847,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "10761:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12852,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12849,
                        "name": "_oldConverter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12834,
                        "src": "10784:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 12850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "converterType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13190,
                      "src": "10784:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$__$returns$_t_uint16_$",
                        "typeString": "function () pure external returns (uint16)"
                      }
                    },
                    "id": 12851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10784:29:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10761:52:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 12855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12853,
                      "name": "converterType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12848,
                      "src": "10828:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 12854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10845:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "10828:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12951,
                  "nodeType": "IfStatement",
                  "src": "10824:1297:12",
                  "trueBody": {
                    "id": 12950,
                    "nodeType": "Block",
                    "src": "10848:1273:12",
                    "statements": [
                      {
                        "assignments": [
                          12857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12857,
                            "mutability": "mutable",
                            "name": "oldConverter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "10863:38:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                              "typeString": "contract ILiquidityPoolV2Converter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12856,
                              "name": "ILiquidityPoolV2Converter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18765,
                              "src": "10863:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12864,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12861,
                                  "name": "_oldConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12834,
                                  "src": "10938:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                ],
                                "id": 12860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10930:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12859,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10930:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10930:22:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 12858,
                            "name": "ILiquidityPoolV2Converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18765,
                            "src": "10904:25:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILiquidityPoolV2Converter_$18765_$",
                              "typeString": "type(contract ILiquidityPoolV2Converter)"
                            }
                          },
                          "id": 12863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10904:49:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                            "typeString": "contract ILiquidityPoolV2Converter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10863:90:12"
                      },
                      {
                        "assignments": [
                          12866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12866,
                            "mutability": "mutable",
                            "name": "newConverter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "10968:38:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                              "typeString": "contract ILiquidityPoolV2Converter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12865,
                              "name": "ILiquidityPoolV2Converter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18765,
                              "src": "10968:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12873,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12870,
                                  "name": "_newConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12836,
                                  "src": "11043:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  }
                                ],
                                "id": 12869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11035:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12868,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11035:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11035:22:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 12867,
                            "name": "ILiquidityPoolV2Converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18765,
                            "src": "11009:25:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILiquidityPoolV2Converter_$18765_$",
                              "typeString": "type(contract ILiquidityPoolV2Converter)"
                            }
                          },
                          "id": 12872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11009:49:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                            "typeString": "contract ILiquidityPoolV2Converter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10968:90:12"
                      },
                      {
                        "assignments": [
                          12875
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12875,
                            "mutability": "mutable",
                            "name": "reserveTokenCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11075:24:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 12874,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "11075:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12879,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12876,
                              "name": "oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12857,
                              "src": "11102:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokenCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13339,
                            "src": "11102:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                              "typeString": "function () view external returns (uint16)"
                            }
                          },
                          "id": 12878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11102:34:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11075:61:12"
                      },
                      {
                        "body": {
                          "id": 12911,
                          "nodeType": "Block",
                          "src": "11198:324:12",
                          "statements": [
                            {
                              "assignments": [
                                12891
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12891,
                                  "mutability": "mutable",
                                  "name": "reserveTokenAddress",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 12911,
                                  "src": "11265:31:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 12890,
                                    "name": "IERC20Token",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 21127,
                                    "src": "11265:11:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12896,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12894,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12881,
                                    "src": "11328:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12892,
                                    "name": "oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12857,
                                    "src": "11299:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                      "typeString": "contract ILiquidityPoolV2Converter"
                                    }
                                  },
                                  "id": 12893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "connectorTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13334,
                                  "src": "11299:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                                    "typeString": "function (uint256) view external returns (contract IERC20Token)"
                                  }
                                },
                                "id": 12895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11299:31:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11265:65:12"
                            },
                            {
                              "assignments": [
                                12898
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 12898,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 12911,
                                  "src": "11349:15:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 12897,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11349:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 12903,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12901,
                                    "name": "reserveTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12891,
                                    "src": "11401:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12899,
                                    "name": "oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12857,
                                    "src": "11367:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                      "typeString": "contract ILiquidityPoolV2Converter"
                                    }
                                  },
                                  "id": 12900,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "reserveStakedBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18738,
                                  "src": "11367:33:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                                    "typeString": "function (contract IERC20Token) view external returns (uint256)"
                                  }
                                },
                                "id": 12902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11367:54:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11349:72:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12907,
                                    "name": "reserveTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12891,
                                    "src": "11477:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12908,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12898,
                                    "src": "11498:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12904,
                                    "name": "newConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12866,
                                    "src": "11440:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                      "typeString": "contract ILiquidityPoolV2Converter"
                                    }
                                  },
                                  "id": 12906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setReserveStakedBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18745,
                                  "src": "11440:36:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$__$",
                                    "typeString": "function (contract IERC20Token,uint256) external"
                                  }
                                },
                                "id": 12909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11440:66:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12910,
                              "nodeType": "ExpressionStatement",
                              "src": "11440:66:12"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 12886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12884,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12881,
                            "src": "11170:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12885,
                            "name": "reserveTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12875,
                            "src": "11174:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "11170:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12912,
                        "initializationExpression": {
                          "assignments": [
                            12881
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12881,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 12912,
                              "src": "11156:8:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "typeName": {
                                "id": 12880,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "11156:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 12883,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11167:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11156:12:12"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11193:3:12",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 12887,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12881,
                              "src": "11193:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "id": 12889,
                          "nodeType": "ExpressionStatement",
                          "src": "11193:3:12"
                        },
                        "nodeType": "ForStatement",
                        "src": "11151:371:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11542:10:12",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 12913,
                            "name": "_activate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12838,
                            "src": "11543:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12917,
                        "nodeType": "IfStatement",
                        "src": "11538:57:12",
                        "trueBody": {
                          "id": 12916,
                          "nodeType": "Block",
                          "src": "11554:41:12",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 12840,
                              "id": 12915,
                              "nodeType": "Return",
                              "src": "11573:7:12"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12919
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12919,
                            "mutability": "mutable",
                            "name": "primaryReserveToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11657:31:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12918,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "11657:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12923,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12920,
                              "name": "oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12857,
                              "src": "11691:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "primaryReserveToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18750,
                            "src": "11691:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function () view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 12922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11691:34:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11657:68:12"
                      },
                      {
                        "assignments": [
                          12925
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12925,
                            "mutability": "mutable",
                            "name": "priceOracle",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11790:24:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                              "typeString": "contract IPriceOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12924,
                              "name": "IPriceOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22891,
                              "src": "11790:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                                "typeString": "contract IPriceOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12929,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12926,
                              "name": "oldConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12857,
                              "src": "11817:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "priceOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18755,
                            "src": "11817:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IPriceOracle_$22891_$",
                              "typeString": "function () view external returns (contract IPriceOracle)"
                            }
                          },
                          "id": 12928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11817:26:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                            "typeString": "contract IPriceOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11790:53:12"
                      },
                      {
                        "assignments": [
                          12931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12931,
                            "mutability": "mutable",
                            "name": "oracleA",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11858:29:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                              "typeString": "contract IChainlinkPriceOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12930,
                              "name": "IChainlinkPriceOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22821,
                              "src": "11858:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12935,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12932,
                              "name": "priceOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12925,
                              "src": "11890:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                                "typeString": "contract IPriceOracle"
                              }
                            },
                            "id": 12933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenAOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22856,
                            "src": "11890:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IChainlinkPriceOracle_$22821_$",
                              "typeString": "function () view external returns (contract IChainlinkPriceOracle)"
                            }
                          },
                          "id": 12934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11890:26:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                            "typeString": "contract IChainlinkPriceOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11858:58:12"
                      },
                      {
                        "assignments": [
                          12937
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12937,
                            "mutability": "mutable",
                            "name": "oracleB",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12950,
                            "src": "11931:29:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                              "typeString": "contract IChainlinkPriceOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12936,
                              "name": "IChainlinkPriceOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22821,
                              "src": "11931:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12941,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12938,
                              "name": "priceOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12925,
                              "src": "11963:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracle_$22891",
                                "typeString": "contract IPriceOracle"
                              }
                            },
                            "id": 12939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenBOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22861,
                            "src": "11963:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IChainlinkPriceOracle_$22821_$",
                              "typeString": "function () view external returns (contract IChainlinkPriceOracle)"
                            }
                          },
                          "id": 12940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11963:26:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                            "typeString": "contract IChainlinkPriceOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11931:58:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12945,
                              "name": "primaryReserveToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12919,
                              "src": "12071:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12946,
                              "name": "oracleA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12931,
                              "src": "12092:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12947,
                              "name": "oracleB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12937,
                              "src": "12101:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              },
                              {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              },
                              {
                                "typeIdentifier": "t_contract$_IChainlinkPriceOracle_$22821",
                                "typeString": "contract IChainlinkPriceOracle"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12942,
                              "name": "newConverter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12866,
                              "src": "12049:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityPoolV2Converter_$18765",
                                "typeString": "contract ILiquidityPoolV2Converter"
                              }
                            },
                            "id": 12944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "activate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18764,
                            "src": "12049:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IChainlinkPriceOracle_$22821_$_t_contract$_IChainlinkPriceOracle_$22821_$returns$__$",
                              "typeString": "function (contract IERC20Token,contract IChainlinkPriceOracle,contract IChainlinkPriceOracle) external"
                            }
                          },
                          "id": 12948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12049:60:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12949,
                        "nodeType": "ExpressionStatement",
                        "src": "12049:60:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 12832,
              "nodeType": "StructuredDocumentation",
              "src": "10254:306:12",
              "text": " @dev handles upgrading custom (type specific) data from the old converter to the new one\n @param _oldConverter    old converter contract address\n @param _newConverter    new converter contract address\n @param _activate        activate the new converter"
            },
            "id": 12953,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "handleTypeSpecificData",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12834,
                  "mutability": "mutable",
                  "name": "_oldConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12953,
                  "src": "10598:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12833,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "10598:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12836,
                  "mutability": "mutable",
                  "name": "_newConverter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12953,
                  "src": "10624:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12835,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "10624:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12838,
                  "mutability": "mutable",
                  "name": "_activate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12953,
                  "src": "10650:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12837,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10650:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10597:68:12"
            },
            "returnParameters": {
              "id": 12840,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10674:0:12"
            },
            "scope": 13009,
            "src": "10566:1562:12",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12961,
            "mutability": "constant",
            "name": "IS_V28_OR_HIGHER_FUNC_SELECTOR",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 13009,
            "src": "12136:93:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 12954,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "12136:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "69735632384f724869676865722829",
                      "id": 12958,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12210:17:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_d260529c8620a59d78f2e58cfd1294673bb6cba228ad1f34ac7731003ab870dd",
                        "typeString": "literal_string \"isV28OrHigher()\""
                      },
                      "value": "isV28OrHigher()"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_d260529c8620a59d78f2e58cfd1294673bb6cba228ad1f34ac7731003ab870dd",
                        "typeString": "literal_string \"isV28OrHigher()\""
                      }
                    ],
                    "id": 12957,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "12200:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 12959,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "12200:28:12",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                ],
                "id": 12956,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "12193:6:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes4_$",
                  "typeString": "type(bytes4)"
                },
                "typeName": {
                  "id": 12955,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "12193:6:12",
                  "typeDescriptions": {
                    "typeIdentifier": null,
                    "typeString": null
                  }
                }
              },
              "id": 12960,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "12193:36:12",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 13007,
              "nodeType": "Block",
              "src": "12486:336:12",
              "statements": [
                {
                  "assignments": [
                    12969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12969,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13007,
                      "src": "12497:17:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12968,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12497:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12974,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12972,
                        "name": "IS_V28_OR_HIGHER_FUNC_SELECTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12961,
                        "src": "12540:30:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12970,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "12517:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 12971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12517:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 12973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12517:54:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12497:74:12"
                },
                {
                  "assignments": [
                    12976,
                    12978
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12976,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13007,
                      "src": "12583:12:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12975,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12583:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12978,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13007,
                      "src": "12597:23:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 12977,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12597:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12988,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12986,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12969,
                        "src": "12668:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "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": 12981,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12963,
                              "src": "12632:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            ],
                            "id": 12980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12624:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 12979,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12624:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 12982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12624:19:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 12983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "staticcall",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12624:30:12",
                        "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": 12985,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "gas"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "argumentTypes": null,
                          "hexValue": "34303030",
                          "id": 12984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12661:4:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4000_by_1",
                            "typeString": "int_const 4000"
                          },
                          "value": "4000"
                        }
                      ],
                      "src": "12624:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 12987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12624:49:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12582:91:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 12994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12989,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12976,
                      "src": "12690:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 12993,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12990,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12978,
                          "src": "12701:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12701:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 12992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12722:2:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "12701:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12690:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13004,
                  "nodeType": "IfStatement",
                  "src": "12686:104:12",
                  "trueBody": {
                    "id": 13003,
                    "nodeType": "Block",
                    "src": "12726:64:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12997,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12978,
                              "src": "12759:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 12999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12772:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 12998,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12772:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 13000,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12771:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12995,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "12748:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12748:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12748:30:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 12967,
                        "id": 13002,
                        "nodeType": "Return",
                        "src": "12741:37:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 13005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12809:5:12",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 12967,
                  "id": 13006,
                  "nodeType": "Return",
                  "src": "12802:12:12"
                }
              ]
            },
            "documentation": null,
            "id": 13008,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigherConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12963,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13008,
                  "src": "12434:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12962,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "12434:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12433:23:12"
            },
            "returnParameters": {
              "id": 12967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12966,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13008,
                  "src": "12480:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12965,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12480:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12479:6:12"
            },
            "scope": 13009,
            "src": "12402:420:12",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 13010,
        "src": "1251:11574:12"
      }
    ],
    "src": "52:12775:12"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.3",
  "updatedAt": "2020-10-20T08:24:47.737Z",
  "devdoc": {
    "details": "Converter Upgrader The converter upgrader contract allows upgrading an older converter contract (0.4 and up) to the latest version. To begin the upgrade process, simply execute the 'upgrade' function. At the end of the process, the ownership of the newly upgraded converter will be transferred back to the original owner and the original owner will need to execute the 'acceptOwnership' function. The address of the new converter is available in the ConverterUpgrade event. Note that for older converters that don't yet have the 'upgrade' function, ownership should first be transferred manually to the ConverterUpgrader contract using the 'transferOwnership' function and then the upgrader 'upgrade' function should be executed directly.",
    "events": {
      "ConverterOwned(address,address)": {
        "details": "triggered when the contract accept a converter ownership",
        "params": {
          "_converter": "converter address",
          "_owner": "new owner - local upgrader address"
        }
      },
      "ConverterUpgrade(address,address)": {
        "details": "triggered when the upgrading process is done",
        "params": {
          "_newConverter": "new converter address",
          "_oldConverter": "old converter address"
        }
      }
    },
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "used by a new owner to accept an ownership transfer"
      },
      "constructor": {
        "details": "initializes a new ConverterUpgrader instance",
        "params": {
          "_registry": "address of a contract registry contract"
        }
      },
      "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"
      },
      "upgrade(bytes32)": {
        "details": "upgrades an old converter to the latest version will throw if ownership wasn't transferred to the upgrader before calling this function. ownership of the new converter will be transferred back to the original owner. fires the ConverterUpgrade event upon success. can only be called by a converter",
        "params": {
          "_version": "old converter version"
        }
      },
      "upgrade(uint16)": {
        "details": "upgrades an old converter to the latest version will throw if ownership wasn't transferred to the upgrader before calling this function. ownership of the new converter will be transferred back to the original owner. fires the ConverterUpgrade event upon success. can only be called by a converter",
        "params": {
          "_version": "old converter version"
        }
      },
      "upgradeOld(address,bytes32)": {
        "details": "upgrades an old converter to the latest version will throw if ownership wasn't transferred to the upgrader before calling this function. ownership of the new converter will be transferred back to the original owner. fires the ConverterUpgrade event upon success.",
        "params": {
          "_converter": "old converter contract address",
          "_version": "old converter version"
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}