{
  "contractName": "PublicResolver",
  "abi": [
    {
      "inputs": [
        {
          "name": "rnsAddr",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "kind",
          "type": "bytes32"
        }
      ],
      "name": "has",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "hash",
          "type": "bytes32"
        }
      ],
      "name": "setContent",
      "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\":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\":\"kind\",\"type\":\"bytes32\"}],\"name\":\"has\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"setContent\",\"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\"},{\"inputs\":[{\"name\":\"rnsAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"methods\":{\"addr(bytes32)\":{\"params\":{\"node\":\"The RNS node to query.\"},\"return\":\"The associated address.\"},\"constructor\":{\"params\":{\"rnsAddr\":\"The RNS registrar contract.\"}},\"content(bytes32)\":{\"params\":{\"node\":\"The RNS node to query.\"},\"return\":\"The associated content hash.\"},\"has(bytes32,bytes32)\":{\"params\":{\"kind\":\"The record type name, as specified in EIP137.\",\"node\":\"The RNS node to query.\"},\"return\":\"True if this resolver has a record of the provided type on the        provided node.\"},\"setAddr(bytes32,address)\":{\"params\":{\"addrValue\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setContent(bytes32,bytes32)\":{\"params\":{\"hash\":\"The content hash to set\",\"node\":\"The node to update.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceID\":\"The ID of the interface to check for.\"},\"return\":\"True if the contract implements the requested interface.\"}}},\"userdoc\":{\"methods\":{\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an RNS node.\"},\"constructor\":\"Constructor.\",\"content(bytes32)\":{\"notice\":\"Returns the content hash associated with an RNS node. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash.\"},\"has(bytes32,bytes32)\":{\"notice\":\"Returns true if the specified node has the specified record type.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an RNS node. May only be called by the owner of that node in the RNS registry.\"},\"setContent(bytes32,bytes32)\":{\"notice\":\"Sets the content hash associated with an RNS node. May only be called by the owner of that node in the RNS registry. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns true if the resolver implements the interface specified by the provided hash.\"}},\"notice\":\"A simple resolver anyone can use; only allows the owner of a node to set its address.\"}},\"settings\":{\"compilationTarget\":{\"/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/PublicResolver.sol\":\"PublicResolver\"},\"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/PublicResolver.sol\":{\"keccak256\":\"0xd53c95d43de3aeeef02d09db9ead4c949f2dcd9b71586e736f960f4aa64ace44\",\"urls\":[\"bzzr://07d280b7654217cf766b8f2747204cc70b9ddfbab86ddfc70cea1e086c040b73\",\"dweb:/ipfs/QmRPiWHA51DhFUXipJSns5RxCzWirYhJx4FuVW6dtRzeGf\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060405161073b38038061073b8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506106a7806100946000396000f3fe6080604052600436106100555760003560e01c806301ffc9a71461005a5780632dff6941146100cc5780633b3b57de1461011b57806341b9dc2b14610196578063c3d014d6146101f3578063d5fa2b0014610238575b600080fd5b34801561006657600080fd5b506100b26004803603602081101561007d57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610293565b604051808215151515815260200191505060405180910390f35b3480156100d857600080fd5b50610105600480360360208110156100ef57600080fd5b81019080803590602001909291905050506102f5565b6040518082815260200191505060405180910390f35b34801561012757600080fd5b506101546004803603602081101561013e57600080fd5b8101908080359060200190929190505050610312565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a257600080fd5b506101d9600480360360408110156101b957600080fd5b81019080803590602001909291908035906020019092919050505061034f565b604051808215151515815260200191505060405180910390f35b3480156101ff57600080fd5b506102366004803603604081101561021657600080fd5b810190808035906020019092919080359060200190929190505050610434565b005b34801561024457600080fd5b506102916004803603604081101561025b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610536565b005b6000633b3b57de60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102ee575063d8389dc560e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600060026000838152602001908152602001600020549050919050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60007f6164647200000000000000000000000000000000000000000000000000000000821480156103e05750600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8061042c57507f68617368000000000000000000000000000000000000000000000000000000008214801561042b57506000801b600260008581526020019081526020016000205414155b5b905092915050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104be57600080fd5b505afa1580156104d2573d6000803e3d6000fd5b505050506040513d60208110156104e857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461051957600080fd5b816002600085815260200190815260200160002081905550505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156105c057600080fd5b505afa1580156105d4573d6000803e3d6000fd5b505050506040513d60208110156105ea57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461061b57600080fd5b816001600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505056fea265627a7a72305820f4e3c6ca8d9c35d9f90f0421e8f81f9668afd3e0df3e1a40fb160c55cbee0c7d64736f6c634300050a0032",
  "deployedBytecode": "0x6080604052600436106100555760003560e01c806301ffc9a71461005a5780632dff6941146100cc5780633b3b57de1461011b57806341b9dc2b14610196578063c3d014d6146101f3578063d5fa2b0014610238575b600080fd5b34801561006657600080fd5b506100b26004803603602081101561007d57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610293565b604051808215151515815260200191505060405180910390f35b3480156100d857600080fd5b50610105600480360360208110156100ef57600080fd5b81019080803590602001909291905050506102f5565b6040518082815260200191505060405180910390f35b34801561012757600080fd5b506101546004803603602081101561013e57600080fd5b8101908080359060200190929190505050610312565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a257600080fd5b506101d9600480360360408110156101b957600080fd5b81019080803590602001909291908035906020019092919050505061034f565b604051808215151515815260200191505060405180910390f35b3480156101ff57600080fd5b506102366004803603604081101561021657600080fd5b810190808035906020019092919080359060200190929190505050610434565b005b34801561024457600080fd5b506102916004803603604081101561025b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610536565b005b6000633b3b57de60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102ee575063d8389dc560e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600060026000838152602001908152602001600020549050919050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60007f6164647200000000000000000000000000000000000000000000000000000000821480156103e05750600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8061042c57507f68617368000000000000000000000000000000000000000000000000000000008214801561042b57506000801b600260008581526020019081526020016000205414155b5b905092915050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104be57600080fd5b505afa1580156104d2573d6000803e3d6000fd5b505050506040513d60208110156104e857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461051957600080fd5b816002600085815260200190815260200160002081905550505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156105c057600080fd5b505afa1580156105d4573d6000803e3d6000fd5b505050506040513d60208110156105ea57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461061b57600080fd5b816001600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505056fea265627a7a72305820f4e3c6ca8d9c35d9f90f0421e8f81f9668afd3e0df3e1a40fb160c55cbee0c7d64736f6c634300050a0032",
  "sourceMap": "164:2886:10:-;;;487:70;8:9:-1;5:2;;;30:1;27;20:12;5:2;487:70:10;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;487:70:10;;;;;;;;;;;;;;;;543:7;537:3;;:13;;;;;;;;;;;;;;;;;;487:70;164:2886;;;;;;",
  "deployedSourceMap": "164:2886:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;643:8;;;1410:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1410:152:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1410:152:10;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2472:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2472:97:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2472:97:10;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1721;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1721:97:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1721:97:10;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;968:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;968:191:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;968:191:10;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2940:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2940:108:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2940:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2049:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2049:118:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2049:118:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1410:152;1478:4;1516:10;1501:25;;:11;:25;;;;:54;;;;1545:10;1530:25;;:11;:25;;;;1501:54;1494:61;;1410:152;;;:::o;2472:97::-;2524:7;2550:6;:12;2557:4;2550:12;;;;;;;;;;;;2543:19;;2472:97;;;:::o;1721:::-;1770:7;1796:9;:15;1806:4;1796:15;;;;;;;;;;;;;;;;;;;;;1789:22;;1721:97;;;:::o;968:191::-;1030:4;1055:14;:4;:14;:47;;;;;1100:1;1073:29;;:9;:15;1083:4;1073:15;;;;;;;;;;;;;;;;;;;;;:29;;;;1055:47;1054:98;;;;1116:14;:4;:14;:35;;;;;1150:1;1134:17;;:6;:12;1141:4;1134:12;;;;;;;;;;;;:17;;1116:35;1054:98;1046:106;;968:191;;;;:::o;2940:108::-;3006:4;366:10;347:29;;:3;;;;;;;;;;;:9;;;357:4;347:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;347:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;347:15:10;;;;;;;;;;;;;;;;:29;;;339:38;;;;;;3037:4;3022:6;:12;3029:4;3022:12;;;;;;;;;;;:19;;;;2940:108;;;:::o;2049:118::-;2117:4;366:10;347:29;;:3;;;;;;;;;;;:9;;;357:4;347:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;347:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;347:15:10;;;;;;;;;;;;;;;;:29;;;339:38;;;;;;2151:9;2133;:15;2143:4;2133:15;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2049:118;;;:::o",
  "source": "pragma solidity ^0.5.2;\n\nimport \"../registry/AbstractRNS.sol\";\n\n/**\n * A simple resolver anyone can use; only allows the owner of a node to set its\n * address.\n */\ncontract PublicResolver {\n    AbstractRNS rns;\n    mapping(bytes32=>address) addresses;\n    mapping(bytes32=>bytes32) hashes;\n\n    modifier only_owner(bytes32 node) {\n        require(rns.owner(node) == msg.sender);\n        _;\n    }\n\n    /**\n     * Constructor.\n     * @param rnsAddr The RNS registrar contract.\n     */\n    constructor(AbstractRNS rnsAddr) public {\n        rns = rnsAddr;\n    }\n\n    /**\n     * Fallback function.\n     */\n    function() payable external {\n        revert();\n    }\n\n    /**\n     * Returns true if the specified node has the specified record type.\n     * @param node The RNS node to query.\n     * @param kind The record type name, as specified in EIP137.\n     * @return True if this resolver has a record of the provided type on the\n     *         provided node.\n     */\n    function has(bytes32 node, bytes32 kind) public view returns (bool) {\n        return  (kind == \"addr\" && addresses[node] != address(0)) ||\n        (kind == \"hash\" && hashes[node] != 0);\n    }\n\n    /**\n     * Returns true if the resolver implements the interface specified by the provided hash.\n     * @param interfaceID The ID of the interface to check for.\n     * @return True if the contract implements the requested interface.\n     */\n    function supportsInterface(bytes4 interfaceID) public pure returns (bool) {\n        return interfaceID == 0x3b3b57de || interfaceID == 0xd8389dc5;\n    }\n\n    /**\n     * Returns the address associated with an RNS node.\n     * @param node The RNS node to query.\n     * @return The associated address.\n     */\n    function addr(bytes32 node) public view returns (address) {\n        return addresses[node];\n    }\n\n    /**\n     * Sets the address associated with an RNS node.\n     * May only be called by the owner of that node in the RNS registry.\n     * @param node The node to update.\n     * @param addrValue The address to set.\n     */\n    function setAddr(bytes32 node, address addrValue) public only_owner(node) {\n        addresses[node] = addrValue;\n    }\n\n    /**\n     * Returns the content hash associated with an RNS node.\n     * Note that this resource type is not standardized, and will likely change\n     * in future to a resource type based on multihash.\n     * @param node The RNS node to query.\n     * @return The associated content hash.\n     */\n    function content(bytes32 node) public view returns (bytes32) {\n        return hashes[node];\n    }\n\n    /**\n     * Sets the content hash associated with an RNS node.\n     * May only be called by the owner of that node in the RNS registry.\n     * Note that this resource type is not standardized, and will likely change\n     * in future to a resource type based on multihash.\n     * @param node The node to update.\n     * @param hash The content hash to set\n     */\n    function setContent(bytes32 node, bytes32 hash) public only_owner(node) {\n        hashes[node] = hash;\n    }\n}\n",
  "sourcePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/PublicResolver.sol",
  "ast": {
    "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        1409
      ]
    },
    "id": 1410,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1256,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/registry/AbstractRNS.sol",
        "file": "../registry/AbstractRNS.sol",
        "id": 1257,
        "nodeType": "ImportDirective",
        "scope": 1410,
        "sourceUnit": 534,
        "src": "25:37:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "A simple resolver anyone can use; only allows the owner of a node to set its\naddress.",
        "fullyImplemented": true,
        "id": 1409,
        "linearizedBaseContracts": [
          1409
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1259,
            "name": "rns",
            "nodeType": "VariableDeclaration",
            "scope": 1409,
            "src": "194:15:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractRNS_$533",
              "typeString": "contract AbstractRNS"
            },
            "typeName": {
              "contractScope": null,
              "id": 1258,
              "name": "AbstractRNS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 533,
              "src": "194:11:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                "typeString": "contract AbstractRNS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1263,
            "name": "addresses",
            "nodeType": "VariableDeclaration",
            "scope": 1409,
            "src": "215:35:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 1262,
              "keyType": {
                "id": 1260,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "223:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "215:25:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 1261,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "232:7:10",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1267,
            "name": "hashes",
            "nodeType": "VariableDeclaration",
            "scope": 1409,
            "src": "256:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 1266,
              "keyType": {
                "id": 1264,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "264:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "256:25:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 1265,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "273:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1282,
              "nodeType": "Block",
              "src": "329:66:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1274,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1269,
                              "src": "357:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1272,
                              "name": "rns",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1259,
                              "src": "347:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                                "typeString": "contract AbstractRNS"
                              }
                            },
                            "id": 1273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 462,
                            "src": "347:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 1275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "347:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1276,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3109,
                            "src": "366:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "366:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "347:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1271,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3112,
                        3113
                      ],
                      "referencedDeclaration": 3112,
                      "src": "339:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "339:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1280,
                  "nodeType": "ExpressionStatement",
                  "src": "339:38:10"
                },
                {
                  "id": 1281,
                  "nodeType": "PlaceholderStatement",
                  "src": "387:1:10"
                }
              ]
            },
            "documentation": null,
            "id": 1283,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1269,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1283,
                  "src": "315:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1268,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "315:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "314:14:10"
            },
            "src": "295:100:10",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1292,
              "nodeType": "Block",
              "src": "527:30:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1288,
                      "name": "rns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1259,
                      "src": "537:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1289,
                      "name": "rnsAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1285,
                      "src": "543:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "src": "537:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "id": 1291,
                  "nodeType": "ExpressionStatement",
                  "src": "537:13:10"
                }
              ]
            },
            "documentation": "Constructor.\n@param rnsAddr The RNS registrar contract.",
            "id": 1293,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1285,
                  "name": "rnsAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1293,
                  "src": "499:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractRNS_$533",
                    "typeString": "contract AbstractRNS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1284,
                    "name": "AbstractRNS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 533,
                    "src": "499:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "498:21:10"
            },
            "returnParameters": {
              "id": 1287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "527:0:10"
            },
            "scope": 1409,
            "src": "487:70:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1299,
              "nodeType": "Block",
              "src": "633:25:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 1296,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3114,
                        3115
                      ],
                      "referencedDeclaration": 3114,
                      "src": "643:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "643:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1298,
                  "nodeType": "ExpressionStatement",
                  "src": "643:8:10"
                }
              ]
            },
            "documentation": "Fallback function.",
            "id": 1300,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "613:2:10"
            },
            "returnParameters": {
              "id": 1295,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "633:0:10"
            },
            "scope": 1409,
            "src": "605:53:10",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1333,
              "nodeType": "Block",
              "src": "1036:123:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1309,
                              "name": "kind",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "1055:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "61646472",
                              "id": 1310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1063:6:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e5e14487b78f85faa6e1808e89246cf57dd34831548ff2e6097380d98db2504a",
                                "typeString": "literal_string \"addr\""
                              },
                              "value": "addr"
                            },
                            "src": "1055:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1312,
                                "name": "addresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1263,
                                "src": "1073:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 1314,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1313,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1302,
                                "src": "1083:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1073:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1100:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1092:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1092:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1073:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1055:47:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 1320,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1054:49:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1321,
                              "name": "kind",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "1116:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "68617368",
                              "id": 1322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1124:6:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33027547537d35728a741470df1ccf65de10b454ca0def7c5c20b257b7b8d161",
                                "typeString": "literal_string \"hash\""
                              },
                              "value": "hash"
                            },
                            "src": "1116:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1324,
                                "name": "hashes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1267,
                                "src": "1134:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                  "typeString": "mapping(bytes32 => bytes32)"
                                }
                              },
                              "id": 1326,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1325,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1302,
                                "src": "1141:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1134:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1150:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1134:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1116:35:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 1330,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1115:37:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1054:98:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1308,
                  "id": 1332,
                  "nodeType": "Return",
                  "src": "1046:106:10"
                }
              ]
            },
            "documentation": "Returns true if the specified node has the specified record type.\n@param node The RNS node to query.\n@param kind The record type name, as specified in EIP137.\n@return True if this resolver has a record of the provided type on the\n        provided node.",
            "id": 1334,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "has",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1302,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1334,
                  "src": "981:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "981:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1304,
                  "name": "kind",
                  "nodeType": "VariableDeclaration",
                  "scope": 1334,
                  "src": "995:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "980:28:10"
            },
            "returnParameters": {
              "id": 1308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1307,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1334,
                  "src": "1030:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1306,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1030:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1029:6:10"
            },
            "scope": 1409,
            "src": "968:191:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "1484:78:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1341,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1336,
                        "src": "1501:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783362336235376465",
                        "id": 1342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1516:10:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_993744862_by_1",
                          "typeString": "int_const 993744862"
                        },
                        "value": "0x3b3b57de"
                      },
                      "src": "1501:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1344,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1336,
                        "src": "1530:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30786438333839646335",
                        "id": 1345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1545:10:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3627589061_by_1",
                          "typeString": "int_const 3627589061"
                        },
                        "value": "0xd8389dc5"
                      },
                      "src": "1530:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1501:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1340,
                  "id": 1348,
                  "nodeType": "Return",
                  "src": "1494:61:10"
                }
              ]
            },
            "documentation": "Returns true if the resolver implements the interface specified by the provided hash.\n@param interfaceID The ID of the interface to check for.\n@return True if the contract implements the requested interface.",
            "id": 1350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1336,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "1437:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1335,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1436:20:10"
            },
            "returnParameters": {
              "id": 1340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1339,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "1478:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1338,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1478:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1477:6:10"
            },
            "scope": 1409,
            "src": "1410:152:10",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1361,
              "nodeType": "Block",
              "src": "1779:39:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1357,
                      "name": "addresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1263,
                      "src": "1796:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 1359,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1358,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1352,
                      "src": "1806:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1796:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1356,
                  "id": 1360,
                  "nodeType": "Return",
                  "src": "1789:22:10"
                }
              ]
            },
            "documentation": "Returns the address associated with an RNS node.\n@param node The RNS node to query.\n@return The associated address.",
            "id": 1362,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1352,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1362,
                  "src": "1735:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1735:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1734:14:10"
            },
            "returnParameters": {
              "id": 1356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1355,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1362,
                  "src": "1770:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1770:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1769:9:10"
            },
            "scope": 1409,
            "src": "1721:97:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1378,
              "nodeType": "Block",
              "src": "2123:44:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1372,
                        "name": "addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1263,
                        "src": "2133:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 1374,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1373,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1364,
                        "src": "2143:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2133:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1375,
                      "name": "addrValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1366,
                      "src": "2151:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2133:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1377,
                  "nodeType": "ExpressionStatement",
                  "src": "2133:27:10"
                }
              ]
            },
            "documentation": "Sets the address associated with an RNS node.\nMay only be called by the owner of that node in the RNS registry.\n@param node The node to update.\n@param addrValue The address to set.",
            "id": 1379,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1369,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1364,
                    "src": "2117:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1370,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1368,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1283,
                  "src": "2106:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2106:16:10"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1364,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1379,
                  "src": "2066:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1363,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2066:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1366,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1379,
                  "src": "2080:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1365,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2080:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2065:33:10"
            },
            "returnParameters": {
              "id": 1371,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2123:0:10"
            },
            "scope": 1409,
            "src": "2049:118:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1390,
              "nodeType": "Block",
              "src": "2533:36:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1386,
                      "name": "hashes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1267,
                      "src": "2550:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                        "typeString": "mapping(bytes32 => bytes32)"
                      }
                    },
                    "id": 1388,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1387,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1381,
                      "src": "2557:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2550:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1385,
                  "id": 1389,
                  "nodeType": "Return",
                  "src": "2543:19:10"
                }
              ]
            },
            "documentation": "Returns the content hash associated with an RNS node.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The RNS node to query.\n@return The associated content hash.",
            "id": 1391,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1381,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1391,
                  "src": "2489:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1380,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2489:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2488:14:10"
            },
            "returnParameters": {
              "id": 1385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1384,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1391,
                  "src": "2524:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1383,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2524:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2523:9:10"
            },
            "scope": 1409,
            "src": "2472:97:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1407,
              "nodeType": "Block",
              "src": "3012:36:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1401,
                        "name": "hashes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1267,
                        "src": "3022:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 1403,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1402,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1393,
                        "src": "3029:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3022:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1404,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1395,
                      "src": "3037:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3022:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1406,
                  "nodeType": "ExpressionStatement",
                  "src": "3022:19:10"
                }
              ]
            },
            "documentation": "Sets the content hash associated with an RNS node.\nMay only be called by the owner of that node in the RNS registry.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The node to update.\n@param hash The content hash to set",
            "id": 1408,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1398,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1393,
                    "src": "3006:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1399,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1397,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1283,
                  "src": "2995:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2995:16:10"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1393,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "2960:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1392,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2960:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1395,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "2974:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1394,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2974:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2959:28:10"
            },
            "returnParameters": {
              "id": 1400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3012:0:10"
            },
            "scope": 1409,
            "src": "2940:108:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1410,
        "src": "164:2886:10"
      }
    ],
    "src": "0:3051:10"
  },
  "legacyAST": {
    "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/resolver/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        1409
      ]
    },
    "id": 1410,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1256,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "absolutePath": "/Users/ilanolkies/code/rnsdomains/rns-artifacts/contracts/registry/AbstractRNS.sol",
        "file": "../registry/AbstractRNS.sol",
        "id": 1257,
        "nodeType": "ImportDirective",
        "scope": 1410,
        "sourceUnit": 534,
        "src": "25:37:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "A simple resolver anyone can use; only allows the owner of a node to set its\naddress.",
        "fullyImplemented": true,
        "id": 1409,
        "linearizedBaseContracts": [
          1409
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1259,
            "name": "rns",
            "nodeType": "VariableDeclaration",
            "scope": 1409,
            "src": "194:15:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractRNS_$533",
              "typeString": "contract AbstractRNS"
            },
            "typeName": {
              "contractScope": null,
              "id": 1258,
              "name": "AbstractRNS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 533,
              "src": "194:11:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                "typeString": "contract AbstractRNS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1263,
            "name": "addresses",
            "nodeType": "VariableDeclaration",
            "scope": 1409,
            "src": "215:35:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 1262,
              "keyType": {
                "id": 1260,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "223:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "215:25:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 1261,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "232:7:10",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1267,
            "name": "hashes",
            "nodeType": "VariableDeclaration",
            "scope": 1409,
            "src": "256:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 1266,
              "keyType": {
                "id": 1264,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "264:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "256:25:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 1265,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "273:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1282,
              "nodeType": "Block",
              "src": "329:66:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1274,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1269,
                              "src": "357:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1272,
                              "name": "rns",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1259,
                              "src": "347:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractRNS_$533",
                                "typeString": "contract AbstractRNS"
                              }
                            },
                            "id": 1273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 462,
                            "src": "347:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 1275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "347:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1276,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3109,
                            "src": "366:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "366:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "347:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1271,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3112,
                        3113
                      ],
                      "referencedDeclaration": 3112,
                      "src": "339:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "339:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1280,
                  "nodeType": "ExpressionStatement",
                  "src": "339:38:10"
                },
                {
                  "id": 1281,
                  "nodeType": "PlaceholderStatement",
                  "src": "387:1:10"
                }
              ]
            },
            "documentation": null,
            "id": 1283,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1269,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1283,
                  "src": "315:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1268,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "315:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "314:14:10"
            },
            "src": "295:100:10",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1292,
              "nodeType": "Block",
              "src": "527:30:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1288,
                      "name": "rns",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1259,
                      "src": "537:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1289,
                      "name": "rnsAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1285,
                      "src": "543:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractRNS_$533",
                        "typeString": "contract AbstractRNS"
                      }
                    },
                    "src": "537:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "id": 1291,
                  "nodeType": "ExpressionStatement",
                  "src": "537:13:10"
                }
              ]
            },
            "documentation": "Constructor.\n@param rnsAddr The RNS registrar contract.",
            "id": 1293,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1285,
                  "name": "rnsAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1293,
                  "src": "499:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractRNS_$533",
                    "typeString": "contract AbstractRNS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1284,
                    "name": "AbstractRNS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 533,
                    "src": "499:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractRNS_$533",
                      "typeString": "contract AbstractRNS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "498:21:10"
            },
            "returnParameters": {
              "id": 1287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "527:0:10"
            },
            "scope": 1409,
            "src": "487:70:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1299,
              "nodeType": "Block",
              "src": "633:25:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 1296,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3114,
                        3115
                      ],
                      "referencedDeclaration": 3114,
                      "src": "643:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "643:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1298,
                  "nodeType": "ExpressionStatement",
                  "src": "643:8:10"
                }
              ]
            },
            "documentation": "Fallback function.",
            "id": 1300,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "613:2:10"
            },
            "returnParameters": {
              "id": 1295,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "633:0:10"
            },
            "scope": 1409,
            "src": "605:53:10",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1333,
              "nodeType": "Block",
              "src": "1036:123:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1309,
                              "name": "kind",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "1055:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "61646472",
                              "id": 1310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1063:6:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e5e14487b78f85faa6e1808e89246cf57dd34831548ff2e6097380d98db2504a",
                                "typeString": "literal_string \"addr\""
                              },
                              "value": "addr"
                            },
                            "src": "1055:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1312,
                                "name": "addresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1263,
                                "src": "1073:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 1314,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1313,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1302,
                                "src": "1083:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1073:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1100:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1092:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1092:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1073:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1055:47:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 1320,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1054:49:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1321,
                              "name": "kind",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "1116:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "68617368",
                              "id": 1322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1124:6:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33027547537d35728a741470df1ccf65de10b454ca0def7c5c20b257b7b8d161",
                                "typeString": "literal_string \"hash\""
                              },
                              "value": "hash"
                            },
                            "src": "1116:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 1328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1324,
                                "name": "hashes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1267,
                                "src": "1134:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                  "typeString": "mapping(bytes32 => bytes32)"
                                }
                              },
                              "id": 1326,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1325,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1302,
                                "src": "1141:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1134:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1150:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1134:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1116:35:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 1330,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1115:37:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1054:98:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1308,
                  "id": 1332,
                  "nodeType": "Return",
                  "src": "1046:106:10"
                }
              ]
            },
            "documentation": "Returns true if the specified node has the specified record type.\n@param node The RNS node to query.\n@param kind The record type name, as specified in EIP137.\n@return True if this resolver has a record of the provided type on the\n        provided node.",
            "id": 1334,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "has",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1302,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1334,
                  "src": "981:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "981:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1304,
                  "name": "kind",
                  "nodeType": "VariableDeclaration",
                  "scope": 1334,
                  "src": "995:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "980:28:10"
            },
            "returnParameters": {
              "id": 1308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1307,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1334,
                  "src": "1030:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1306,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1030:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1029:6:10"
            },
            "scope": 1409,
            "src": "968:191:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "1484:78:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1341,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1336,
                        "src": "1501:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783362336235376465",
                        "id": 1342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1516:10:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_993744862_by_1",
                          "typeString": "int_const 993744862"
                        },
                        "value": "0x3b3b57de"
                      },
                      "src": "1501:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1344,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1336,
                        "src": "1530:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30786438333839646335",
                        "id": 1345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1545:10:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3627589061_by_1",
                          "typeString": "int_const 3627589061"
                        },
                        "value": "0xd8389dc5"
                      },
                      "src": "1530:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1501:54:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1340,
                  "id": 1348,
                  "nodeType": "Return",
                  "src": "1494:61:10"
                }
              ]
            },
            "documentation": "Returns true if the resolver implements the interface specified by the provided hash.\n@param interfaceID The ID of the interface to check for.\n@return True if the contract implements the requested interface.",
            "id": 1350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1336,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "1437:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1335,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1436:20:10"
            },
            "returnParameters": {
              "id": 1340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1339,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1350,
                  "src": "1478:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1338,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1478:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1477:6:10"
            },
            "scope": 1409,
            "src": "1410:152:10",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1361,
              "nodeType": "Block",
              "src": "1779:39:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1357,
                      "name": "addresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1263,
                      "src": "1796:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 1359,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1358,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1352,
                      "src": "1806:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1796:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1356,
                  "id": 1360,
                  "nodeType": "Return",
                  "src": "1789:22:10"
                }
              ]
            },
            "documentation": "Returns the address associated with an RNS node.\n@param node The RNS node to query.\n@return The associated address.",
            "id": 1362,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1352,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1362,
                  "src": "1735:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1735:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1734:14:10"
            },
            "returnParameters": {
              "id": 1356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1355,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1362,
                  "src": "1770:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1770:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1769:9:10"
            },
            "scope": 1409,
            "src": "1721:97:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1378,
              "nodeType": "Block",
              "src": "2123:44:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1372,
                        "name": "addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1263,
                        "src": "2133:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 1374,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1373,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1364,
                        "src": "2143:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2133:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1375,
                      "name": "addrValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1366,
                      "src": "2151:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2133:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1377,
                  "nodeType": "ExpressionStatement",
                  "src": "2133:27:10"
                }
              ]
            },
            "documentation": "Sets the address associated with an RNS node.\nMay only be called by the owner of that node in the RNS registry.\n@param node The node to update.\n@param addrValue The address to set.",
            "id": 1379,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1369,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1364,
                    "src": "2117:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1370,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1368,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1283,
                  "src": "2106:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2106:16:10"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1364,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1379,
                  "src": "2066:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1363,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2066:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1366,
                  "name": "addrValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 1379,
                  "src": "2080:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1365,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2080:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2065:33:10"
            },
            "returnParameters": {
              "id": 1371,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2123:0:10"
            },
            "scope": 1409,
            "src": "2049:118:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1390,
              "nodeType": "Block",
              "src": "2533:36:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1386,
                      "name": "hashes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1267,
                      "src": "2550:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                        "typeString": "mapping(bytes32 => bytes32)"
                      }
                    },
                    "id": 1388,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1387,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1381,
                      "src": "2557:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2550:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1385,
                  "id": 1389,
                  "nodeType": "Return",
                  "src": "2543:19:10"
                }
              ]
            },
            "documentation": "Returns the content hash associated with an RNS node.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The RNS node to query.\n@return The associated content hash.",
            "id": 1391,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1381,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1391,
                  "src": "2489:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1380,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2489:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2488:14:10"
            },
            "returnParameters": {
              "id": 1385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1384,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1391,
                  "src": "2524:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1383,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2524:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2523:9:10"
            },
            "scope": 1409,
            "src": "2472:97:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1407,
              "nodeType": "Block",
              "src": "3012:36:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1401,
                        "name": "hashes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1267,
                        "src": "3022:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 1403,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1402,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1393,
                        "src": "3029:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3022:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1404,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1395,
                      "src": "3037:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3022:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1406,
                  "nodeType": "ExpressionStatement",
                  "src": "3022:19:10"
                }
              ]
            },
            "documentation": "Sets the content hash associated with an RNS node.\nMay only be called by the owner of that node in the RNS registry.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The node to update.\n@param hash The content hash to set",
            "id": 1408,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1398,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1393,
                    "src": "3006:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1399,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1397,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1283,
                  "src": "2995:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2995:16:10"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1393,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "2960:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1392,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2960:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1395,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1408,
                  "src": "2974:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1394,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2974:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2959:28:10"
            },
            "returnParameters": {
              "id": 1400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3012:0:10"
            },
            "scope": 1409,
            "src": "2940:108:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1410,
        "src": "164:2886:10"
      }
    ],
    "src": "0:3051:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.10+commit.5a6ea5b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.10",
  "updatedAt": "2019-07-03T18:04:40.086Z",
  "devdoc": {
    "methods": {
      "addr(bytes32)": {
        "params": {
          "node": "The RNS node to query."
        },
        "return": "The associated address."
      },
      "constructor": {
        "params": {
          "rnsAddr": "The RNS registrar contract."
        }
      },
      "content(bytes32)": {
        "params": {
          "node": "The RNS node to query."
        },
        "return": "The associated content hash."
      },
      "has(bytes32,bytes32)": {
        "params": {
          "kind": "The record type name, as specified in EIP137.",
          "node": "The RNS node to query."
        },
        "return": "True if this resolver has a record of the provided type on the        provided node."
      },
      "setAddr(bytes32,address)": {
        "params": {
          "addrValue": "The address to set.",
          "node": "The node to update."
        }
      },
      "setContent(bytes32,bytes32)": {
        "params": {
          "hash": "The content hash to set",
          "node": "The node to update."
        }
      },
      "supportsInterface(bytes4)": {
        "params": {
          "interfaceID": "The ID of the interface to check for."
        },
        "return": "True if the contract implements the requested interface."
      }
    }
  },
  "userdoc": {
    "methods": {
      "addr(bytes32)": {
        "notice": "Returns the address associated with an RNS node."
      },
      "constructor": "Constructor.",
      "content(bytes32)": {
        "notice": "Returns the content hash associated with an RNS node. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash."
      },
      "has(bytes32,bytes32)": {
        "notice": "Returns true if the specified node has the specified record type."
      },
      "setAddr(bytes32,address)": {
        "notice": "Sets the address associated with an RNS node. May only be called by the owner of that node in the RNS registry."
      },
      "setContent(bytes32,bytes32)": {
        "notice": "Sets the content hash associated with an RNS node. May only be called by the owner of that node in the RNS registry. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash."
      },
      "supportsInterface(bytes4)": {
        "notice": "Returns true if the resolver implements the interface specified by the provided hash."
      }
    },
    "notice": "A simple resolver anyone can use; only allows the owner of a node to set its address."
  }
}