{
  "contractName": "MultiChainResolver",
  "abi": [
    {
      "inputs": [
        {
          "name": "_rns",
          "type": "address"
        },
        {
          "name": "_publicResolver",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "content",
          "type": "bytes32"
        }
      ],
      "name": "ContentChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "chain",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "name": "metadata",
          "type": "bytes32"
        }
      ],
      "name": "ChainMetadataChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "chain",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "name": "addr",
          "type": "string"
        }
      ],
      "name": "ChainAddrChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "AddrChanged",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "addrValue",
          "type": "address"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "content",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "contentValue",
          "type": "bytes32"
        }
      ],
      "name": "setContent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "chain",
          "type": "bytes4"
        }
      ],
      "name": "chainAddr",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "chain",
          "type": "bytes4"
        },
        {
          "name": "addrValue",
          "type": "string"
        }
      ],
      "name": "setChainAddr",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "chain",
          "type": "bytes4"
        }
      ],
      "name": "chainMetadata",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "chain",
          "type": "bytes4"
        },
        {
          "name": "metadataValue",
          "type": "bytes32"
        }
      ],
      "name": "setChainMetadata",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "chain",
          "type": "bytes4"
        }
      ],
      "name": "chainAddrAndMetadata",
      "outputs": [
        {
          "name": "",
          "type": "string"
        },
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "chain",
          "type": "bytes4"
        },
        {
          "name": "addrValue",
          "type": "string"
        },
        {
          "name": "metadataValue",
          "type": "bytes32"
        }
      ],
      "name": "setChainAddrWithMetadata",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.10+commit.5a6ea5b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"chain\",\"type\":\"bytes4\"},{\"name\":\"metadataValue\",\"type\":\"bytes32\"}],\"name\":\"setChainMetadata\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"content\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"chain\",\"type\":\"bytes4\"}],\"name\":\"chainAddrAndMetadata\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"chain\",\"type\":\"bytes4\"}],\"name\":\"chainAddr\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"chain\",\"type\":\"bytes4\"}],\"name\":\"chainMetadata\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentValue\",\"type\":\"bytes32\"}],\"name\":\"setContent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"chain\",\"type\":\"bytes4\"},{\"name\":\"addrValue\",\"type\":\"string\"}],\"name\":\"setChainAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"addrValue\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"chain\",\"type\":\"bytes4\"},{\"name\":\"addrValue\",\"type\":\"string\"},{\"name\":\"metadataValue\",\"type\":\"bytes32\"}],\"name\":\"setChainAddrWithMetadata\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_rns\",\"type\":\"address\"},{\"name\":\"_publicResolver\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"content\",\"type\":\"bytes32\"}],\"name\":\"ContentChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"chain\",\"type\":\"bytes4\"},{\"indexed\":false,\"name\":\"metadata\",\"type\":\"bytes32\"}],\"name\":\"ChainMetadataChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"chain\",\"type\":\"bytes4\"},{\"indexed\":false,\"name\":\"addr\",\"type\":\"string\"}],\"name\":\"ChainAddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/MultiChainResolver.sol\":\"MultiChainResolver\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/registry/AbstractRNS.sol\":{\"keccak256\":\"0x93adb5d7a23e74e3b2db0df320d4a078758f5a004c21d163475d75523bd87211\",\"urls\":[\"bzzr://4de7626eef4829f16a2a28a59b8e75082a804558bda23c3e6ed6d1e85e0df68a\",\"dweb:/ipfs/QmSK5aizatR16MpXCPcjkBtJyPAYoqjCSU6iqum6rNCVSe\"]},\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractAddrResolver.sol\":{\"keccak256\":\"0x8cd6b4967ccad47262008ffda6b46699577fb5030fe453ec93fb173f016233ee\",\"urls\":[\"bzzr://ceeb8df2301215e775827f6c9f096ef49a399acf8cb09496a5052cba53620ced\",\"dweb:/ipfs/QmV715mLNSiH3fS3Bik9PDfC3PXv1v1UKQD3BFF2Dxzj3g\"]},\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractMultiChainResolver.sol\":{\"keccak256\":\"0xef08f7246e67f00211dd49817b327612900837293a48fe9313a99887a60c4cf6\",\"urls\":[\"bzzr://9c63c82bf1306c0d42f298788029665210c8e31e74d026f79a8d575f87db2c24\",\"dweb:/ipfs/QmSpp2W4pQDo9cqtvbugcpoZm7NtvKV5RT6p4hX44H4xV9\"]},\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractPublicResolver.sol\":{\"keccak256\":\"0xeff96eb3560ac286ab7f28a50192ee7728a77e5e55291cf74150b0bf24599932\",\"urls\":[\"bzzr://d8a3219aeffb9d1fc0ea17fe9ccedfdedc9c586925635979ff4d5341b0851708\",\"dweb:/ipfs/QmfVToyEz75W1GR6f4TA7SAPQpLQHAm6FFRmQ8ixBNd1WW\"]},\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractResolver.sol\":{\"keccak256\":\"0xa97001e54c36b40d70708703b667684006b7c3c56a766b9c10db328dfa36804c\",\"urls\":[\"bzzr://bf4d406357e5603878c99e72968a7c70b2c8907a695c150ce997e3f772b42808\",\"dweb:/ipfs/QmWpgBZqp8yH2qX2xQnzDaPZQBzMwvZBDFDetebjoJmKmv\"]},\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/MultiChainResolver.sol\":{\"keccak256\":\"0xf02ef2acc0e3af2ffbde6b43e58070eacd155f31b6b952a4264ca2f40ffcd8f7\",\"urls\":[\"bzzr://58c7707d3179fbba72efe4dde77158d02d023eded4d5a0f3537711e53a25cc3b\",\"dweb:/ipfs/QmYAPN9dLx2ptjJdj8bQMqAZaWYCFGVHfvnYrHxuKeVSJn\"]},\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/util/AddressHelper.sol\":{\"keccak256\":\"0x3155c5adfa317faabfbff197dfce42de9d821f6e3cd8cb2344a5fb51eb726e9d\",\"urls\":[\"bzzr://75d73a3038502eaabb5950b2ab2f9c6ffac6f0d390109670be1225b3cf353c02\",\"dweb:/ipfs/Qma3HssYPkqZBGkbEJpi8YCRoahMfgFhyrrkUGzqtA1bRr\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506040516122f73803806122f78339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516100db9061013f565b604051809103906000f0801580156100f7573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061014c565b6107bf80611b3883390190565b6119dd8061015b6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638be4b5f6116100715780638be4b5f6146102fb578063b34e8cd6146103cb578063c3d014d614610436578063d278b4001461046e578063d5fa2b001461055c578063e335bee4146105aa576100a9565b806301ffc9a7146100ae578063245d4d9a146101135780632dff6941146101745780633b3b57de146101b657806382e3bee614610224575b600080fd5b6100f9600480360360208110156100c457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506106a2565b604051808215151515815260200191505060405180910390f35b6101726004803603606081101561012957600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610791565b005b6101a06004803603602081101561018a57600080fd5b8101908080359060200190929190505050610967565b6040518082815260200191505060405180910390f35b6101e2600480360360208110156101cc57600080fd5b8101908080359060200190929190505050610a4a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102796004803603604081101561023a57600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610d2d565b6040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156102bf5780820151818401526020810190506102a4565b50505050905090810190601f1680156102ec5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103506004803603604081101561031157600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610e43565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610390578082015181840152602081019050610375565b50505050905090810190601f1680156103bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610420600480360360408110156103e157600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f47565b6040518082815260200191505060405180910390f35b61046c6004803603604081101561044c57600080fd5b810190808035906020019092919080359060200190929190505050610fb3565b005b61055a6004803603606081101561048457600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001906401000000008111156104d457600080fd5b8201836020820111156104e657600080fd5b8035906020019184600183028401116401000000008311171561050857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110f4565b005b6105a86004803603604081101561057257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611507565b005b6106a0600480360360808110156105c057600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019064010000000081111561061057600080fd5b82018360208201111561062257600080fd5b8035906020019184600183028401116401000000008311171561064457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611801565b005b6000633b3b57de60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073b5750632dff694160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061078a5750638be4b5f660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461087657600080fd5b81600460008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600001819055507f92c52f77ad49286096555eb922ca7a09249e8dd525cf58cd162fb1165686fad484848460405180848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001828152602001935050505060405180910390a150505050565b600080600360008481526020019081526020016000205490506000801b81146109935780915050610a45565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632dff6941846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d6020811015610a3057600080fd5b81019080805190602001909291905050509150505b919050565b60006060600460008481526020019081526020016000206000638000008960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b50505050509050600081511115610c7657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315706fdf826040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610be9578082015181840152602081019050610bce565b50505050905090810190601f168015610c165780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b8101908080519060200190929190505050915050610d28565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ce957600080fd5b505afa158015610cfd573d6000803e3d6000fd5b505050506040513d6020811015610d1357600080fd5b81019080805190602001909291905050509150505b919050565b6060600080600460008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209050806001018160000154818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e305780601f10610e0557610100808354040283529160200191610e30565b820191906000526020600020905b815481529060010190602001808311610e1357829003601f168201915b5050505050915092509250509250929050565b6060600460008481526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f3a5780601f10610f0f57610100808354040283529160200191610f3a565b820191906000526020600020905b815481529060010190602001808311610f1d57829003601f168201915b5050505050905092915050565b6000600460008481526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000154905092915050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561103d57600080fd5b505afa158015611051573d6000803e3d6000fd5b505050506040513d602081101561106757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461109857600080fd5b8160036000858152602001908152602001600020819055507f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc8383604051808381526020018281526020019250505060405180910390a1505050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d60208110156111a857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146111d957600080fd5b81600460008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600101908051906020019061124e929190611903565b50638000008960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561141d576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315706fdf846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561132c578082015181840152602081019050611311565b50505050905090810190601f1680156113595780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d60208110156113a057600080fd5b81019080805190602001909291905050509050847f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd282604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250611501565b837f6a3e28813f2e2e5bcd0436779f8c5cb179ceadf0379291a818b9078e772b178d848460405180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114c55780820151818401526020810190506114aa565b50505050905090810190601f1680156114f25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b50505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561159157600080fd5b505afa1580156115a5573d6000803e3d6000fd5b505050506040513d60208110156115bb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146115ec57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e57966d836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b15801561168b57600080fd5b505afa15801561169f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156116c957600080fd5b8101908080516401000000008111156116e157600080fd5b828101905060208101848111156116f757600080fd5b815185600182028301116401000000008211171561171457600080fd5b5050929190505050600460008581526020019081526020016000206000638000008960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206001019080519060200190611797929190611903565b50827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b833373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561188b57600080fd5b505afa15801561189f573d6000803e3d6000fd5b505050506040513d60208110156118b557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146118e657600080fd5b6118f18585856110f4565b6118fc858584610791565b5050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061194457805160ff1916838001178555611972565b82800160010185558215611972579182015b82811115611971578251825591602001919060010190611956565b5b50905061197f9190611983565b5090565b6119a591905b808211156119a1576000816000905550600101611989565b5090565b9056fea265627a7a72305820d7f95d03dc286c1cac3f8bb1082afaa79ed879bda6abfe8641bd6bbe54a84b4664736f6c634300050a0032608060405234801561001057600080fd5b5061079f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806315706fdf146100465780635e57966d14610141578063b7312707146101fe575b600080fd5b6100ff6004803603602081101561005c57600080fd5b810190808035906020019064010000000081111561007957600080fd5b82018360208201111561008b57600080fd5b803590602001918460018302840111640100000000831117156100ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610240565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101836004803603602081101561015757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610493565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c35780820151818401526020810190506101a8565b50505050905090810190601f1680156101f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022a6004803603602081101561021457600080fd5b810190808035906020019092919050505061069f565b6040518082815260200191505060405180910390f35b60006060829050602881511415801561025b5750602a815114155b1561026557600080fd5b60008090506000809050602a8351141561041557600290507f30000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916836000815181106102cd57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461030457600080fd5b7f78000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168360018151811061035457fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415801561040a57507f58000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916836001815181106103da57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b1561041457600080fd5b5b6000806000856020015190508392505b602083101561044e5780831a915061043c8261069f565b60108602019450826001019250610425565b85604001519050600092505b836008018310156104855780831a91506104738261069f565b6010860201945082600101925061045a565b849650505050505050919050565b606080602a6040519080825280601f01601f1916602001820160405280156104ca5781602001600182028038833980820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106104fb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061055857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060008090505b60148110156106955760008160130360080260020a8573ffffffffffffffffffffffffffffffffffffffff16816105c057fe5b0460f81b9050600060108260f81c60ff16816105d857fe5b0460f81b905060008160f81c6010028360f81c0360f81b90506105fa82610717565b85600286600202018151811061060c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061064481610717565b85600386600202018151811061065657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050808060010191505061058d565b5080915050919050565b6000603082101580156106b3575060398211155b156106c357603082039050610712565b606182101580156106d5575060668211155b156106e857606182600a01039050610712565b604182101580156106fa575060468211155b1561070d57604182600a01039050610712565b600080fd5b919050565b6000600a60f81b827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610156107585760308260f81c0160f81b9050610765565b60578260f81c0160f81b90505b91905056fea265627a7a72305820d33b1f0b7b22c12d2dde9cc753e860e21978bb446dfc5d094d5d56e3e5fcea6564736f6c634300050a0032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80638be4b5f6116100715780638be4b5f6146102fb578063b34e8cd6146103cb578063c3d014d614610436578063d278b4001461046e578063d5fa2b001461055c578063e335bee4146105aa576100a9565b806301ffc9a7146100ae578063245d4d9a146101135780632dff6941146101745780633b3b57de146101b657806382e3bee614610224575b600080fd5b6100f9600480360360208110156100c457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506106a2565b604051808215151515815260200191505060405180910390f35b6101726004803603606081101561012957600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610791565b005b6101a06004803603602081101561018a57600080fd5b8101908080359060200190929190505050610967565b6040518082815260200191505060405180910390f35b6101e2600480360360208110156101cc57600080fd5b8101908080359060200190929190505050610a4a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102796004803603604081101561023a57600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610d2d565b6040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156102bf5780820151818401526020810190506102a4565b50505050905090810190601f1680156102ec5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103506004803603604081101561031157600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610e43565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610390578082015181840152602081019050610375565b50505050905090810190601f1680156103bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610420600480360360408110156103e157600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f47565b6040518082815260200191505060405180910390f35b61046c6004803603604081101561044c57600080fd5b810190808035906020019092919080359060200190929190505050610fb3565b005b61055a6004803603606081101561048457600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001906401000000008111156104d457600080fd5b8201836020820111156104e657600080fd5b8035906020019184600183028401116401000000008311171561050857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110f4565b005b6105a86004803603604081101561057257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611507565b005b6106a0600480360360808110156105c057600080fd5b810190808035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019064010000000081111561061057600080fd5b82018360208201111561062257600080fd5b8035906020019184600183028401116401000000008311171561064457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611801565b005b6000633b3b57de60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073b5750632dff694160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061078a5750638be4b5f660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461087657600080fd5b81600460008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600001819055507f92c52f77ad49286096555eb922ca7a09249e8dd525cf58cd162fb1165686fad484848460405180848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001828152602001935050505060405180910390a150505050565b600080600360008481526020019081526020016000205490506000801b81146109935780915050610a45565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632dff6941846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d6020811015610a3057600080fd5b81019080805190602001909291905050509150505b919050565b60006060600460008481526020019081526020016000206000638000008960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b50505050509050600081511115610c7657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315706fdf826040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610be9578082015181840152602081019050610bce565b50505050905090810190601f168015610c165780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b8101908080519060200190929190505050915050610d28565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ce957600080fd5b505afa158015610cfd573d6000803e3d6000fd5b505050506040513d6020811015610d1357600080fd5b81019080805190602001909291905050509150505b919050565b6060600080600460008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209050806001018160000154818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e305780601f10610e0557610100808354040283529160200191610e30565b820191906000526020600020905b815481529060010190602001808311610e1357829003601f168201915b5050505050915092509250509250929050565b6060600460008481526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f3a5780601f10610f0f57610100808354040283529160200191610f3a565b820191906000526020600020905b815481529060010190602001808311610f1d57829003601f168201915b5050505050905092915050565b6000600460008481526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000154905092915050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561103d57600080fd5b505afa158015611051573d6000803e3d6000fd5b505050506040513d602081101561106757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461109857600080fd5b8160036000858152602001908152602001600020819055507f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc8383604051808381526020018281526020019250505060405180910390a1505050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d60208110156111a857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146111d957600080fd5b81600460008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600101908051906020019061124e929190611903565b50638000008960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561141d576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315706fdf846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561132c578082015181840152602081019050611311565b50505050905090810190601f1680156113595780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d60208110156113a057600080fd5b81019080805190602001909291905050509050847f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd282604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250611501565b837f6a3e28813f2e2e5bcd0436779f8c5cb179ceadf0379291a818b9078e772b178d848460405180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114c55780820151818401526020810190506114aa565b50505050905090810190601f1680156114f25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b50505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561159157600080fd5b505afa1580156115a5573d6000803e3d6000fd5b505050506040513d60208110156115bb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146115ec57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e57966d836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b15801561168b57600080fd5b505afa15801561169f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156116c957600080fd5b8101908080516401000000008111156116e157600080fd5b828101905060208101848111156116f757600080fd5b815185600182028301116401000000008211171561171457600080fd5b5050929190505050600460008581526020019081526020016000206000638000008960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191677ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206001019080519060200190611797929190611903565b50827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b833373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561188b57600080fd5b505afa15801561189f573d6000803e3d6000fd5b505050506040513d60208110156118b557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146118e657600080fd5b6118f18585856110f4565b6118fc858584610791565b5050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061194457805160ff1916838001178555611972565b82800160010185558215611972579182015b82811115611971578251825591602001919060010190611956565b5b50905061197f9190611983565b5090565b6119a591905b808211156119a1576000816000905550600101611989565b5090565b9056fea265627a7a72305820d7f95d03dc286c1cac3f8bb1082afaa79ed879bda6abfe8641bd6bbe54a84b4664736f6c634300050a0032",
  "sourceMap": "182:3603:9:-;;;977:192;8:9:-1;5:2;;;30:1;27;20:12;5:2;977:192:9;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;977:192:9;;;;;;;;;;;;;;;;;;;;;;;;;1071:4;1065:3;;:10;;;;;;;;;;;;;;;;;;1102:15;1085:14;;:32;;;;;;;;;;;;;;;;;;1143:19;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1143:19:9;1127:13;;:35;;;;;;;;;;;;;;;;;;977:192;;182:3603;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "182:3603:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;182:3603:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1206:8;;;1227:196;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1227:196:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3054:233;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3054:233:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1944:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1944:227:9;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1429:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1429:287:9;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3293:243;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3293:243:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3293:243:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2358:140:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2358:140:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2906:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2906:142:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2177:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2177:175:9;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2504:396;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2504:396:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2504:396:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2504:396:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2504:396:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2504:396:9;;;;;;;;;;;;;;;:::i;:::-;;1722:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1722:216:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3542:241;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3542:241:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3542:241:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3542:241:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3542:241:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3542:241:9;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1227:196;1296:4;491:10;1336:9;;1321:24;;;:11;:24;;;;1320:59;;;;538:10;1366:12;;1351:27;;;:11;:27;;;;1320:59;:95;;;;588:10;1399:15;;1383:32;;;:11;:32;;;;1320:95;1312:104;;1227:196;;;:::o;3054:233::-;3149:4;942:10;923:29;;:3;;;;;;;;;;;:9;;;933:4;923:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;923:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;923:15:9;;;;;;;;;;;;;;;;:29;;;915:38;;;;;;3204:13;3165:14;:20;3180:4;3165:20;;;;;;;;;;;:27;3186:5;3165:27;;;;;;;;;;;;;;;;;:36;;:52;;;;3232:48;3253:4;3259:5;3266:13;3232:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3054:233;;;;:::o;1944:227::-;1997:7;2016:16;2035:8;:14;2044:4;2035:14;;;;;;;;;;;;2016:33;;2076:1;2064:13;;:8;:13;2060:59;;2100:8;2093:15;;;;;2060:59;2136:14;;;;;;;;;;;:22;;;2159:4;2136:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2136:28:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2136:28:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2136:28:9;;;;;;;;;;;;;;;;2129:35;;;1944:227;;;;:::o;1429:287::-;1479:7;1498:19;1520:14;:20;1535:4;1520:20;;;;;;;;;;;:34;636:10;1541:12;;1520:34;;;;;;;;;;;;;;;;;:39;;1498:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1596:1;1580:5;1574:19;:23;1570:97;;;1620:13;;;;;;;;;;;:29;;;1650:5;1620:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1620:36:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1620:36:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1620:36:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1620:36:9;;;;;;;;;;;;;;;;1613:43;;;;;1570:97;1684:14;;;;;;;;;;;:19;;;1704:4;1684:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1684:25:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1684:25:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1684:25:9;;;;;;;;;;;;;;;;1677:32;;;1429:287;;;;:::o;3293:243::-;3373:13;3388:7;3407:33;3443:14;:20;3458:4;3443:20;;;;;;;;;;;:27;3464:5;3443:27;;;;;;;;;;;;;;;;;3407:63;;3488:12;:17;;3507:12;:21;;;3480:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3293:243;;;;;:::o;2358:140::-;2427:13;2459:14;:20;2474:4;2459:20;;;;;;;;;;;:27;2480:5;2459:27;;;;;;;;;;;;;;;;;:32;;2452:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:140;;;;:::o;2906:142::-;2979:7;3005:14;:20;3020:4;3005:20;;;;;;;;;;;:27;3026:5;3005:27;;;;;;;;;;;;;;;;;:36;;;2998:43;;2906:142;;;;:::o;2177:175::-;2251:4;942:10;923:29;;:3;;;;;;;;;;;:9;;;933:4;923:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;923:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;923:15:9;;;;;;;;;;;;;;;;:29;;;915:38;;;;;;2284:12;2267:8;:14;2276:4;2267:14;;;;;;;;;;;:29;;;;2311:34;2326:4;2332:12;2311:34;;;;;;;;;;;;;;;;;;;;;;;;2177:175;;;:::o;2504:396::-;2597:4;942:10;923:29;;:3;;;;;;;;;;;:9;;;933:4;923:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;923:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;923:15:9;;;;;;;;;;;;;;;;:29;;;915:38;;;;;;2648:9;2613:14;:20;2628:4;2613:20;;;;;;;;;;;:27;2634:5;2613:27;;;;;;;;;;;;;;;;;:32;;:44;;;;;;;;;;;;:::i;:::-;;636:10;2680:12;;2671:21;;;:5;:21;;;;2667:227;;;2708:13;2724;;;;;;;;;;;:29;;;2754:9;2724:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2724:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2724:40:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2724:40:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2724:40:9;;;;;;;;;;;;;;;;2708:56;;2795:4;2783:24;2801:5;2783:24;;;;;;;;;;;;;;;;;;;;;;2667:227;;;;2860:4;2843:40;2866:5;2873:9;2843:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2843:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2667:227;2504:396;;;;:::o;1722:216::-;1790:4;942:10;923:29;;:3;;;;;;;;;;;:9;;;933:4;923:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;923:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;923:15:9;;;;;;;;;;;;;;;;:29;;;915:38;;;;;;1848:13;;;;;;;;;;;:29;;;1878:9;1848:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1848:40:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1848:40:9;;;;;;39:16:-1;36:1;17:17;2:54;1848:40:9;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1848:40:9;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;1848:40:9;;;;;;1806:14;:20;1821:4;1806:20;;;;;;;;;;;:34;636:10;1827:12;;1806:34;;;;;;;;;;;;;;;;;:39;;:82;;;;;;;;;;;;:::i;:::-;;1915:4;1903:28;1921:9;1903:28;;;;;;;;;;;;;;;;;;;;;;1722:216;;;:::o;3542:241::-;3670:4;942:10;923:29;;:3;;;;;;;;;;;:9;;;933:4;923:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;923:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;923:15:9;;;;;;;;;;;;;;;;:29;;;915:38;;;;;;3686:36;3699:4;3705:5;3712:9;3686:12;:36::i;:::-;3732:44;3749:4;3755:5;3762:13;3732:16;:44::i;:::-;3542:241;;;;;:::o;182:3603::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.2;\n\nimport \"../registry/AbstractRNS.sol\";\nimport \"./AbstractPublicResolver.sol\";\nimport \"./AbstractMultiChainResolver.sol\";\nimport \"../util/AddressHelper.sol\";\n\ncontract MultiChainResolver is AbstractMultiChainResolver {\n    AbstractRNS rns;\n    AbstractPublicResolver publicResolver;\n\n    AddressHelper addressHelper;\n\n    mapping (bytes32 => bytes32) contents;\n    mapping (bytes32 => mapping (bytes8 => ChainAddress)) chainAddresses;\n\n    bytes4 constant ADDR_SIGN = 0x3b3b57de;\n    bytes4 constant CONTENT_SIGN = 0x2dff6941;\n    bytes4 constant CHAIN_ADDR_SIGN = 0x8be4b5f6;\n\n    bytes4 constant RSK_CHAIN_ID = 0x80000089;\n\n    event ContentChanged (bytes32 node, bytes32 content);\n    event ChainMetadataChanged (bytes32 node, bytes4 chain, bytes32 metadata);\n\n    struct ChainAddress {\n        bytes32 metadata;\n        string addr;\n    }\n\n    modifier onlyOwner (bytes32 node) {\n        require(rns.owner(node) == msg.sender);\n        _;\n    }\n\n    constructor (AbstractRNS _rns, AbstractPublicResolver _publicResolver) public {\n        rns = _rns;\n        publicResolver = _publicResolver;\n        addressHelper = new AddressHelper();\n    }\n\n    function () external {\n        revert();\n    }\n\n    function supportsInterface (bytes4 interfaceId) public pure returns (bool) {\n        return ((interfaceId == ADDR_SIGN) || (interfaceId == CONTENT_SIGN) || interfaceId == (CHAIN_ADDR_SIGN));\n    }\n\n    function addr (bytes32 node) public view returns (address) {\n        string memory _addr = chainAddresses[node][RSK_CHAIN_ID].addr;\n\n        if (bytes(_addr).length > 0) {\n            return addressHelper.stringToAddress(_addr);\n        }\n\n        return publicResolver.addr(node);\n    }\n\n    function setAddr (bytes32 node, address addrValue) public onlyOwner(node) {\n        chainAddresses[node][RSK_CHAIN_ID].addr = addressHelper.addressToString(addrValue);\n        emit AddrChanged(node, addrValue);\n    }\n\n    function content (bytes32 node) public view returns (bytes32) {\n        bytes32 _content = contents[node];\n\n        if (_content != 0) {\n            return _content;\n        }\n\n        return publicResolver.content(node);\n    }\n\n    function setContent (bytes32 node, bytes32 contentValue) public onlyOwner(node) {\n        contents[node] = contentValue;\n        emit ContentChanged(node, contentValue);\n    }\n\n    function chainAddr (bytes32 node, bytes4 chain) public view returns (string memory) {\n        return chainAddresses[node][chain].addr;\n    }\n\n    function setChainAddr (bytes32 node, bytes4 chain, string memory addrValue) public onlyOwner(node) {\n        chainAddresses[node][chain].addr = addrValue;\n        if (chain == RSK_CHAIN_ID) {\n            address _addr = addressHelper.stringToAddress(addrValue);\n            emit AddrChanged(node, _addr);\n        } else {\n            emit ChainAddrChanged(node, chain, addrValue);\n        }\n    }\n\n    function chainMetadata (bytes32 node, bytes4 chain) public view returns (bytes32) {\n        return chainAddresses[node][chain].metadata;\n    }\n\n    function setChainMetadata (bytes32 node, bytes4 chain, bytes32 metadataValue) public onlyOwner(node) {\n        chainAddresses[node][chain].metadata = metadataValue;\n        emit ChainMetadataChanged(node, chain, metadataValue);\n    }\n\n    function chainAddrAndMetadata (bytes32 node, bytes4 chain) public view returns (string memory, bytes32) {\n        ChainAddress storage chainAddress = chainAddresses[node][chain];\n        return (chainAddress.addr, chainAddress.metadata);\n    }\n\n    function setChainAddrWithMetadata (bytes32 node, bytes4 chain, string memory addrValue, bytes32 metadataValue) public onlyOwner(node) {\n        setChainAddr(node, chain, addrValue);\n        setChainMetadata(node, chain, metadataValue);\n    }\n}\n",
  "sourcePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/MultiChainResolver.sol",
  "ast": {
    "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/MultiChainResolver.sol",
    "exportedSymbols": {
      "MultiChainResolver": [
        1254
      ]
    },
    "id": 1255,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 859,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/registry/AbstractRNS.sol",
        "file": "../registry/AbstractRNS.sol",
        "id": 860,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 534,
        "src": "25:37:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractPublicResolver.sol",
        "file": "./AbstractPublicResolver.sol",
        "id": 861,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 848,
        "src": "63:38:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractMultiChainResolver.sol",
        "file": "./AbstractMultiChainResolver.sol",
        "id": 862,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 819,
        "src": "102:42:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/util/AddressHelper.sol",
        "file": "../util/AddressHelper.sol",
        "id": 863,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 1778,
        "src": "145:35:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 864,
              "name": "AbstractMultiChainResolver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 818,
              "src": "213:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractMultiChainResolver_$818",
                "typeString": "contract AbstractMultiChainResolver"
              }
            },
            "id": 865,
            "nodeType": "InheritanceSpecifier",
            "src": "213:26:9"
          }
        ],
        "contractDependencies": [
          786,
          818,
          857,
          1777
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1254,
        "linearizedBaseContracts": [
          1254,
          818,
          786,
          857
        ],
        "name": "MultiChainResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 867,
            "name": "rns",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "246:15:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractRNS_$533",
              "typeString": "contract AbstractRNS"
            },
            "typeName": {
              "contractScope": null,
              "id": 866,
              "name": "AbstractRNS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 533,
              "src": "246:11:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                "typeString": "contract AbstractRNS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 869,
            "name": "publicResolver",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "267:37:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
              "typeString": "contract AbstractPublicResolver"
            },
            "typeName": {
              "contractScope": null,
              "id": 868,
              "name": "AbstractPublicResolver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 847,
              "src": "267:22:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                "typeString": "contract AbstractPublicResolver"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 871,
            "name": "addressHelper",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "311:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AddressHelper_$1777",
              "typeString": "contract AddressHelper"
            },
            "typeName": {
              "contractScope": null,
              "id": 870,
              "name": "AddressHelper",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1777,
              "src": "311:13:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressHelper_$1777",
                "typeString": "contract AddressHelper"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 875,
            "name": "contents",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "345:37:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 874,
              "keyType": {
                "id": 872,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "354:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "345:28:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 873,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "365:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 881,
            "name": "chainAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "388:68:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress))"
            },
            "typeName": {
              "id": 880,
              "keyType": {
                "id": 876,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "397:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "388:53:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress))"
              },
              "valueType": {
                "id": 879,
                "keyType": {
                  "id": 877,
                  "name": "bytes8",
                  "nodeType": "ElementaryTypeName",
                  "src": "417:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  }
                },
                "nodeType": "Mapping",
                "src": "408:32:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                  "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 878,
                  "name": "ChainAddress",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 912,
                  "src": "427:12:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                    "typeString": "struct MultiChainResolver.ChainAddress"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 884,
            "name": "ADDR_SIGN",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "463:38:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 882,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "463:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 883,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "491:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 887,
            "name": "CONTENT_SIGN",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "507:41:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 885,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "507:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783264666636393431",
              "id": 886,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "538:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_771713345_by_1",
                "typeString": "int_const 771713345"
              },
              "value": "0x2dff6941"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 890,
            "name": "CHAIN_ADDR_SIGN",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "554:44:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 888,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "554:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783862653462356636",
              "id": 889,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "588:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2347021814_by_1",
                "typeString": "int_const 2347021814"
              },
              "value": "0x8be4b5f6"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 893,
            "name": "RSK_CHAIN_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "605:41:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 891,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "605:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783830303030303839",
              "id": 892,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "636:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2147483785_by_1",
                "typeString": "int_const 2147483785"
              },
              "value": "0x80000089"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 899,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 895,
                  "indexed": false,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 899,
                  "src": "675:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 894,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "675:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 897,
                  "indexed": false,
                  "name": "content",
                  "nodeType": "VariableDeclaration",
                  "scope": 899,
                  "src": "689:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 896,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "689:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "674:31:9"
            },
            "src": "653:53:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 907,
            "name": "ChainMetadataChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 901,
                  "indexed": false,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 907,
                  "src": "739:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 900,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 903,
                  "indexed": false,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 907,
                  "src": "753:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "753:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 905,
                  "indexed": false,
                  "name": "metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 907,
                  "src": "767:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "738:46:9"
            },
            "src": "711:74:9"
          },
          {
            "canonicalName": "MultiChainResolver.ChainAddress",
            "id": 912,
            "members": [
              {
                "constant": false,
                "id": 909,
                "name": "metadata",
                "nodeType": "VariableDeclaration",
                "scope": 912,
                "src": "821:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 908,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "821:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 911,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 912,
                "src": "847:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 910,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "847:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ChainAddress",
            "nodeType": "StructDefinition",
            "scope": 1254,
            "src": "791:74:9",
            "visibility": "public"
          },
          {
            "body": {
              "id": 927,
              "nodeType": "Block",
              "src": "905:66:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 919,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 914,
                              "src": "933:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 917,
                              "name": "rns",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 867,
                              "src": "923:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                                "typeString": "contract AbstractRNS"
                              }
                            },
                            "id": 918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 462,
                            "src": "923:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "923:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 921,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3109,
                            "src": "942:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "942:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "923:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 916,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3112,
                        3113
                      ],
                      "referencedDeclaration": 3112,
                      "src": "915:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "915:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 925,
                  "nodeType": "ExpressionStatement",
                  "src": "915:38:9"
                },
                {
                  "id": 926,
                  "nodeType": "PlaceholderStatement",
                  "src": "963:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 928,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 914,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 928,
                  "src": "891:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 913,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "891:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "890:14:9"
            },
            "src": "871:100:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 949,
              "nodeType": "Block",
              "src": "1055:114:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 935,
                      "name": "rns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 867,
                      "src": "1065:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 936,
                      "name": "_rns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 930,
                      "src": "1071:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "src": "1065:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "id": 938,
                  "nodeType": "ExpressionStatement",
                  "src": "1065:10:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 939,
                      "name": "publicResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 869,
                      "src": "1085:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                        "typeString": "contract AbstractPublicResolver"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 940,
                      "name": "_publicResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 932,
                      "src": "1102:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                        "typeString": "contract AbstractPublicResolver"
                      }
                    },
                    "src": "1085:32:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                      "typeString": "contract AbstractPublicResolver"
                    }
                  },
                  "id": 942,
                  "nodeType": "ExpressionStatement",
                  "src": "1085:32:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 943,
                      "name": "addressHelper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 871,
                      "src": "1127:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddressHelper_$1777",
                        "typeString": "contract AddressHelper"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1143:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_AddressHelper_$1777_$",
                          "typeString": "function () returns (contract AddressHelper)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 944,
                          "name": "AddressHelper",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1777,
                          "src": "1147:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddressHelper_$1777",
                            "typeString": "contract AddressHelper"
                          }
                        }
                      },
                      "id": 946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1143:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddressHelper_$1777",
                        "typeString": "contract AddressHelper"
                      }
                    },
                    "src": "1127:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressHelper_$1777",
                      "typeString": "contract AddressHelper"
                    }
                  },
                  "id": 948,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:35:9"
                }
              ]
            },
            "documentation": null,
            "id": 950,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 930,
                  "name": "_rns",
                  "nodeType": "VariableDeclaration",
                  "scope": 950,
                  "src": "990:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractRNS_$533",
                    "typeString": "contract AbstractRNS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 929,
                    "name": "AbstractRNS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 533,
                    "src": "990:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 932,
                  "name": "_publicResolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 950,
                  "src": "1008:38:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                    "typeString": "contract AbstractPublicResolver"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 931,
                    "name": "AbstractPublicResolver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 847,
                    "src": "1008:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                      "typeString": "contract AbstractPublicResolver"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "989:58:9"
            },
            "returnParameters": {
              "id": 934,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1055:0:9"
            },
            "scope": 1254,
            "src": "977:192:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 956,
              "nodeType": "Block",
              "src": "1196:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 953,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3114,
                        3115
                      ],
                      "referencedDeclaration": 3114,
                      "src": "1206:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1206:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 955,
                  "nodeType": "ExpressionStatement",
                  "src": "1206:8:9"
                }
              ]
            },
            "documentation": null,
            "id": 957,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 951,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1184:2:9"
            },
            "returnParameters": {
              "id": 952,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1196:0:9"
            },
            "scope": 1254,
            "src": "1175:46:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 980,
              "nodeType": "Block",
              "src": "1302:121:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 964,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 959,
                                  "src": "1321:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 965,
                                  "name": "ADDR_SIGN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 884,
                                  "src": "1336:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1321:24:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 967,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1320:26:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 968,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 959,
                                  "src": "1351:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 969,
                                  "name": "CONTENT_SIGN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 887,
                                  "src": "1366:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1351:27:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 971,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1350:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1320:59:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 973,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 959,
                            "src": "1383:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 974,
                                "name": "CHAIN_ADDR_SIGN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 890,
                                "src": "1399:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "id": 975,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1398:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1383:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1320:95:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 978,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1319:97:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 963,
                  "id": 979,
                  "nodeType": "Return",
                  "src": "1312:104:9"
                }
              ]
            },
            "documentation": null,
            "id": 981,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 959,
                  "name": "interfaceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "1255:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 958,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1255:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1254:20:9"
            },
            "returnParameters": {
              "id": 963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 962,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "1296:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 961,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1296:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1295:6:9"
            },
            "scope": 1254,
            "src": "1227:196:9",
            "stateMutability": "pure",
            "superFunction": 856,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1015,
              "nodeType": "Block",
              "src": "1488:228:9",
              "statements": [
                {
                  "assignments": [
                    989
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 989,
                      "name": "_addr",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "1498:19:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 988,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1498:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 996,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 990,
                          "name": "chainAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 881,
                          "src": "1520:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                          }
                        },
                        "id": 992,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 991,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 983,
                          "src": "1535:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1520:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                          "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                        }
                      },
                      "id": 994,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 993,
                        "name": "RSK_CHAIN_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 893,
                        "src": "1541:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1520:34:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                        "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                      }
                    },
                    "id": 995,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "addr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 911,
                    "src": "1520:39:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1498:61:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 998,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 989,
                            "src": "1580:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1574:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1574:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1000,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1574:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1596:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1574:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1009,
                  "nodeType": "IfStatement",
                  "src": "1570:97:9",
                  "trueBody": {
                    "id": 1008,
                    "nodeType": "Block",
                    "src": "1599:68:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1005,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 989,
                              "src": "1650:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1003,
                              "name": "addressHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "1620:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AddressHelper_$1777",
                                "typeString": "contract AddressHelper"
                              }
                            },
                            "id": 1004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stringToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1722,
                            "src": "1620:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_string_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (string memory) pure external returns (address)"
                            }
                          },
                          "id": 1006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1620:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 987,
                        "id": 1007,
                        "nodeType": "Return",
                        "src": "1613:43:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1012,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 983,
                        "src": "1704:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1010,
                        "name": "publicResolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 869,
                        "src": "1684:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                          "typeString": "contract AbstractPublicResolver"
                        }
                      },
                      "id": 1011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 772,
                      "src": "1684:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 1013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1684:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 987,
                  "id": 1014,
                  "nodeType": "Return",
                  "src": "1677:32:9"
                }
              ]
            },
            "documentation": null,
            "id": 1016,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 983,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1016,
                  "src": "1444:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 982,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1444:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1443:14:9"
            },
            "returnParameters": {
              "id": 987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 986,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1016,
                  "src": "1479:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 985,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1479:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1478:9:9"
            },
            "scope": 1254,
            "src": "1429:287:9",
            "stateMutability": "view",
            "superFunction": 772,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1043,
              "nodeType": "Block",
              "src": "1796:142:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1026,
                            "name": "chainAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 881,
                            "src": "1806:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                            }
                          },
                          "id": 1029,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1027,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1018,
                            "src": "1821:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1806:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                            "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                          }
                        },
                        "id": 1030,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1028,
                          "name": "RSK_CHAIN_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 893,
                          "src": "1827:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1806:34:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                          "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                        }
                      },
                      "id": 1031,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 911,
                      "src": "1806:39:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1034,
                          "name": "addrValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1020,
                          "src": "1878:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1032,
                          "name": "addressHelper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 871,
                          "src": "1848:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddressHelper_$1777",
                            "typeString": "contract AddressHelper"
                          }
                        },
                        "id": 1033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addressToString",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1556,
                        "src": "1848:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$",
                          "typeString": "function (address) pure external returns (string memory)"
                        }
                      },
                      "id": 1035,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1848:40:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1806:82:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1037,
                  "nodeType": "ExpressionStatement",
                  "src": "1806:82:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1039,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "1915:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1040,
                        "name": "addrValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1020,
                        "src": "1921:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1038,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 785,
                      "src": "1903:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1903:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1042,
                  "nodeType": "EmitStatement",
                  "src": "1898:33:9"
                }
              ]
            },
            "documentation": null,
            "id": 1044,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1023,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1018,
                    "src": "1790:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1024,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1022,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "1780:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1780:15:9"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1018,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1044,
                  "src": "1740:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1017,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1740:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1020,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1044,
                  "src": "1754:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1019,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1754:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1739:33:9"
            },
            "returnParameters": {
              "id": 1025,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1796:0:9"
            },
            "scope": 1254,
            "src": "1722:216:9",
            "stateMutability": "nonpayable",
            "superFunction": 779,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1069,
              "nodeType": "Block",
              "src": "2006:165:9",
              "statements": [
                {
                  "assignments": [
                    1052
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1052,
                      "name": "_content",
                      "nodeType": "VariableDeclaration",
                      "scope": 1069,
                      "src": "2016:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1051,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2016:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1056,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1053,
                      "name": "contents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 875,
                      "src": "2035:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                        "typeString": "mapping(bytes32 => bytes32)"
                      }
                    },
                    "id": 1055,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1054,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1046,
                      "src": "2044:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2035:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2016:33:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 1059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1057,
                      "name": "_content",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1052,
                      "src": "2064:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2076:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2064:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1063,
                  "nodeType": "IfStatement",
                  "src": "2060:59:9",
                  "trueBody": {
                    "id": 1062,
                    "nodeType": "Block",
                    "src": "2079:40:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1060,
                          "name": "_content",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1052,
                          "src": "2100:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 1050,
                        "id": 1061,
                        "nodeType": "Return",
                        "src": "2093:15:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1066,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1046,
                        "src": "2159:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1064,
                        "name": "publicResolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 869,
                        "src": "2136:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                          "typeString": "contract AbstractPublicResolver"
                        }
                      },
                      "id": 1065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 830,
                      "src": "2136:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view external returns (bytes32)"
                      }
                    },
                    "id": 1067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2136:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1050,
                  "id": 1068,
                  "nodeType": "Return",
                  "src": "2129:35:9"
                }
              ]
            },
            "documentation": null,
            "id": 1070,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1046,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1070,
                  "src": "1962:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1961:14:9"
            },
            "returnParameters": {
              "id": 1050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1070,
                  "src": "1997:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1997:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1996:9:9"
            },
            "scope": 1254,
            "src": "1944:227:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1091,
              "nodeType": "Block",
              "src": "2257:95:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1080,
                        "name": "contents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 875,
                        "src": "2267:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 1082,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1081,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1072,
                        "src": "2276:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2267:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1083,
                      "name": "contentValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1074,
                      "src": "2284:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2267:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1085,
                  "nodeType": "ExpressionStatement",
                  "src": "2267:29:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1087,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1072,
                        "src": "2326:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1088,
                        "name": "contentValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1074,
                        "src": "2332:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1086,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 899,
                      "src": "2311:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 1089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2311:34:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1090,
                  "nodeType": "EmitStatement",
                  "src": "2306:39:9"
                }
              ]
            },
            "documentation": null,
            "id": 1092,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1077,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1072,
                    "src": "2251:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1078,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1076,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "2241:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2241:15:9"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1072,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "2198:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2198:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1074,
                  "name": "contentValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "2212:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2212:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2197:36:9"
            },
            "returnParameters": {
              "id": 1079,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2257:0:9"
            },
            "scope": 1254,
            "src": "2177:175:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1108,
              "nodeType": "Block",
              "src": "2442:56:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1101,
                          "name": "chainAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 881,
                          "src": "2459:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                          }
                        },
                        "id": 1103,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1102,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1094,
                          "src": "2474:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2459:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                          "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                        }
                      },
                      "id": 1105,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1104,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1096,
                        "src": "2480:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2459:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                        "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                      }
                    },
                    "id": 1106,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "addr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 911,
                    "src": "2459:32:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 1100,
                  "id": 1107,
                  "nodeType": "Return",
                  "src": "2452:39:9"
                }
              ]
            },
            "documentation": null,
            "id": 1109,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1097,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1094,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1109,
                  "src": "2378:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1093,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2378:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1096,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1109,
                  "src": "2392:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1095,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2377:28:9"
            },
            "returnParameters": {
              "id": 1100,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1099,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1109,
                  "src": "2427:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1098,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2427:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2426:15:9"
            },
            "scope": 1254,
            "src": "2358:140:9",
            "stateMutability": "view",
            "superFunction": 800,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1154,
              "nodeType": "Block",
              "src": "2603:297:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1121,
                            "name": "chainAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 881,
                            "src": "2613:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                            }
                          },
                          "id": 1124,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1122,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1111,
                            "src": "2628:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2613:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                            "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                          }
                        },
                        "id": 1125,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1123,
                          "name": "chain",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1113,
                          "src": "2634:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2613:27:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                          "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                        }
                      },
                      "id": 1126,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 911,
                      "src": "2613:32:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1127,
                      "name": "addrValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1115,
                      "src": "2648:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2613:44:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1129,
                  "nodeType": "ExpressionStatement",
                  "src": "2613:44:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "id": 1132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1130,
                      "name": "chain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1113,
                      "src": "2671:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1131,
                      "name": "RSK_CHAIN_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 893,
                      "src": "2680:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "2671:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1152,
                    "nodeType": "Block",
                    "src": "2824:70:9",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1147,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "2860:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1148,
                              "name": "chain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1113,
                              "src": "2866:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1149,
                              "name": "addrValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "2873:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1146,
                            "name": "ChainAddrChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 817,
                            "src": "2843:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes4_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes4,string memory)"
                            }
                          },
                          "id": 1150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2843:40:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1151,
                        "nodeType": "EmitStatement",
                        "src": "2838:45:9"
                      }
                    ]
                  },
                  "id": 1153,
                  "nodeType": "IfStatement",
                  "src": "2667:227:9",
                  "trueBody": {
                    "id": 1145,
                    "nodeType": "Block",
                    "src": "2694:124:9",
                    "statements": [
                      {
                        "assignments": [
                          1134
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1134,
                            "name": "_addr",
                            "nodeType": "VariableDeclaration",
                            "scope": 1145,
                            "src": "2708:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1133,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2708:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1139,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1137,
                              "name": "addrValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "2754:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1135,
                              "name": "addressHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "2724:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AddressHelper_$1777",
                                "typeString": "contract AddressHelper"
                              }
                            },
                            "id": 1136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stringToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1722,
                            "src": "2724:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_string_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (string memory) pure external returns (address)"
                            }
                          },
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2724:40:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2708:56:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1141,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "2795:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1142,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1134,
                              "src": "2801:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1140,
                            "name": "AddrChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 785,
                            "src": "2783:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2783:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1144,
                        "nodeType": "EmitStatement",
                        "src": "2778:29:9"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1155,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1118,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1111,
                    "src": "2597:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1119,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1117,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "2587:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2587:15:9"
              }
            ],
            "name": "setChainAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1111,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1155,
                  "src": "2527:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1110,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2527:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1113,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1155,
                  "src": "2541:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1112,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2541:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1115,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1155,
                  "src": "2555:23:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1114,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2555:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2526:53:9"
            },
            "returnParameters": {
              "id": 1120,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2603:0:9"
            },
            "scope": 1254,
            "src": "2504:396:9",
            "stateMutability": "nonpayable",
            "superFunction": 809,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1171,
              "nodeType": "Block",
              "src": "2988:60:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1164,
                          "name": "chainAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 881,
                          "src": "3005:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                          }
                        },
                        "id": 1166,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1165,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1157,
                          "src": "3020:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3005:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                          "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                        }
                      },
                      "id": 1168,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1167,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1159,
                        "src": "3026:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3005:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                        "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                      }
                    },
                    "id": 1169,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "metadata",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 909,
                    "src": "3005:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1163,
                  "id": 1170,
                  "nodeType": "Return",
                  "src": "2998:43:9"
                }
              ]
            },
            "documentation": null,
            "id": 1172,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1157,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1172,
                  "src": "2930:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1156,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2930:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1159,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1172,
                  "src": "2944:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1158,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2944:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2929:28:9"
            },
            "returnParameters": {
              "id": 1163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1162,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1172,
                  "src": "2979:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1161,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2979:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2978:9:9"
            },
            "scope": 1254,
            "src": "2906:142:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1199,
              "nodeType": "Block",
              "src": "3155:132:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1184,
                            "name": "chainAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 881,
                            "src": "3165:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                            }
                          },
                          "id": 1187,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1185,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1174,
                            "src": "3180:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3165:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                            "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                          }
                        },
                        "id": 1188,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1186,
                          "name": "chain",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1176,
                          "src": "3186:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3165:27:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                          "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                        }
                      },
                      "id": 1189,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "metadata",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 909,
                      "src": "3165:36:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1190,
                      "name": "metadataValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1178,
                      "src": "3204:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3165:52:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1192,
                  "nodeType": "ExpressionStatement",
                  "src": "3165:52:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1194,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1174,
                        "src": "3253:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1195,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1176,
                        "src": "3259:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1196,
                        "name": "metadataValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1178,
                        "src": "3266:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1193,
                      "name": "ChainMetadataChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "3232:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes4_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes4,bytes32)"
                      }
                    },
                    "id": 1197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3232:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1198,
                  "nodeType": "EmitStatement",
                  "src": "3227:53:9"
                }
              ]
            },
            "documentation": null,
            "id": 1200,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1181,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1174,
                    "src": "3149:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1182,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1180,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "3139:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3139:15:9"
              }
            ],
            "name": "setChainMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1174,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1200,
                  "src": "3081:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1173,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3081:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1176,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1200,
                  "src": "3095:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1175,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1178,
                  "name": "metadataValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1200,
                  "src": "3109:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3109:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3080:51:9"
            },
            "returnParameters": {
              "id": 1183,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3155:0:9"
            },
            "scope": 1254,
            "src": "3054:233:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1225,
              "nodeType": "Block",
              "src": "3397:139:9",
              "statements": [
                {
                  "assignments": [
                    1212
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1212,
                      "name": "chainAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 1225,
                      "src": "3407:33:9",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                        "typeString": "struct MultiChainResolver.ChainAddress"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1211,
                        "name": "ChainAddress",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 912,
                        "src": "3407:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                          "typeString": "struct MultiChainResolver.ChainAddress"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1218,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1213,
                        "name": "chainAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 881,
                        "src": "3443:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                        }
                      },
                      "id": 1215,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1214,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "3458:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3443:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                        "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                      }
                    },
                    "id": 1217,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1216,
                      "name": "chain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1204,
                      "src": "3464:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3443:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                      "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3407:63:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1219,
                          "name": "chainAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1212,
                          "src": "3488:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                            "typeString": "struct MultiChainResolver.ChainAddress storage pointer"
                          }
                        },
                        "id": 1220,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 911,
                        "src": "3488:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1221,
                          "name": "chainAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1212,
                          "src": "3507:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                            "typeString": "struct MultiChainResolver.ChainAddress storage pointer"
                          }
                        },
                        "id": 1222,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "metadata",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 909,
                        "src": "3507:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 1223,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3487:42:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_bytes32_$",
                      "typeString": "tuple(string storage ref,bytes32)"
                    }
                  },
                  "functionReturnParameters": 1210,
                  "id": 1224,
                  "nodeType": "Return",
                  "src": "3480:49:9"
                }
              ]
            },
            "documentation": null,
            "id": 1226,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainAddrAndMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1202,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3324:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1201,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3324:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1204,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3338:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1203,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3338:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3323:28:9"
            },
            "returnParameters": {
              "id": 1210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1207,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3373:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1206,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3373:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1209,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3388:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1208,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3388:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3372:24:9"
            },
            "scope": 1254,
            "src": "3293:243:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1252,
              "nodeType": "Block",
              "src": "3676:107:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1241,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1228,
                        "src": "3699:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1242,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1230,
                        "src": "3705:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1243,
                        "name": "addrValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1232,
                        "src": "3712:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 1240,
                      "name": "setChainAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1155
                      ],
                      "referencedDeclaration": 1155,
                      "src": "3686:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes4_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes4,string memory)"
                      }
                    },
                    "id": 1244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3686:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1245,
                  "nodeType": "ExpressionStatement",
                  "src": "3686:36:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1247,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1228,
                        "src": "3749:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1248,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1230,
                        "src": "3755:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1249,
                        "name": "metadataValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1234,
                        "src": "3762:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1246,
                      "name": "setChainMetadata",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1200,
                      "src": "3732:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes4_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes4,bytes32)"
                      }
                    },
                    "id": 1250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3732:44:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1251,
                  "nodeType": "ExpressionStatement",
                  "src": "3732:44:9"
                }
              ]
            },
            "documentation": null,
            "id": 1253,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1237,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1228,
                    "src": "3670:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1238,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1236,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "3660:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3660:15:9"
              }
            ],
            "name": "setChainAddrWithMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1228,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3577:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1227,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3577:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1230,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3591:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1229,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3591:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1232,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3605:23:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1231,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3605:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1234,
                  "name": "metadataValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3630:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1233,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3630:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3576:76:9"
            },
            "returnParameters": {
              "id": 1239,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3676:0:9"
            },
            "scope": 1254,
            "src": "3542:241:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1255,
        "src": "182:3603:9"
      }
    ],
    "src": "0:3786:9"
  },
  "legacyAST": {
    "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/MultiChainResolver.sol",
    "exportedSymbols": {
      "MultiChainResolver": [
        1254
      ]
    },
    "id": 1255,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 859,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/registry/AbstractRNS.sol",
        "file": "../registry/AbstractRNS.sol",
        "id": 860,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 534,
        "src": "25:37:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractPublicResolver.sol",
        "file": "./AbstractPublicResolver.sol",
        "id": 861,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 848,
        "src": "63:38:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/AbstractMultiChainResolver.sol",
        "file": "./AbstractMultiChainResolver.sol",
        "id": 862,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 819,
        "src": "102:42:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/util/AddressHelper.sol",
        "file": "../util/AddressHelper.sol",
        "id": 863,
        "nodeType": "ImportDirective",
        "scope": 1255,
        "sourceUnit": 1778,
        "src": "145:35:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 864,
              "name": "AbstractMultiChainResolver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 818,
              "src": "213:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractMultiChainResolver_$818",
                "typeString": "contract AbstractMultiChainResolver"
              }
            },
            "id": 865,
            "nodeType": "InheritanceSpecifier",
            "src": "213:26:9"
          }
        ],
        "contractDependencies": [
          786,
          818,
          857,
          1777
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1254,
        "linearizedBaseContracts": [
          1254,
          818,
          786,
          857
        ],
        "name": "MultiChainResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 867,
            "name": "rns",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "246:15:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractRNS_$533",
              "typeString": "contract AbstractRNS"
            },
            "typeName": {
              "contractScope": null,
              "id": 866,
              "name": "AbstractRNS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 533,
              "src": "246:11:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                "typeString": "contract AbstractRNS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 869,
            "name": "publicResolver",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "267:37:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
              "typeString": "contract AbstractPublicResolver"
            },
            "typeName": {
              "contractScope": null,
              "id": 868,
              "name": "AbstractPublicResolver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 847,
              "src": "267:22:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                "typeString": "contract AbstractPublicResolver"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 871,
            "name": "addressHelper",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "311:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AddressHelper_$1777",
              "typeString": "contract AddressHelper"
            },
            "typeName": {
              "contractScope": null,
              "id": 870,
              "name": "AddressHelper",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1777,
              "src": "311:13:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressHelper_$1777",
                "typeString": "contract AddressHelper"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 875,
            "name": "contents",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "345:37:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 874,
              "keyType": {
                "id": 872,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "354:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "345:28:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 873,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "365:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 881,
            "name": "chainAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "388:68:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress))"
            },
            "typeName": {
              "id": 880,
              "keyType": {
                "id": 876,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "397:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "388:53:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress))"
              },
              "valueType": {
                "id": 879,
                "keyType": {
                  "id": 877,
                  "name": "bytes8",
                  "nodeType": "ElementaryTypeName",
                  "src": "417:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  }
                },
                "nodeType": "Mapping",
                "src": "408:32:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                  "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 878,
                  "name": "ChainAddress",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 912,
                  "src": "427:12:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                    "typeString": "struct MultiChainResolver.ChainAddress"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 884,
            "name": "ADDR_SIGN",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "463:38:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 882,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "463:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 883,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "491:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 887,
            "name": "CONTENT_SIGN",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "507:41:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 885,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "507:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783264666636393431",
              "id": 886,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "538:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_771713345_by_1",
                "typeString": "int_const 771713345"
              },
              "value": "0x2dff6941"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 890,
            "name": "CHAIN_ADDR_SIGN",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "554:44:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 888,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "554:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783862653462356636",
              "id": 889,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "588:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2347021814_by_1",
                "typeString": "int_const 2347021814"
              },
              "value": "0x8be4b5f6"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 893,
            "name": "RSK_CHAIN_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1254,
            "src": "605:41:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 891,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "605:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783830303030303839",
              "id": 892,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "636:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2147483785_by_1",
                "typeString": "int_const 2147483785"
              },
              "value": "0x80000089"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 899,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 895,
                  "indexed": false,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 899,
                  "src": "675:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 894,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "675:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 897,
                  "indexed": false,
                  "name": "content",
                  "nodeType": "VariableDeclaration",
                  "scope": 899,
                  "src": "689:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 896,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "689:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "674:31:9"
            },
            "src": "653:53:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 907,
            "name": "ChainMetadataChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 901,
                  "indexed": false,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 907,
                  "src": "739:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 900,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 903,
                  "indexed": false,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 907,
                  "src": "753:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "753:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 905,
                  "indexed": false,
                  "name": "metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 907,
                  "src": "767:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "738:46:9"
            },
            "src": "711:74:9"
          },
          {
            "canonicalName": "MultiChainResolver.ChainAddress",
            "id": 912,
            "members": [
              {
                "constant": false,
                "id": 909,
                "name": "metadata",
                "nodeType": "VariableDeclaration",
                "scope": 912,
                "src": "821:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 908,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "821:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 911,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 912,
                "src": "847:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 910,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "847:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ChainAddress",
            "nodeType": "StructDefinition",
            "scope": 1254,
            "src": "791:74:9",
            "visibility": "public"
          },
          {
            "body": {
              "id": 927,
              "nodeType": "Block",
              "src": "905:66:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 919,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 914,
                              "src": "933:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 917,
                              "name": "rns",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 867,
                              "src": "923:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                                "typeString": "contract AbstractRNS"
                              }
                            },
                            "id": 918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 462,
                            "src": "923:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "923:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 921,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3109,
                            "src": "942:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "942:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "923:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 916,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3112,
                        3113
                      ],
                      "referencedDeclaration": 3112,
                      "src": "915:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "915:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 925,
                  "nodeType": "ExpressionStatement",
                  "src": "915:38:9"
                },
                {
                  "id": 926,
                  "nodeType": "PlaceholderStatement",
                  "src": "963:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 928,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 914,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 928,
                  "src": "891:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 913,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "891:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "890:14:9"
            },
            "src": "871:100:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 949,
              "nodeType": "Block",
              "src": "1055:114:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 935,
                      "name": "rns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 867,
                      "src": "1065:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 936,
                      "name": "_rns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 930,
                      "src": "1071:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "src": "1065:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "id": 938,
                  "nodeType": "ExpressionStatement",
                  "src": "1065:10:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 939,
                      "name": "publicResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 869,
                      "src": "1085:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                        "typeString": "contract AbstractPublicResolver"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 940,
                      "name": "_publicResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 932,
                      "src": "1102:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                        "typeString": "contract AbstractPublicResolver"
                      }
                    },
                    "src": "1085:32:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                      "typeString": "contract AbstractPublicResolver"
                    }
                  },
                  "id": 942,
                  "nodeType": "ExpressionStatement",
                  "src": "1085:32:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 943,
                      "name": "addressHelper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 871,
                      "src": "1127:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddressHelper_$1777",
                        "typeString": "contract AddressHelper"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1143:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_AddressHelper_$1777_$",
                          "typeString": "function () returns (contract AddressHelper)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 944,
                          "name": "AddressHelper",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1777,
                          "src": "1147:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddressHelper_$1777",
                            "typeString": "contract AddressHelper"
                          }
                        }
                      },
                      "id": 946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1143:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddressHelper_$1777",
                        "typeString": "contract AddressHelper"
                      }
                    },
                    "src": "1127:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressHelper_$1777",
                      "typeString": "contract AddressHelper"
                    }
                  },
                  "id": 948,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:35:9"
                }
              ]
            },
            "documentation": null,
            "id": 950,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 930,
                  "name": "_rns",
                  "nodeType": "VariableDeclaration",
                  "scope": 950,
                  "src": "990:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractRNS_$533",
                    "typeString": "contract AbstractRNS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 929,
                    "name": "AbstractRNS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 533,
                    "src": "990:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 932,
                  "name": "_publicResolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 950,
                  "src": "1008:38:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                    "typeString": "contract AbstractPublicResolver"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 931,
                    "name": "AbstractPublicResolver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 847,
                    "src": "1008:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                      "typeString": "contract AbstractPublicResolver"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "989:58:9"
            },
            "returnParameters": {
              "id": 934,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1055:0:9"
            },
            "scope": 1254,
            "src": "977:192:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 956,
              "nodeType": "Block",
              "src": "1196:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 953,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3114,
                        3115
                      ],
                      "referencedDeclaration": 3114,
                      "src": "1206:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1206:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 955,
                  "nodeType": "ExpressionStatement",
                  "src": "1206:8:9"
                }
              ]
            },
            "documentation": null,
            "id": 957,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 951,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1184:2:9"
            },
            "returnParameters": {
              "id": 952,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1196:0:9"
            },
            "scope": 1254,
            "src": "1175:46:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 980,
              "nodeType": "Block",
              "src": "1302:121:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 964,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 959,
                                  "src": "1321:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 965,
                                  "name": "ADDR_SIGN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 884,
                                  "src": "1336:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1321:24:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 967,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1320:26:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 968,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 959,
                                  "src": "1351:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 969,
                                  "name": "CONTENT_SIGN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 887,
                                  "src": "1366:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1351:27:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 971,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1350:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1320:59:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 973,
                            "name": "interfaceId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 959,
                            "src": "1383:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 974,
                                "name": "CHAIN_ADDR_SIGN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 890,
                                "src": "1399:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "id": 975,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1398:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1383:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1320:95:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 978,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1319:97:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 963,
                  "id": 979,
                  "nodeType": "Return",
                  "src": "1312:104:9"
                }
              ]
            },
            "documentation": null,
            "id": 981,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 959,
                  "name": "interfaceId",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "1255:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 958,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1255:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1254:20:9"
            },
            "returnParameters": {
              "id": 963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 962,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "1296:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 961,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1296:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1295:6:9"
            },
            "scope": 1254,
            "src": "1227:196:9",
            "stateMutability": "pure",
            "superFunction": 856,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1015,
              "nodeType": "Block",
              "src": "1488:228:9",
              "statements": [
                {
                  "assignments": [
                    989
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 989,
                      "name": "_addr",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "1498:19:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 988,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1498:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 996,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 990,
                          "name": "chainAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 881,
                          "src": "1520:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                          }
                        },
                        "id": 992,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 991,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 983,
                          "src": "1535:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1520:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                          "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                        }
                      },
                      "id": 994,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 993,
                        "name": "RSK_CHAIN_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 893,
                        "src": "1541:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1520:34:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                        "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                      }
                    },
                    "id": 995,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "addr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 911,
                    "src": "1520:39:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1498:61:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 998,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 989,
                            "src": "1580:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1574:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1574:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1000,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1574:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1596:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1574:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1009,
                  "nodeType": "IfStatement",
                  "src": "1570:97:9",
                  "trueBody": {
                    "id": 1008,
                    "nodeType": "Block",
                    "src": "1599:68:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1005,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 989,
                              "src": "1650:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1003,
                              "name": "addressHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "1620:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AddressHelper_$1777",
                                "typeString": "contract AddressHelper"
                              }
                            },
                            "id": 1004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stringToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1722,
                            "src": "1620:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_string_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (string memory) pure external returns (address)"
                            }
                          },
                          "id": 1006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1620:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 987,
                        "id": 1007,
                        "nodeType": "Return",
                        "src": "1613:43:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1012,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 983,
                        "src": "1704:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1010,
                        "name": "publicResolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 869,
                        "src": "1684:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                          "typeString": "contract AbstractPublicResolver"
                        }
                      },
                      "id": 1011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 772,
                      "src": "1684:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 1013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1684:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 987,
                  "id": 1014,
                  "nodeType": "Return",
                  "src": "1677:32:9"
                }
              ]
            },
            "documentation": null,
            "id": 1016,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 983,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1016,
                  "src": "1444:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 982,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1444:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1443:14:9"
            },
            "returnParameters": {
              "id": 987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 986,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1016,
                  "src": "1479:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 985,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1479:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1478:9:9"
            },
            "scope": 1254,
            "src": "1429:287:9",
            "stateMutability": "view",
            "superFunction": 772,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1043,
              "nodeType": "Block",
              "src": "1796:142:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1026,
                            "name": "chainAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 881,
                            "src": "1806:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                            }
                          },
                          "id": 1029,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1027,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1018,
                            "src": "1821:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1806:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                            "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                          }
                        },
                        "id": 1030,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1028,
                          "name": "RSK_CHAIN_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 893,
                          "src": "1827:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1806:34:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                          "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                        }
                      },
                      "id": 1031,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 911,
                      "src": "1806:39:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1034,
                          "name": "addrValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1020,
                          "src": "1878:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1032,
                          "name": "addressHelper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 871,
                          "src": "1848:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddressHelper_$1777",
                            "typeString": "contract AddressHelper"
                          }
                        },
                        "id": 1033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addressToString",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1556,
                        "src": "1848:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$",
                          "typeString": "function (address) pure external returns (string memory)"
                        }
                      },
                      "id": 1035,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1848:40:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1806:82:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1037,
                  "nodeType": "ExpressionStatement",
                  "src": "1806:82:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1039,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "1915:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1040,
                        "name": "addrValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1020,
                        "src": "1921:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1038,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 785,
                      "src": "1903:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1903:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1042,
                  "nodeType": "EmitStatement",
                  "src": "1898:33:9"
                }
              ]
            },
            "documentation": null,
            "id": 1044,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1023,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1018,
                    "src": "1790:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1024,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1022,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "1780:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1780:15:9"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1018,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1044,
                  "src": "1740:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1017,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1740:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1020,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1044,
                  "src": "1754:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1019,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1754:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1739:33:9"
            },
            "returnParameters": {
              "id": 1025,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1796:0:9"
            },
            "scope": 1254,
            "src": "1722:216:9",
            "stateMutability": "nonpayable",
            "superFunction": 779,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1069,
              "nodeType": "Block",
              "src": "2006:165:9",
              "statements": [
                {
                  "assignments": [
                    1052
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1052,
                      "name": "_content",
                      "nodeType": "VariableDeclaration",
                      "scope": 1069,
                      "src": "2016:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1051,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2016:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1056,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1053,
                      "name": "contents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 875,
                      "src": "2035:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                        "typeString": "mapping(bytes32 => bytes32)"
                      }
                    },
                    "id": 1055,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1054,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1046,
                      "src": "2044:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2035:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2016:33:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 1059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1057,
                      "name": "_content",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1052,
                      "src": "2064:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2076:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2064:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1063,
                  "nodeType": "IfStatement",
                  "src": "2060:59:9",
                  "trueBody": {
                    "id": 1062,
                    "nodeType": "Block",
                    "src": "2079:40:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1060,
                          "name": "_content",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1052,
                          "src": "2100:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 1050,
                        "id": 1061,
                        "nodeType": "Return",
                        "src": "2093:15:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1066,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1046,
                        "src": "2159:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1064,
                        "name": "publicResolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 869,
                        "src": "2136:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AbstractPublicResolver_$847",
                          "typeString": "contract AbstractPublicResolver"
                        }
                      },
                      "id": 1065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 830,
                      "src": "2136:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view external returns (bytes32)"
                      }
                    },
                    "id": 1067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2136:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1050,
                  "id": 1068,
                  "nodeType": "Return",
                  "src": "2129:35:9"
                }
              ]
            },
            "documentation": null,
            "id": 1070,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1046,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1070,
                  "src": "1962:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1961:14:9"
            },
            "returnParameters": {
              "id": 1050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1070,
                  "src": "1997:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1997:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1996:9:9"
            },
            "scope": 1254,
            "src": "1944:227:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1091,
              "nodeType": "Block",
              "src": "2257:95:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1080,
                        "name": "contents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 875,
                        "src": "2267:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 1082,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1081,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1072,
                        "src": "2276:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2267:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1083,
                      "name": "contentValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1074,
                      "src": "2284:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2267:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1085,
                  "nodeType": "ExpressionStatement",
                  "src": "2267:29:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1087,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1072,
                        "src": "2326:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1088,
                        "name": "contentValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1074,
                        "src": "2332:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1086,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 899,
                      "src": "2311:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 1089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2311:34:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1090,
                  "nodeType": "EmitStatement",
                  "src": "2306:39:9"
                }
              ]
            },
            "documentation": null,
            "id": 1092,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1077,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1072,
                    "src": "2251:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1078,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1076,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "2241:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2241:15:9"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1072,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "2198:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2198:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1074,
                  "name": "contentValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "2212:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2212:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2197:36:9"
            },
            "returnParameters": {
              "id": 1079,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2257:0:9"
            },
            "scope": 1254,
            "src": "2177:175:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1108,
              "nodeType": "Block",
              "src": "2442:56:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1101,
                          "name": "chainAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 881,
                          "src": "2459:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                          }
                        },
                        "id": 1103,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1102,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1094,
                          "src": "2474:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2459:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                          "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                        }
                      },
                      "id": 1105,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1104,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1096,
                        "src": "2480:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2459:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                        "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                      }
                    },
                    "id": 1106,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "addr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 911,
                    "src": "2459:32:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 1100,
                  "id": 1107,
                  "nodeType": "Return",
                  "src": "2452:39:9"
                }
              ]
            },
            "documentation": null,
            "id": 1109,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1097,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1094,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1109,
                  "src": "2378:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1093,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2378:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1096,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1109,
                  "src": "2392:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1095,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2377:28:9"
            },
            "returnParameters": {
              "id": 1100,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1099,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1109,
                  "src": "2427:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1098,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2427:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2426:15:9"
            },
            "scope": 1254,
            "src": "2358:140:9",
            "stateMutability": "view",
            "superFunction": 800,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1154,
              "nodeType": "Block",
              "src": "2603:297:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1121,
                            "name": "chainAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 881,
                            "src": "2613:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                            }
                          },
                          "id": 1124,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1122,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1111,
                            "src": "2628:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2613:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                            "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                          }
                        },
                        "id": 1125,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1123,
                          "name": "chain",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1113,
                          "src": "2634:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2613:27:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                          "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                        }
                      },
                      "id": 1126,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 911,
                      "src": "2613:32:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1127,
                      "name": "addrValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1115,
                      "src": "2648:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2613:44:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1129,
                  "nodeType": "ExpressionStatement",
                  "src": "2613:44:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    },
                    "id": 1132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1130,
                      "name": "chain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1113,
                      "src": "2671:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1131,
                      "name": "RSK_CHAIN_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 893,
                      "src": "2680:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "2671:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1152,
                    "nodeType": "Block",
                    "src": "2824:70:9",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1147,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "2860:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1148,
                              "name": "chain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1113,
                              "src": "2866:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1149,
                              "name": "addrValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "2873:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1146,
                            "name": "ChainAddrChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 817,
                            "src": "2843:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes4_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes4,string memory)"
                            }
                          },
                          "id": 1150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2843:40:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1151,
                        "nodeType": "EmitStatement",
                        "src": "2838:45:9"
                      }
                    ]
                  },
                  "id": 1153,
                  "nodeType": "IfStatement",
                  "src": "2667:227:9",
                  "trueBody": {
                    "id": 1145,
                    "nodeType": "Block",
                    "src": "2694:124:9",
                    "statements": [
                      {
                        "assignments": [
                          1134
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1134,
                            "name": "_addr",
                            "nodeType": "VariableDeclaration",
                            "scope": 1145,
                            "src": "2708:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1133,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2708:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1139,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1137,
                              "name": "addrValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "2754:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1135,
                              "name": "addressHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "2724:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AddressHelper_$1777",
                                "typeString": "contract AddressHelper"
                              }
                            },
                            "id": 1136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stringToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1722,
                            "src": "2724:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_string_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (string memory) pure external returns (address)"
                            }
                          },
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2724:40:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2708:56:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1141,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "2795:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1142,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1134,
                              "src": "2801:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1140,
                            "name": "AddrChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 785,
                            "src": "2783:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2783:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1144,
                        "nodeType": "EmitStatement",
                        "src": "2778:29:9"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1155,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1118,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1111,
                    "src": "2597:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1119,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1117,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "2587:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2587:15:9"
              }
            ],
            "name": "setChainAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1111,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1155,
                  "src": "2527:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1110,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2527:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1113,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1155,
                  "src": "2541:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1112,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2541:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1115,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1155,
                  "src": "2555:23:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1114,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2555:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2526:53:9"
            },
            "returnParameters": {
              "id": 1120,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2603:0:9"
            },
            "scope": 1254,
            "src": "2504:396:9",
            "stateMutability": "nonpayable",
            "superFunction": 809,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1171,
              "nodeType": "Block",
              "src": "2988:60:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1164,
                          "name": "chainAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 881,
                          "src": "3005:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                          }
                        },
                        "id": 1166,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1165,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1157,
                          "src": "3020:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3005:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                          "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                        }
                      },
                      "id": 1168,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1167,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1159,
                        "src": "3026:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3005:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                        "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                      }
                    },
                    "id": 1169,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "metadata",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 909,
                    "src": "3005:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1163,
                  "id": 1170,
                  "nodeType": "Return",
                  "src": "2998:43:9"
                }
              ]
            },
            "documentation": null,
            "id": 1172,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1157,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1172,
                  "src": "2930:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1156,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2930:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1159,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1172,
                  "src": "2944:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1158,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2944:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2929:28:9"
            },
            "returnParameters": {
              "id": 1163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1162,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1172,
                  "src": "2979:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1161,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2979:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2978:9:9"
            },
            "scope": 1254,
            "src": "2906:142:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1199,
              "nodeType": "Block",
              "src": "3155:132:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1184,
                            "name": "chainAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 881,
                            "src": "3165:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                              "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                            }
                          },
                          "id": 1187,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1185,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1174,
                            "src": "3180:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3165:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                            "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                          }
                        },
                        "id": 1188,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1186,
                          "name": "chain",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1176,
                          "src": "3186:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3165:27:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                          "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                        }
                      },
                      "id": 1189,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "metadata",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 909,
                      "src": "3165:36:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1190,
                      "name": "metadataValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1178,
                      "src": "3204:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3165:52:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1192,
                  "nodeType": "ExpressionStatement",
                  "src": "3165:52:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1194,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1174,
                        "src": "3253:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1195,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1176,
                        "src": "3259:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1196,
                        "name": "metadataValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1178,
                        "src": "3266:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1193,
                      "name": "ChainMetadataChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "3232:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes4_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes4,bytes32)"
                      }
                    },
                    "id": 1197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3232:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1198,
                  "nodeType": "EmitStatement",
                  "src": "3227:53:9"
                }
              ]
            },
            "documentation": null,
            "id": 1200,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1181,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1174,
                    "src": "3149:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1182,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1180,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "3139:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3139:15:9"
              }
            ],
            "name": "setChainMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1174,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1200,
                  "src": "3081:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1173,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3081:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1176,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1200,
                  "src": "3095:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1175,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1178,
                  "name": "metadataValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1200,
                  "src": "3109:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3109:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3080:51:9"
            },
            "returnParameters": {
              "id": 1183,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3155:0:9"
            },
            "scope": 1254,
            "src": "3054:233:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1225,
              "nodeType": "Block",
              "src": "3397:139:9",
              "statements": [
                {
                  "assignments": [
                    1212
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1212,
                      "name": "chainAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 1225,
                      "src": "3407:33:9",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                        "typeString": "struct MultiChainResolver.ChainAddress"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1211,
                        "name": "ChainAddress",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 912,
                        "src": "3407:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                          "typeString": "struct MultiChainResolver.ChainAddress"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1218,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1213,
                        "name": "chainAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 881,
                        "src": "3443:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref))"
                        }
                      },
                      "id": 1215,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1214,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "3458:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3443:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes8_$_t_struct$_ChainAddress_$912_storage_$",
                        "typeString": "mapping(bytes8 => struct MultiChainResolver.ChainAddress storage ref)"
                      }
                    },
                    "id": 1217,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1216,
                      "name": "chain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1204,
                      "src": "3464:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3443:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ChainAddress_$912_storage",
                      "typeString": "struct MultiChainResolver.ChainAddress storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3407:63:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1219,
                          "name": "chainAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1212,
                          "src": "3488:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                            "typeString": "struct MultiChainResolver.ChainAddress storage pointer"
                          }
                        },
                        "id": 1220,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 911,
                        "src": "3488:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1221,
                          "name": "chainAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1212,
                          "src": "3507:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ChainAddress_$912_storage_ptr",
                            "typeString": "struct MultiChainResolver.ChainAddress storage pointer"
                          }
                        },
                        "id": 1222,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "metadata",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 909,
                        "src": "3507:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 1223,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3487:42:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_storage_$_t_bytes32_$",
                      "typeString": "tuple(string storage ref,bytes32)"
                    }
                  },
                  "functionReturnParameters": 1210,
                  "id": 1224,
                  "nodeType": "Return",
                  "src": "3480:49:9"
                }
              ]
            },
            "documentation": null,
            "id": 1226,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainAddrAndMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1202,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3324:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1201,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3324:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1204,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3338:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1203,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3338:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3323:28:9"
            },
            "returnParameters": {
              "id": 1210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1207,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3373:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1206,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3373:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1209,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1226,
                  "src": "3388:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1208,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3388:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3372:24:9"
            },
            "scope": 1254,
            "src": "3293:243:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1252,
              "nodeType": "Block",
              "src": "3676:107:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1241,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1228,
                        "src": "3699:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1242,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1230,
                        "src": "3705:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1243,
                        "name": "addrValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1232,
                        "src": "3712:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 1240,
                      "name": "setChainAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1155
                      ],
                      "referencedDeclaration": 1155,
                      "src": "3686:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes4_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes4,string memory)"
                      }
                    },
                    "id": 1244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3686:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1245,
                  "nodeType": "ExpressionStatement",
                  "src": "3686:36:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1247,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1228,
                        "src": "3749:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1248,
                        "name": "chain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1230,
                        "src": "3755:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1249,
                        "name": "metadataValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1234,
                        "src": "3762:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1246,
                      "name": "setChainMetadata",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1200,
                      "src": "3732:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes4_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes4,bytes32)"
                      }
                    },
                    "id": 1250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3732:44:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1251,
                  "nodeType": "ExpressionStatement",
                  "src": "3732:44:9"
                }
              ]
            },
            "documentation": null,
            "id": 1253,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1237,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1228,
                    "src": "3670:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1238,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1236,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 928,
                  "src": "3660:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3660:15:9"
              }
            ],
            "name": "setChainAddrWithMetadata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1228,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3577:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1227,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3577:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1230,
                  "name": "chain",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3591:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1229,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3591:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1232,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3605:23:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1231,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3605:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1234,
                  "name": "metadataValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1253,
                  "src": "3630:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1233,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3630:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3576:76:9"
            },
            "returnParameters": {
              "id": 1239,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3676:0:9"
            },
            "scope": 1254,
            "src": "3542:241:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1255,
        "src": "182:3603:9"
      }
    ],
    "src": "0:3786:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.10+commit.5a6ea5b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.10",
  "updatedAt": "2019-07-03T18:04:40.082Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}