packages/deployer/builtContracts/ReverseRegistrar.json
{
"contractName": "ReverseRegistrar",
"abi": [
{
"inputs": [
{
"internalType": "contract ENS",
"name": "ensAddr",
"type": "address"
},
{
"internalType": "contract NameResolver",
"name": "resolverAddr",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "ADDR_REVERSE_NODE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "defaultResolver",
"outputs": [
{
"internalType": "contract NameResolver",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ens",
"outputs": [
{
"internalType": "contract ENS",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "claim",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
}
],
"name": "claimWithResolver",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
}
],
"name": "setName",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "node",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.7.4+commit.3f05b770\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"},{\"internalType\":\"contract NameResolver\",\"name\":\"resolverAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ADDR_REVERSE_NODE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimWithResolver\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultResolver\",\"outputs\":[{\"internalType\":\"contract NameResolver\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claim(address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the calling account.\",\"params\":{\"owner\":\"The address to set as the owner of the reverse record in ENS.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"claimWithResolver(address,address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the calling account.\",\"params\":{\"owner\":\"The address to set as the owner of the reverse record in ENS.\",\"resolver\":\"The address of the resolver to set; 0 to leave unchanged.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"constructor\":{\"details\":\"Constructor\",\"params\":{\"ensAddr\":\"The address of the ENS registry.\",\"resolverAddr\":\"The address of the default reverse resolver.\"}},\"node(address)\":{\"details\":\"Returns the node hash for a given account's reverse records.\",\"params\":{\"addr\":\"The address to hash\"},\"returns\":{\"_0\":\"The ENS node hash.\"}},\"setName(string)\":{\"details\":\"Sets the `name()` record for the reverse ENS record associated with the calling account. First updates the resolver to the default reverse resolver if necessary.\",\"params\":{\"name\":\"The name to set for this address.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ReverseRegistrar.sol\":\"ReverseRegistrar\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ENS.sol\":{\"keccak256\":\"0x376a1ab7c43ac7c922a5b7e39c7fcba8bc66409fb335ebcee2f8f45d485b1f31\",\"urls\":[\"bzz-raw://766025ff22caa14c68bb5341b843616f3da8b739924475f7dc4383b0482138fe\",\"dweb:/ipfs/QmWzCxvb6WnF9qHHX4np7f6QePXMqX59SDMuRu8vogYKAV\"]},\"project:/contracts/ReverseRegistrar.sol\":{\"keccak256\":\"0x17e73b58124d7ec0294c9cf73ee0ab8b1f52008e1e3e6f7e1654a8147523f8fb\",\"urls\":[\"bzz-raw://57cf0fba04b811b8d610598264216394fd3208fce6b2f2cc61670ebc2318dd9a\",\"dweb:/ipfs/Qmdif69vVwLmKsNgQTPhoQDeqWEckBPZiPrBjjcjSfPG2X\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50604051610d89380380610d898339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be37f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561016657600080fd5b505afa15801561017a573d6000803e3d6000fd5b505050506040513d602081101561019057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461027d578073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561024057600080fd5b505af1158015610254573d6000803e3d6000fd5b505050506040513d602081101561026a57600080fd5b8101908080519060200190929190505050505b505050610afa8061028f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637cf8a2eb1161005b5780637cf8a2eb14610186578063828eab0e146101a4578063bffbe61c146101d8578063c47f0027146102305761007d565b80630f5a5466146100825780631e83409a146100fa5780633f15457f14610152575b600080fd5b6100e46004803603604081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102ff565b6040518082815260200191505060405180910390f35b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b6040518082815260200191505060405180910390f35b61015a610852565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e610876565b6040518082815260200191505060405180910390f35b6101ac61089d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021a600480360360208110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c3565b6040518082815260200191505060405180910390f35b6102e96004803603602081101561024657600080fd5b810190808035906020019064010000000081111561026357600080fd5b82018360208201111561027557600080fd5b8035906020019184600183028401116401000000008311171561029757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610926565b6040518082815260200191505060405180910390f35b60008061030b33610a5a565b905060007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b82604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156103d757600080fd5b505afa1580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610528575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d60208110156104e757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610706573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461065c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85306040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b505050506040513d602081101561064657600080fd5b8101908080519060200190929190505050503090505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a83876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108325760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85896040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b8101908080519060200190929190505050505b81935050505092915050565b600061084b8260006102ff565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6108f283610a5a565b6040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60008061095530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166102ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637737221382856040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ec5780820151818401526020810190506109d1565b50505050905090810190601f168015610a195780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505080915050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b6000811115610ab65760018103905081600f85161a815360108404935060018103905081600f85161a8153601084049350610a80565b50602860002091505091905056fea264697066735822122001eb0fe3b1620750d92f9c3097f105d2b8c1c9af21f95212691c597ad2021ba364736f6c63430007040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637cf8a2eb1161005b5780637cf8a2eb14610186578063828eab0e146101a4578063bffbe61c146101d8578063c47f0027146102305761007d565b80630f5a5466146100825780631e83409a146100fa5780633f15457f14610152575b600080fd5b6100e46004803603604081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102ff565b6040518082815260200191505060405180910390f35b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b6040518082815260200191505060405180910390f35b61015a610852565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e610876565b6040518082815260200191505060405180910390f35b6101ac61089d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021a600480360360208110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c3565b6040518082815260200191505060405180910390f35b6102e96004803603602081101561024657600080fd5b810190808035906020019064010000000081111561026357600080fd5b82018360208201111561027557600080fd5b8035906020019184600183028401116401000000008311171561029757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610926565b6040518082815260200191505060405180910390f35b60008061030b33610a5a565b905060007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b82604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156103d757600080fd5b505afa1580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610528575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d60208110156104e757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610706573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461065c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85306040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b505050506040513d602081101561064657600080fd5b8101908080519060200190929190505050503090505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a83876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108325760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85896040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b8101908080519060200190929190505050505b81935050505092915050565b600061084b8260006102ff565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6108f283610a5a565b6040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60008061095530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166102ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637737221382856040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ec5780820151818401526020810190506109d1565b50505050905090810190601f168015610a195780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505080915050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b6000811115610ab65760018103905081600f85161a815360108404935060018103905081600f85161a8153601084049350610a80565b50602860002091505091905056fea264697066735822122001eb0fe3b1620750d92f9c3097f105d2b8c1c9af21f95212691c597ad2021ba364736f6c63430007040033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [],
"sourceMap": "153:4192:5:-:0;;;563:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:7;632:3;;:13;;;;;;;;;;;;;;;;;;673:12;655:15;;:30;;;;;;;;;;;;;;;;;;762:29;811:3;;;;;;;;;;;:9;;;261:66;821:17;;811:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:78;;887:3;854:37;;862:12;854:37;;;850:98;;907:12;:18;;;926:10;907:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;850:98;563:391;;;153:4192;;;;;;",
"deployedSourceMap": "153:4192:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:871;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1221:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;334:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;217:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;354:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3262:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2876:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1686:871;1762:7;1781:13;1797:26;1812:10;1797:14;:26::i;:::-;1781:42;;1833:12;261:66;1875:17;;1894:5;1858:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:53;;;;;;1833:68;;1911:20;1934:3;;;;;;;;;;;:9;;;1944:4;1934:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1911:38;;2027:3;2007:24;;:8;:24;;;;:58;;;;;2047:3;;;;;;;;;;:12;;;2060:4;2047:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2035:30;;:8;:30;;;;2007:58;2003:372;;;2174:4;2150:29;;:12;:29;;;2146:174;;2199:3;;;;;;;;;;:19;;;261:66;2219:17;;2238:5;2253:4;2199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2300:4;2277:28;;2146:174;2333:3;;;;;;;;;;:15;;;2349:4;2355:8;2333:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2003:372;2445:5;2429:21;;:12;:21;;;2425:104;;2466:3;;;;;;;;;;:19;;;261:66;2486:17;;2505:5;2512;2466:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:104;2546:4;2539:11;;;;;1686:871;;;;:::o;1221:117::-;1267:7;1293:38;1311:5;1326:3;1293:17;:38::i;:::-;1286:45;;1221:117;;;:::o;334:14::-;;;;;;;;;;;;:::o;217:110::-;261:66;217:110;;;:::o;354:35::-;;;;;;;;;;;;;:::o;3262:150::-;3311:7;261:66;3364:17;;3383:20;3398:4;3383:14;:20::i;:::-;3347:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:68;;;;;;3330:75;;3262:150;;;:::o;2876:218::-;2929:7;2948:12;2963:58;2989:4;3004:15;;;;;;;;;;;2963:17;:58::i;:::-;2948:73;;3031:15;;;;;;;;;;;:23;;;3055:4;3061;3031:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3083:4;3076:11;;;2876:218;;;:::o;3717:626::-;3777:11;3906:66;4001:2;3986:304;4012:1;4009;4006:8;3986:304;;;4049:1;4046;4042:9;4037:14;;4100:6;4094:3;4088:4;4084:14;4079:28;4076:1;4068:40;4143:4;4137;4133:15;4125:23;;4177:1;4174;4170:9;4165:14;;4228:6;4222:3;4216:4;4212:14;4207:28;4204:1;4196:40;4271:4;4265;4261:15;4253:23;;3986:304;;;3990:15;4324:2;4321:1;4311:16;4304:23;;3878:459;;;;:::o",
"source": "pragma solidity ^0.7.0;\n\nimport \"./ENS.sol\";\n\nabstract contract NameResolver {\n function setName(bytes32 node, string memory name) public virtual;\n}\n\ncontract ReverseRegistrar {\n // namehash('addr.reverse')\n bytes32 public constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\n\n ENS public ens;\n NameResolver public defaultResolver;\n\n /**\n * @dev Constructor\n * @param ensAddr The address of the ENS registry.\n * @param resolverAddr The address of the default reverse resolver.\n */\n constructor(ENS ensAddr, NameResolver resolverAddr) public {\n ens = ensAddr;\n defaultResolver = resolverAddr;\n\n // Assign ownership of the reverse record to our deployer\n ReverseRegistrar oldRegistrar = ReverseRegistrar(ens.owner(ADDR_REVERSE_NODE));\n if (address(oldRegistrar) != address(0x0)) {\n oldRegistrar.claim(msg.sender);\n }\n }\n\n /**\n * @dev Transfers ownership of the reverse ENS record associated with the\n * calling account.\n * @param owner The address to set as the owner of the reverse record in ENS.\n * @return The ENS node hash of the reverse record.\n */\n function claim(address owner) public returns (bytes32) {\n return claimWithResolver(owner, address(0x0));\n }\n\n /**\n * @dev Transfers ownership of the reverse ENS record associated with the\n * calling account.\n * @param owner The address to set as the owner of the reverse record in ENS.\n * @param resolver The address of the resolver to set; 0 to leave unchanged.\n * @return The ENS node hash of the reverse record.\n */\n function claimWithResolver(address owner, address resolver) public returns (bytes32) {\n bytes32 label = sha3HexAddress(msg.sender);\n bytes32 node = keccak256(abi.encodePacked(ADDR_REVERSE_NODE, label));\n address currentOwner = ens.owner(node);\n\n // Update the resolver if required\n if (resolver != address(0x0) && resolver != ens.resolver(node)) {\n // Transfer the name to us first if it's not already\n if (currentOwner != address(this)) {\n ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, address(this));\n currentOwner = address(this);\n }\n ens.setResolver(node, resolver);\n }\n\n // Update the owner if required\n if (currentOwner != owner) {\n ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, owner);\n }\n\n return node;\n }\n\n /**\n * @dev Sets the `name()` record for the reverse ENS record associated with\n * the calling account. First updates the resolver to the default reverse\n * resolver if necessary.\n * @param name The name to set for this address.\n * @return The ENS node hash of the reverse record.\n */\n function setName(string memory name) public returns (bytes32) {\n bytes32 node = claimWithResolver(address(this), address(defaultResolver));\n defaultResolver.setName(node, name);\n return node;\n }\n\n /**\n * @dev Returns the node hash for a given account's reverse records.\n * @param addr The address to hash\n * @return The ENS node hash.\n */\n function node(address addr) public pure returns (bytes32) {\n return keccak256(abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr)));\n }\n\n /**\n * @dev An optimised function to compute the sha3 of the lower-case\n * hexadecimal representation of an Ethereum address.\n * @param addr The address to hash\n * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n * input address.\n */\n function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\n addr;\n ret; // Stop warning us about unused variables\n assembly {\n let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000\n\n for { let i := 40 } gt(i, 0) { } {\n i := sub(i, 1)\n mstore8(i, byte(and(addr, 0xf), lookup))\n addr := div(addr, 0x10)\n i := sub(i, 1)\n mstore8(i, byte(and(addr, 0xf), lookup))\n addr := div(addr, 0x10)\n }\n\n ret := keccak256(0, 40)\n }\n }\n}\n",
"sourcePath": "/home/sniffnoy/truffle/ens/contracts/ReverseRegistrar.sol",
"ast": {
"absolutePath": "project:/contracts/ReverseRegistrar.sol",
"exportedSymbols": {
"ENS": [
136
],
"NameResolver": [
843
],
"ReverseRegistrar": [
1074
]
},
"id": 1075,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 834,
"literals": [
"solidity",
"^",
"0.7",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:5"
},
{
"absolutePath": "project:/contracts/ENS.sol",
"file": "./ENS.sol",
"id": 835,
"nodeType": "ImportDirective",
"scope": 1075,
"sourceUnit": 137,
"src": "25:19:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": true,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": false,
"id": 843,
"linearizedBaseContracts": [
843
],
"name": "NameResolver",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "77372213",
"id": 842,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setName",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 840,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 837,
"mutability": "mutable",
"name": "node",
"nodeType": "VariableDeclaration",
"scope": 842,
"src": "100:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 836,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "100:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 839,
"mutability": "mutable",
"name": "name",
"nodeType": "VariableDeclaration",
"scope": 842,
"src": "114:18:5",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 838,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "114:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "99:34:5"
},
"returnParameters": {
"id": 841,
"nodeType": "ParameterList",
"parameters": [],
"src": "148:0:5"
},
"scope": 843,
"src": "83:66:5",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
}
],
"scope": 1075,
"src": "46:105:5"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 1074,
"linearizedBaseContracts": [
1074
],
"name": "ReverseRegistrar",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"functionSelector": "7cf8a2eb",
"id": 846,
"mutability": "constant",
"name": "ADDR_REVERSE_NODE",
"nodeType": "VariableDeclaration",
"scope": 1074,
"src": "217:110:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 844,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "217:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"hexValue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
"id": 845,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "261:66:5",
"typeDescriptions": {
"typeIdentifier": "t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1",
"typeString": "int_const 6595...(69 digits omitted)...3154"
},
"value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "3f15457f",
"id": 848,
"mutability": "mutable",
"name": "ens",
"nodeType": "VariableDeclaration",
"scope": 1074,
"src": "334:14:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
},
"typeName": {
"id": 847,
"name": "ENS",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 136,
"src": "334:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "828eab0e",
"id": 850,
"mutability": "mutable",
"name": "defaultResolver",
"nodeType": "VariableDeclaration",
"scope": 1074,
"src": "354:35:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
},
"typeName": {
"id": 849,
"name": "NameResolver",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 843,
"src": "354:12:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
},
"visibility": "public"
},
{
"body": {
"id": 893,
"nodeType": "Block",
"src": "622:332:5",
"statements": [
{
"expression": {
"id": 860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 858,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "632:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 859,
"name": "ensAddr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 853,
"src": "638:7:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"src": "632:13:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 861,
"nodeType": "ExpressionStatement",
"src": "632:13:5"
},
{
"expression": {
"id": 864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 862,
"name": "defaultResolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "655:15:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 863,
"name": "resolverAddr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 855,
"src": "673:12:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
},
"src": "655:30:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
},
"id": 865,
"nodeType": "ExpressionStatement",
"src": "655:30:5"
},
{
"assignments": [
867
],
"declarations": [
{
"constant": false,
"id": 867,
"mutability": "mutable",
"name": "oldRegistrar",
"nodeType": "VariableDeclaration",
"scope": 893,
"src": "762:29:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
},
"typeName": {
"id": 866,
"name": "ReverseRegistrar",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1074,
"src": "762:16:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
},
"visibility": "internal"
}
],
"id": 874,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 871,
"name": "ADDR_REVERSE_NODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "821:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 869,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "811:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 870,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 105,
"src": "811:9:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 872,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "811:28:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 868,
"name": "ReverseRegistrar",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1074,
"src": "794:16:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ReverseRegistrar_$1074_$",
"typeString": "type(contract ReverseRegistrar)"
}
},
"id": 873,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "794:46:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "762:78:5"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 877,
"name": "oldRegistrar",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 867,
"src": "862:12:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"id": 876,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "854:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 875,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "854:7:5",
"typeDescriptions": {}
}
},
"id": 878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "854:21:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "307830",
"id": 881,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "887:3:5",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0x0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 880,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "879:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 879,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "879:7:5",
"typeDescriptions": {}
}
},
"id": 882,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "879:12:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "854:37:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 892,
"nodeType": "IfStatement",
"src": "850:98:5",
"trueBody": {
"id": 891,
"nodeType": "Block",
"src": "893:55:5",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 887,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "926:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 888,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "926:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"expression": {
"id": 884,
"name": "oldRegistrar",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 867,
"src": "907:12:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
},
"id": 886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "claim",
"nodeType": "MemberAccess",
"referencedDeclaration": 911,
"src": "907:18:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address) external returns (bytes32)"
}
},
"id": 889,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "907:30:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 890,
"nodeType": "ExpressionStatement",
"src": "907:30:5"
}
]
}
}
]
},
"documentation": {
"id": 851,
"nodeType": "StructuredDocumentation",
"src": "396:162:5",
"text": " @dev Constructor\n @param ensAddr The address of the ENS registry.\n @param resolverAddr The address of the default reverse resolver."
},
"id": 894,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 856,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 853,
"mutability": "mutable",
"name": "ensAddr",
"nodeType": "VariableDeclaration",
"scope": 894,
"src": "575:11:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
},
"typeName": {
"id": 852,
"name": "ENS",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 136,
"src": "575:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 855,
"mutability": "mutable",
"name": "resolverAddr",
"nodeType": "VariableDeclaration",
"scope": 894,
"src": "588:25:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
},
"typeName": {
"id": 854,
"name": "NameResolver",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 843,
"src": "588:12:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
},
"visibility": "internal"
}
],
"src": "574:40:5"
},
"returnParameters": {
"id": 857,
"nodeType": "ParameterList",
"parameters": [],
"src": "622:0:5"
},
"scope": 1074,
"src": "563:391:5",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 910,
"nodeType": "Block",
"src": "1276:62:5",
"statements": [
{
"expression": {
"arguments": [
{
"id": 903,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 897,
"src": "1311:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "307830",
"id": 906,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1326:3:5",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0x0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 905,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1318:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 904,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1318:7:5",
"typeDescriptions": {}
}
},
"id": 907,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1318:12:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 902,
"name": "claimWithResolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1009,
"src": "1293:17:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address,address) returns (bytes32)"
}
},
"id": 908,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1293:38:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 901,
"id": 909,
"nodeType": "Return",
"src": "1286:45:5"
}
]
},
"documentation": {
"id": 895,
"nodeType": "StructuredDocumentation",
"src": "960:256:5",
"text": " @dev Transfers ownership of the reverse ENS record associated with the\n calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @return The ENS node hash of the reverse record."
},
"functionSelector": "1e83409a",
"id": 911,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "claim",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 898,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 897,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 911,
"src": "1236:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 896,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1236:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1235:15:5"
},
"returnParameters": {
"id": 901,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 900,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 911,
"src": "1267:7:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 899,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1267:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1266:9:5"
},
"scope": 1074,
"src": "1221:117:5",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1008,
"nodeType": "Block",
"src": "1771:786:5",
"statements": [
{
"assignments": [
922
],
"declarations": [
{
"constant": false,
"id": 922,
"mutability": "mutable",
"name": "label",
"nodeType": "VariableDeclaration",
"scope": 1008,
"src": "1781:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 921,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1781:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"id": 927,
"initialValue": {
"arguments": [
{
"expression": {
"id": 924,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1812:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 925,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1812:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 923,
"name": "sha3HexAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1073,
"src": "1797:14:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address) pure returns (bytes32)"
}
},
"id": 926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1797:26:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1781:42:5"
},
{
"assignments": [
929
],
"declarations": [
{
"constant": false,
"id": 929,
"mutability": "mutable",
"name": "node",
"nodeType": "VariableDeclaration",
"scope": 1008,
"src": "1833:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 928,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1833:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"id": 937,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 933,
"name": "ADDR_REVERSE_NODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "1875:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 934,
"name": "label",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 922,
"src": "1894:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 931,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1858:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 932,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "1858:16:5",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1858:42:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 930,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1848:9:5",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 936,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1848:53:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1833:68:5"
},
{
"assignments": [
939
],
"declarations": [
{
"constant": false,
"id": 939,
"mutability": "mutable",
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 1008,
"src": "1911:20:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 938,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1911:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 944,
"initialValue": {
"arguments": [
{
"id": 942,
"name": "node",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "1944:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 940,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "1934:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 941,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "owner",
"nodeType": "MemberAccess",
"referencedDeclaration": 105,
"src": "1934:9:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 943,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1934:15:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1911:38:5"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 957,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 950,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 945,
"name": "resolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 916,
"src": "2007:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "307830",
"id": 948,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2027:3:5",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0x0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 947,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2019:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 946,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2019:7:5",
"typeDescriptions": {}
}
},
"id": 949,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2019:12:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2007:24:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 956,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 951,
"name": "resolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 916,
"src": "2035:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"id": 954,
"name": "node",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "2060:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 952,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "2047:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 953,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "resolver",
"nodeType": "MemberAccess",
"referencedDeclaration": 112,
"src": "2047:12:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2047:18:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2035:30:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2007:58:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 992,
"nodeType": "IfStatement",
"src": "2003:372:5",
"trueBody": {
"id": 991,
"nodeType": "Block",
"src": "2067:308:5",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 958,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 939,
"src": "2150:12:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"id": 961,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2174:4:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"id": 960,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2166:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 959,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2166:7:5",
"typeDescriptions": {}
}
},
"id": 962,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2166:13:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2150:29:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 983,
"nodeType": "IfStatement",
"src": "2146:174:5",
"trueBody": {
"id": 982,
"nodeType": "Block",
"src": "2181:139:5",
"statements": [
{
"expression": {
"arguments": [
{
"id": 967,
"name": "ADDR_REVERSE_NODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "2219:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 968,
"name": "label",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 922,
"src": "2238:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"arguments": [
{
"id": 971,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2253:4:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"id": 970,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2245:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 969,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2245:7:5",
"typeDescriptions": {}
}
},
"id": 972,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2245:13:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 964,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "2199:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 966,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "setSubnodeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 70,
"src": "2199:19:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
"typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
}
},
"id": 973,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2199:60:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 974,
"nodeType": "ExpressionStatement",
"src": "2199:60:5"
},
{
"expression": {
"id": 980,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 975,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 939,
"src": "2277:12:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 978,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2300:4:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"id": 977,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2292:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 976,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2292:7:5",
"typeDescriptions": {}
}
},
"id": 979,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2292:13:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2277:28:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 981,
"nodeType": "ExpressionStatement",
"src": "2277:28:5"
}
]
}
},
{
"expression": {
"arguments": [
{
"id": 987,
"name": "node",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "2349:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 988,
"name": "resolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 916,
"src": "2355:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 984,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "2333:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 986,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "setResolver",
"nodeType": "MemberAccess",
"referencedDeclaration": 77,
"src": "2333:15:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address) external"
}
},
"id": 989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2333:31:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 990,
"nodeType": "ExpressionStatement",
"src": "2333:31:5"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 995,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 993,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 939,
"src": "2429:12:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 994,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 914,
"src": "2445:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2429:21:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1005,
"nodeType": "IfStatement",
"src": "2425:104:5",
"trueBody": {
"id": 1004,
"nodeType": "Block",
"src": "2452:77:5",
"statements": [
{
"expression": {
"arguments": [
{
"id": 999,
"name": "ADDR_REVERSE_NODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "2486:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 1000,
"name": "label",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 922,
"src": "2505:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 1001,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 914,
"src": "2512:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 996,
"name": "ens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 848,
"src": "2466:3:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ENS_$136",
"typeString": "contract ENS"
}
},
"id": 998,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "setSubnodeOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 70,
"src": "2466:19:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
"typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
}
},
"id": 1002,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2466:52:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1003,
"nodeType": "ExpressionStatement",
"src": "2466:52:5"
}
]
}
},
{
"expression": {
"id": 1006,
"name": "node",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "2546:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 920,
"id": 1007,
"nodeType": "Return",
"src": "2539:11:5"
}
]
},
"documentation": {
"id": 912,
"nodeType": "StructuredDocumentation",
"src": "1344:337:5",
"text": " @dev Transfers ownership of the reverse ENS record associated with the\n calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @param resolver The address of the resolver to set; 0 to leave unchanged.\n @return The ENS node hash of the reverse record."
},
"functionSelector": "0f5a5466",
"id": 1009,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "claimWithResolver",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 917,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 914,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1009,
"src": "1713:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 913,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1713:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 916,
"mutability": "mutable",
"name": "resolver",
"nodeType": "VariableDeclaration",
"scope": 1009,
"src": "1728:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 915,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1728:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1712:33:5"
},
"returnParameters": {
"id": 920,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 919,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1009,
"src": "1762:7:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 918,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1762:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1761:9:5"
},
"scope": 1074,
"src": "1686:871:5",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1039,
"nodeType": "Block",
"src": "2938:156:5",
"statements": [
{
"assignments": [
1018
],
"declarations": [
{
"constant": false,
"id": 1018,
"mutability": "mutable",
"name": "node",
"nodeType": "VariableDeclaration",
"scope": 1039,
"src": "2948:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1017,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2948:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"id": 1029,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 1022,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2989:4:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"id": 1021,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2981:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1020,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2981:7:5",
"typeDescriptions": {}
}
},
"id": 1023,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2981:13:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 1026,
"name": "defaultResolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "3004:15:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
],
"id": 1025,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2996:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1024,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2996:7:5",
"typeDescriptions": {}
}
},
"id": 1027,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2996:24:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1019,
"name": "claimWithResolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1009,
"src": "2963:17:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address,address) returns (bytes32)"
}
},
"id": 1028,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2963:58:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2948:73:5"
},
{
"expression": {
"arguments": [
{
"id": 1033,
"name": "node",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1018,
"src": "3055:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 1034,
"name": "name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "3061:4:5",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"id": 1030,
"name": "defaultResolver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "3031:15:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
},
"id": 1032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "setName",
"nodeType": "MemberAccess",
"referencedDeclaration": 842,
"src": "3031:23:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bytes32,string memory) external"
}
},
"id": 1035,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3031:35:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1036,
"nodeType": "ExpressionStatement",
"src": "3031:35:5"
},
{
"expression": {
"id": 1037,
"name": "node",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1018,
"src": "3083:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 1016,
"id": 1038,
"nodeType": "Return",
"src": "3076:11:5"
}
]
},
"documentation": {
"id": 1010,
"nodeType": "StructuredDocumentation",
"src": "2563:308:5",
"text": " @dev Sets the `name()` record for the reverse ENS record associated with\n the calling account. First updates the resolver to the default reverse\n resolver if necessary.\n @param name The name to set for this address.\n @return The ENS node hash of the reverse record."
},
"functionSelector": "c47f0027",
"id": 1040,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setName",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1013,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1012,
"mutability": "mutable",
"name": "name",
"nodeType": "VariableDeclaration",
"scope": 1040,
"src": "2893:18:5",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 1011,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2893:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2892:20:5"
},
"returnParameters": {
"id": 1016,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1015,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1040,
"src": "2929:7:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1014,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2929:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "2928:9:5"
},
"scope": 1074,
"src": "2876:218:5",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1058,
"nodeType": "Block",
"src": "3320:92:5",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 1051,
"name": "ADDR_REVERSE_NODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "3364:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"arguments": [
{
"id": 1053,
"name": "addr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1043,
"src": "3398:4:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1052,
"name": "sha3HexAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1073,
"src": "3383:14:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$",
"typeString": "function (address) pure returns (bytes32)"
}
},
"id": 1054,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3383:20:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 1049,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "3347:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 1050,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "3347:16:5",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 1055,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3347:57:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1048,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "3337:9:5",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 1056,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3337:68:5",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 1047,
"id": 1057,
"nodeType": "Return",
"src": "3330:75:5"
}
]
},
"documentation": {
"id": 1041,
"nodeType": "StructuredDocumentation",
"src": "3100:157:5",
"text": " @dev Returns the node hash for a given account's reverse records.\n @param addr The address to hash\n @return The ENS node hash."
},
"functionSelector": "bffbe61c",
"id": 1059,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "node",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1044,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1043,
"mutability": "mutable",
"name": "addr",
"nodeType": "VariableDeclaration",
"scope": 1059,
"src": "3276:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1042,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3276:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3275:14:5"
},
"returnParameters": {
"id": 1047,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1046,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1059,
"src": "3311:7:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1045,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3311:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "3310:9:5"
},
"scope": 1074,
"src": "3262:150:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1072,
"nodeType": "Block",
"src": "3790:553:5",
"statements": [
{
"expression": {
"id": 1067,
"name": "addr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1062,
"src": "3800:4:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1068,
"nodeType": "ExpressionStatement",
"src": "3800:4:5"
},
{
"expression": {
"id": 1069,
"name": "ret",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1065,
"src": "3814:3:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1070,
"nodeType": "ExpressionStatement",
"src": "3814:3:5"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "3878:459:5",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3892:80:5",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3906:66:5",
"type": "",
"value": "0x3031323334353637383961626364656600000000000000000000000000000000"
},
"variables": [
{
"name": "lookup",
"nodeType": "YulTypedName",
"src": "3896:6:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4019:271:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4037:14:5",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4046:1:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4049:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4042:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4042:9:5"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4037:1:5"
}
]
},
{
"expression": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4076:1:5"
},
{
"arguments": [
{
"arguments": [
{
"name": "addr",
"nodeType": "YulIdentifier",
"src": "4088:4:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4094:3:5",
"type": "",
"value": "0xf"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4084:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4084:14:5"
},
{
"name": "lookup",
"nodeType": "YulIdentifier",
"src": "4100:6:5"
}
],
"functionName": {
"name": "byte",
"nodeType": "YulIdentifier",
"src": "4079:4:5"
},
"nodeType": "YulFunctionCall",
"src": "4079:28:5"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "4068:7:5"
},
"nodeType": "YulFunctionCall",
"src": "4068:40:5"
},
"nodeType": "YulExpressionStatement",
"src": "4068:40:5"
},
{
"nodeType": "YulAssignment",
"src": "4125:23:5",
"value": {
"arguments": [
{
"name": "addr",
"nodeType": "YulIdentifier",
"src": "4137:4:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4143:4:5",
"type": "",
"value": "0x10"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "4133:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4133:15:5"
},
"variableNames": [
{
"name": "addr",
"nodeType": "YulIdentifier",
"src": "4125:4:5"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4165:14:5",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4174:1:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4177:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4170:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4170:9:5"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4165:1:5"
}
]
},
{
"expression": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4204:1:5"
},
{
"arguments": [
{
"arguments": [
{
"name": "addr",
"nodeType": "YulIdentifier",
"src": "4216:4:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4222:3:5",
"type": "",
"value": "0xf"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4212:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4212:14:5"
},
{
"name": "lookup",
"nodeType": "YulIdentifier",
"src": "4228:6:5"
}
],
"functionName": {
"name": "byte",
"nodeType": "YulIdentifier",
"src": "4207:4:5"
},
"nodeType": "YulFunctionCall",
"src": "4207:28:5"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "4196:7:5"
},
"nodeType": "YulFunctionCall",
"src": "4196:40:5"
},
"nodeType": "YulExpressionStatement",
"src": "4196:40:5"
},
{
"nodeType": "YulAssignment",
"src": "4253:23:5",
"value": {
"arguments": [
{
"name": "addr",
"nodeType": "YulIdentifier",
"src": "4265:4:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4271:4:5",
"type": "",
"value": "0x10"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "4261:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4261:15:5"
},
"variableNames": [
{
"name": "addr",
"nodeType": "YulIdentifier",
"src": "4253:4:5"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4009:1:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4012:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4006:2:5"
},
"nodeType": "YulFunctionCall",
"src": "4006:8:5"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4015:3:5",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "3990:15:5",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3992:11:5",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4001:2:5",
"type": "",
"value": "40"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "3996:1:5",
"type": ""
}
]
}
]
},
"src": "3986:304:5"
},
{
"nodeType": "YulAssignment",
"src": "4304:23:5",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4321:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4324:2:5",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "4311:9:5"
},
"nodeType": "YulFunctionCall",
"src": "4311:16:5"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "4304:3:5"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4088:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4125:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4137:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4216:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4253:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4265:4:5",
"valueSize": 1
},
{
"declaration": 1065,
"isOffset": false,
"isSlot": false,
"src": "4304:3:5",
"valueSize": 1
}
],
"id": 1071,
"nodeType": "InlineAssembly",
"src": "3869:468:5"
}
]
},
"documentation": {
"id": 1060,
"nodeType": "StructuredDocumentation",
"src": "3418:294:5",
"text": " @dev An optimised function to compute the sha3 of the lower-case\n hexadecimal representation of an Ethereum address.\n @param addr The address to hash\n @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n input address."
},
"id": 1073,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sha3HexAddress",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1063,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1062,
"mutability": "mutable",
"name": "addr",
"nodeType": "VariableDeclaration",
"scope": 1073,
"src": "3741:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1061,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3741:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3740:14:5"
},
"returnParameters": {
"id": 1066,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1065,
"mutability": "mutable",
"name": "ret",
"nodeType": "VariableDeclaration",
"scope": 1073,
"src": "3777:11:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1064,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3777:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "3776:13:5"
},
"scope": 1074,
"src": "3717:626:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
}
],
"scope": 1075,
"src": "153:4192:5"
}
],
"src": "0:4346:5"
},
"legacyAST": {
"attributes": {
"absolutePath": "project:/contracts/ReverseRegistrar.sol",
"exportedSymbols": {
"ENS": [
136
],
"NameResolver": [
843
],
"ReverseRegistrar": [
1074
]
}
},
"children": [
{
"attributes": {
"literals": [
"solidity",
"^",
"0.7",
".0"
]
},
"id": 834,
"name": "PragmaDirective",
"src": "0:23:5"
},
{
"attributes": {
"SourceUnit": 137,
"absolutePath": "project:/contracts/ENS.sol",
"file": "./ENS.sol",
"scope": 1075,
"symbolAliases": [
null
],
"unitAlias": ""
},
"id": 835,
"name": "ImportDirective",
"src": "25:19:5"
},
{
"attributes": {
"abstract": true,
"baseContracts": [
null
],
"contractDependencies": [
null
],
"contractKind": "contract",
"fullyImplemented": false,
"linearizedBaseContracts": [
843
],
"name": "NameResolver",
"scope": 1075
},
"children": [
{
"attributes": {
"functionSelector": "77372213",
"implemented": false,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "setName",
"scope": 843,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "node",
"scope": 842,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 836,
"name": "ElementaryTypeName",
"src": "100:7:5"
}
],
"id": 837,
"name": "VariableDeclaration",
"src": "100:12:5"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "name",
"scope": 842,
"stateVariable": false,
"storageLocation": "memory",
"type": "string",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 838,
"name": "ElementaryTypeName",
"src": "114:6:5"
}
],
"id": 839,
"name": "VariableDeclaration",
"src": "114:18:5"
}
],
"id": 840,
"name": "ParameterList",
"src": "99:34:5"
},
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 841,
"name": "ParameterList",
"src": "148:0:5"
}
],
"id": 842,
"name": "FunctionDefinition",
"src": "83:66:5"
}
],
"id": 843,
"name": "ContractDefinition",
"src": "46:105:5"
},
{
"attributes": {
"abstract": false,
"baseContracts": [
null
],
"contractDependencies": [
null
],
"contractKind": "contract",
"fullyImplemented": true,
"linearizedBaseContracts": [
1074
],
"name": "ReverseRegistrar",
"scope": 1075
},
"children": [
{
"attributes": {
"constant": true,
"functionSelector": "7cf8a2eb",
"mutability": "constant",
"name": "ADDR_REVERSE_NODE",
"scope": 1074,
"stateVariable": true,
"storageLocation": "default",
"type": "bytes32",
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 844,
"name": "ElementaryTypeName",
"src": "217:7:5"
},
{
"attributes": {
"hexvalue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"token": "number",
"type": "int_const 6595...(69 digits omitted)...3154",
"value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
},
"id": 845,
"name": "Literal",
"src": "261:66:5"
}
],
"id": 846,
"name": "VariableDeclaration",
"src": "217:110:5"
},
{
"attributes": {
"constant": false,
"functionSelector": "3f15457f",
"mutability": "mutable",
"name": "ens",
"scope": 1074,
"stateVariable": true,
"storageLocation": "default",
"type": "contract ENS",
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "ENS",
"referencedDeclaration": 136,
"type": "contract ENS"
},
"id": 847,
"name": "UserDefinedTypeName",
"src": "334:3:5"
}
],
"id": 848,
"name": "VariableDeclaration",
"src": "334:14:5"
},
{
"attributes": {
"constant": false,
"functionSelector": "828eab0e",
"mutability": "mutable",
"name": "defaultResolver",
"scope": 1074,
"stateVariable": true,
"storageLocation": "default",
"type": "contract NameResolver",
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "NameResolver",
"referencedDeclaration": 843,
"type": "contract NameResolver"
},
"id": 849,
"name": "UserDefinedTypeName",
"src": "354:12:5"
}
],
"id": 850,
"name": "VariableDeclaration",
"src": "354:35:5"
},
{
"attributes": {
"implemented": true,
"isConstructor": true,
"kind": "constructor",
"modifiers": [
null
],
"name": "",
"scope": 1074,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Constructor\n @param ensAddr The address of the ENS registry.\n @param resolverAddr The address of the default reverse resolver."
},
"id": 851,
"name": "StructuredDocumentation",
"src": "396:162:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "ensAddr",
"scope": 894,
"stateVariable": false,
"storageLocation": "default",
"type": "contract ENS",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "ENS",
"referencedDeclaration": 136,
"type": "contract ENS"
},
"id": 852,
"name": "UserDefinedTypeName",
"src": "575:3:5"
}
],
"id": 853,
"name": "VariableDeclaration",
"src": "575:11:5"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "resolverAddr",
"scope": 894,
"stateVariable": false,
"storageLocation": "default",
"type": "contract NameResolver",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "NameResolver",
"referencedDeclaration": 843,
"type": "contract NameResolver"
},
"id": 854,
"name": "UserDefinedTypeName",
"src": "588:12:5"
}
],
"id": 855,
"name": "VariableDeclaration",
"src": "588:25:5"
}
],
"id": 856,
"name": "ParameterList",
"src": "574:40:5"
},
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 857,
"name": "ParameterList",
"src": "622:0:5"
},
{
"children": [
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "contract ENS"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 858,
"name": "Identifier",
"src": "632:3:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 853,
"type": "contract ENS",
"value": "ensAddr"
},
"id": 859,
"name": "Identifier",
"src": "638:7:5"
}
],
"id": 860,
"name": "Assignment",
"src": "632:13:5"
}
],
"id": 861,
"name": "ExpressionStatement",
"src": "632:13:5"
},
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "contract NameResolver"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 850,
"type": "contract NameResolver",
"value": "defaultResolver"
},
"id": 862,
"name": "Identifier",
"src": "655:15:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 855,
"type": "contract NameResolver",
"value": "resolverAddr"
},
"id": 863,
"name": "Identifier",
"src": "673:12:5"
}
],
"id": 864,
"name": "Assignment",
"src": "655:30:5"
}
],
"id": 865,
"name": "ExpressionStatement",
"src": "655:30:5"
},
{
"attributes": {
"assignments": [
867
]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "oldRegistrar",
"scope": 893,
"stateVariable": false,
"storageLocation": "default",
"type": "contract ReverseRegistrar",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "ReverseRegistrar",
"referencedDeclaration": 1074,
"type": "contract ReverseRegistrar"
},
"id": 866,
"name": "UserDefinedTypeName",
"src": "762:16:5"
}
],
"id": 867,
"name": "VariableDeclaration",
"src": "762:29:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "contract ReverseRegistrar",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1074,
"type": "type(contract ReverseRegistrar)",
"value": "ReverseRegistrar"
},
"id": 868,
"name": "Identifier",
"src": "794:16:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "owner",
"referencedDeclaration": 105,
"type": "function (bytes32) view external returns (address)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 869,
"name": "Identifier",
"src": "811:3:5"
}
],
"id": 870,
"name": "MemberAccess",
"src": "811:9:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 846,
"type": "bytes32",
"value": "ADDR_REVERSE_NODE"
},
"id": 871,
"name": "Identifier",
"src": "821:17:5"
}
],
"id": 872,
"name": "FunctionCall",
"src": "811:28:5"
}
],
"id": 873,
"name": "FunctionCall",
"src": "794:46:5"
}
],
"id": 874,
"name": "VariableDeclarationStatement",
"src": "762:78:5"
},
{
"attributes": {},
"children": [
{
"attributes": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 875,
"name": "ElementaryTypeName",
"src": "854:7:5"
}
],
"id": 876,
"name": "ElementaryTypeNameExpression",
"src": "854:7:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 867,
"type": "contract ReverseRegistrar",
"value": "oldRegistrar"
},
"id": 877,
"name": "Identifier",
"src": "862:12:5"
}
],
"id": 878,
"name": "FunctionCall",
"src": "854:21:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 879,
"name": "ElementaryTypeName",
"src": "879:7:5"
}
],
"id": 880,
"name": "ElementaryTypeNameExpression",
"src": "879:7:5"
},
{
"attributes": {
"hexvalue": "307830",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"token": "number",
"type": "int_const 0",
"value": "0x0"
},
"id": 881,
"name": "Literal",
"src": "887:3:5"
}
],
"id": 882,
"name": "FunctionCall",
"src": "879:12:5"
}
],
"id": 883,
"name": "BinaryOperation",
"src": "854:37:5"
},
{
"children": [
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "claim",
"referencedDeclaration": 911,
"type": "function (address) external returns (bytes32)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 867,
"type": "contract ReverseRegistrar",
"value": "oldRegistrar"
},
"id": 884,
"name": "Identifier",
"src": "907:12:5"
}
],
"id": 886,
"name": "MemberAccess",
"src": "907:18:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"type": "address payable"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -15,
"type": "msg",
"value": "msg"
},
"id": 887,
"name": "Identifier",
"src": "926:3:5"
}
],
"id": 888,
"name": "MemberAccess",
"src": "926:10:5"
}
],
"id": 889,
"name": "FunctionCall",
"src": "907:30:5"
}
],
"id": 890,
"name": "ExpressionStatement",
"src": "907:30:5"
}
],
"id": 891,
"name": "Block",
"src": "893:55:5"
}
],
"id": 892,
"name": "IfStatement",
"src": "850:98:5"
}
],
"id": 893,
"name": "Block",
"src": "622:332:5"
}
],
"id": 894,
"name": "FunctionDefinition",
"src": "563:391:5"
},
{
"attributes": {
"functionSelector": "1e83409a",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "claim",
"scope": 1074,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Transfers ownership of the reverse ENS record associated with the\n calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @return The ENS node hash of the reverse record."
},
"id": 895,
"name": "StructuredDocumentation",
"src": "960:256:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "owner",
"scope": 911,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 896,
"name": "ElementaryTypeName",
"src": "1236:7:5"
}
],
"id": 897,
"name": "VariableDeclaration",
"src": "1236:13:5"
}
],
"id": 898,
"name": "ParameterList",
"src": "1235:15:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"scope": 911,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 899,
"name": "ElementaryTypeName",
"src": "1267:7:5"
}
],
"id": 900,
"name": "VariableDeclaration",
"src": "1267:7:5"
}
],
"id": 901,
"name": "ParameterList",
"src": "1266:9:5"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 901
},
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1009,
"type": "function (address,address) returns (bytes32)",
"value": "claimWithResolver"
},
"id": 902,
"name": "Identifier",
"src": "1293:17:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 897,
"type": "address",
"value": "owner"
},
"id": 903,
"name": "Identifier",
"src": "1311:5:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 904,
"name": "ElementaryTypeName",
"src": "1318:7:5"
}
],
"id": 905,
"name": "ElementaryTypeNameExpression",
"src": "1318:7:5"
},
{
"attributes": {
"hexvalue": "307830",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"token": "number",
"type": "int_const 0",
"value": "0x0"
},
"id": 906,
"name": "Literal",
"src": "1326:3:5"
}
],
"id": 907,
"name": "FunctionCall",
"src": "1318:12:5"
}
],
"id": 908,
"name": "FunctionCall",
"src": "1293:38:5"
}
],
"id": 909,
"name": "Return",
"src": "1286:45:5"
}
],
"id": 910,
"name": "Block",
"src": "1276:62:5"
}
],
"id": 911,
"name": "FunctionDefinition",
"src": "1221:117:5"
},
{
"attributes": {
"functionSelector": "0f5a5466",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "claimWithResolver",
"scope": 1074,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Transfers ownership of the reverse ENS record associated with the\n calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @param resolver The address of the resolver to set; 0 to leave unchanged.\n @return The ENS node hash of the reverse record."
},
"id": 912,
"name": "StructuredDocumentation",
"src": "1344:337:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "owner",
"scope": 1009,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 913,
"name": "ElementaryTypeName",
"src": "1713:7:5"
}
],
"id": 914,
"name": "VariableDeclaration",
"src": "1713:13:5"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "resolver",
"scope": 1009,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 915,
"name": "ElementaryTypeName",
"src": "1728:7:5"
}
],
"id": 916,
"name": "VariableDeclaration",
"src": "1728:16:5"
}
],
"id": 917,
"name": "ParameterList",
"src": "1712:33:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"scope": 1009,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 918,
"name": "ElementaryTypeName",
"src": "1762:7:5"
}
],
"id": 919,
"name": "VariableDeclaration",
"src": "1762:7:5"
}
],
"id": 920,
"name": "ParameterList",
"src": "1761:9:5"
},
{
"children": [
{
"attributes": {
"assignments": [
922
]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "label",
"scope": 1008,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 921,
"name": "ElementaryTypeName",
"src": "1781:7:5"
}
],
"id": 922,
"name": "VariableDeclaration",
"src": "1781:13:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1073,
"type": "function (address) pure returns (bytes32)",
"value": "sha3HexAddress"
},
"id": 923,
"name": "Identifier",
"src": "1797:14:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"type": "address payable"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -15,
"type": "msg",
"value": "msg"
},
"id": 924,
"name": "Identifier",
"src": "1812:3:5"
}
],
"id": 925,
"name": "MemberAccess",
"src": "1812:10:5"
}
],
"id": 926,
"name": "FunctionCall",
"src": "1797:26:5"
}
],
"id": 927,
"name": "VariableDeclarationStatement",
"src": "1781:42:5"
},
{
"attributes": {
"assignments": [
929
]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "node",
"scope": 1008,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 928,
"name": "ElementaryTypeName",
"src": "1833:7:5"
}
],
"id": 929,
"name": "VariableDeclaration",
"src": "1833:12:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": -8,
"type": "function (bytes memory) pure returns (bytes32)",
"value": "keccak256"
},
"id": 930,
"name": "Identifier",
"src": "1848:9:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"member_name": "encodePacked",
"type": "function () pure returns (bytes memory)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -1,
"type": "abi",
"value": "abi"
},
"id": 931,
"name": "Identifier",
"src": "1858:3:5"
}
],
"id": 932,
"name": "MemberAccess",
"src": "1858:16:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 846,
"type": "bytes32",
"value": "ADDR_REVERSE_NODE"
},
"id": 933,
"name": "Identifier",
"src": "1875:17:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 922,
"type": "bytes32",
"value": "label"
},
"id": 934,
"name": "Identifier",
"src": "1894:5:5"
}
],
"id": 935,
"name": "FunctionCall",
"src": "1858:42:5"
}
],
"id": 936,
"name": "FunctionCall",
"src": "1848:53:5"
}
],
"id": 937,
"name": "VariableDeclarationStatement",
"src": "1833:68:5"
},
{
"attributes": {
"assignments": [
939
]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "currentOwner",
"scope": 1008,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 938,
"name": "ElementaryTypeName",
"src": "1911:7:5"
}
],
"id": 939,
"name": "VariableDeclaration",
"src": "1911:20:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "owner",
"referencedDeclaration": 105,
"type": "function (bytes32) view external returns (address)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 940,
"name": "Identifier",
"src": "1934:3:5"
}
],
"id": 941,
"name": "MemberAccess",
"src": "1934:9:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 929,
"type": "bytes32",
"value": "node"
},
"id": 942,
"name": "Identifier",
"src": "1944:4:5"
}
],
"id": 943,
"name": "FunctionCall",
"src": "1934:15:5"
}
],
"id": 944,
"name": "VariableDeclarationStatement",
"src": "1911:38:5"
},
{
"attributes": {},
"children": [
{
"attributes": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "&&",
"type": "bool"
},
"children": [
{
"attributes": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 916,
"type": "address",
"value": "resolver"
},
"id": 945,
"name": "Identifier",
"src": "2007:8:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 946,
"name": "ElementaryTypeName",
"src": "2019:7:5"
}
],
"id": 947,
"name": "ElementaryTypeNameExpression",
"src": "2019:7:5"
},
{
"attributes": {
"hexvalue": "307830",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"token": "number",
"type": "int_const 0",
"value": "0x0"
},
"id": 948,
"name": "Literal",
"src": "2027:3:5"
}
],
"id": 949,
"name": "FunctionCall",
"src": "2019:12:5"
}
],
"id": 950,
"name": "BinaryOperation",
"src": "2007:24:5"
},
{
"attributes": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 916,
"type": "address",
"value": "resolver"
},
"id": 951,
"name": "Identifier",
"src": "2035:8:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "resolver",
"referencedDeclaration": 112,
"type": "function (bytes32) view external returns (address)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 952,
"name": "Identifier",
"src": "2047:3:5"
}
],
"id": 953,
"name": "MemberAccess",
"src": "2047:12:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 929,
"type": "bytes32",
"value": "node"
},
"id": 954,
"name": "Identifier",
"src": "2060:4:5"
}
],
"id": 955,
"name": "FunctionCall",
"src": "2047:18:5"
}
],
"id": 956,
"name": "BinaryOperation",
"src": "2035:30:5"
}
],
"id": 957,
"name": "BinaryOperation",
"src": "2007:58:5"
},
{
"children": [
{
"attributes": {},
"children": [
{
"attributes": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 939,
"type": "address",
"value": "currentOwner"
},
"id": 958,
"name": "Identifier",
"src": "2150:12:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 959,
"name": "ElementaryTypeName",
"src": "2166:7:5"
}
],
"id": 960,
"name": "ElementaryTypeNameExpression",
"src": "2166:7:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -28,
"type": "contract ReverseRegistrar",
"value": "this"
},
"id": 961,
"name": "Identifier",
"src": "2174:4:5"
}
],
"id": 962,
"name": "FunctionCall",
"src": "2166:13:5"
}
],
"id": 963,
"name": "BinaryOperation",
"src": "2150:29:5"
},
{
"children": [
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "setSubnodeOwner",
"referencedDeclaration": 70,
"type": "function (bytes32,bytes32,address) external returns (bytes32)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 964,
"name": "Identifier",
"src": "2199:3:5"
}
],
"id": 966,
"name": "MemberAccess",
"src": "2199:19:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 846,
"type": "bytes32",
"value": "ADDR_REVERSE_NODE"
},
"id": 967,
"name": "Identifier",
"src": "2219:17:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 922,
"type": "bytes32",
"value": "label"
},
"id": 968,
"name": "Identifier",
"src": "2238:5:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 969,
"name": "ElementaryTypeName",
"src": "2245:7:5"
}
],
"id": 970,
"name": "ElementaryTypeNameExpression",
"src": "2245:7:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -28,
"type": "contract ReverseRegistrar",
"value": "this"
},
"id": 971,
"name": "Identifier",
"src": "2253:4:5"
}
],
"id": 972,
"name": "FunctionCall",
"src": "2245:13:5"
}
],
"id": 973,
"name": "FunctionCall",
"src": "2199:60:5"
}
],
"id": 974,
"name": "ExpressionStatement",
"src": "2199:60:5"
},
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "address"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 939,
"type": "address",
"value": "currentOwner"
},
"id": 975,
"name": "Identifier",
"src": "2277:12:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 976,
"name": "ElementaryTypeName",
"src": "2292:7:5"
}
],
"id": 977,
"name": "ElementaryTypeNameExpression",
"src": "2292:7:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -28,
"type": "contract ReverseRegistrar",
"value": "this"
},
"id": 978,
"name": "Identifier",
"src": "2300:4:5"
}
],
"id": 979,
"name": "FunctionCall",
"src": "2292:13:5"
}
],
"id": 980,
"name": "Assignment",
"src": "2277:28:5"
}
],
"id": 981,
"name": "ExpressionStatement",
"src": "2277:28:5"
}
],
"id": 982,
"name": "Block",
"src": "2181:139:5"
}
],
"id": 983,
"name": "IfStatement",
"src": "2146:174:5"
},
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "setResolver",
"referencedDeclaration": 77,
"type": "function (bytes32,address) external"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 984,
"name": "Identifier",
"src": "2333:3:5"
}
],
"id": 986,
"name": "MemberAccess",
"src": "2333:15:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 929,
"type": "bytes32",
"value": "node"
},
"id": 987,
"name": "Identifier",
"src": "2349:4:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 916,
"type": "address",
"value": "resolver"
},
"id": 988,
"name": "Identifier",
"src": "2355:8:5"
}
],
"id": 989,
"name": "FunctionCall",
"src": "2333:31:5"
}
],
"id": 990,
"name": "ExpressionStatement",
"src": "2333:31:5"
}
],
"id": 991,
"name": "Block",
"src": "2067:308:5"
}
],
"id": 992,
"name": "IfStatement",
"src": "2003:372:5"
},
{
"attributes": {},
"children": [
{
"attributes": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 939,
"type": "address",
"value": "currentOwner"
},
"id": 993,
"name": "Identifier",
"src": "2429:12:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 914,
"type": "address",
"value": "owner"
},
"id": 994,
"name": "Identifier",
"src": "2445:5:5"
}
],
"id": 995,
"name": "BinaryOperation",
"src": "2429:21:5"
},
{
"children": [
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "setSubnodeOwner",
"referencedDeclaration": 70,
"type": "function (bytes32,bytes32,address) external returns (bytes32)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 848,
"type": "contract ENS",
"value": "ens"
},
"id": 996,
"name": "Identifier",
"src": "2466:3:5"
}
],
"id": 998,
"name": "MemberAccess",
"src": "2466:19:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 846,
"type": "bytes32",
"value": "ADDR_REVERSE_NODE"
},
"id": 999,
"name": "Identifier",
"src": "2486:17:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 922,
"type": "bytes32",
"value": "label"
},
"id": 1000,
"name": "Identifier",
"src": "2505:5:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 914,
"type": "address",
"value": "owner"
},
"id": 1001,
"name": "Identifier",
"src": "2512:5:5"
}
],
"id": 1002,
"name": "FunctionCall",
"src": "2466:52:5"
}
],
"id": 1003,
"name": "ExpressionStatement",
"src": "2466:52:5"
}
],
"id": 1004,
"name": "Block",
"src": "2452:77:5"
}
],
"id": 1005,
"name": "IfStatement",
"src": "2425:104:5"
},
{
"attributes": {
"functionReturnParameters": 920
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 929,
"type": "bytes32",
"value": "node"
},
"id": 1006,
"name": "Identifier",
"src": "2546:4:5"
}
],
"id": 1007,
"name": "Return",
"src": "2539:11:5"
}
],
"id": 1008,
"name": "Block",
"src": "1771:786:5"
}
],
"id": 1009,
"name": "FunctionDefinition",
"src": "1686:871:5"
},
{
"attributes": {
"functionSelector": "c47f0027",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "setName",
"scope": 1074,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Sets the `name()` record for the reverse ENS record associated with\n the calling account. First updates the resolver to the default reverse\n resolver if necessary.\n @param name The name to set for this address.\n @return The ENS node hash of the reverse record."
},
"id": 1010,
"name": "StructuredDocumentation",
"src": "2563:308:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "name",
"scope": 1040,
"stateVariable": false,
"storageLocation": "memory",
"type": "string",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 1011,
"name": "ElementaryTypeName",
"src": "2893:6:5"
}
],
"id": 1012,
"name": "VariableDeclaration",
"src": "2893:18:5"
}
],
"id": 1013,
"name": "ParameterList",
"src": "2892:20:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"scope": 1040,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1014,
"name": "ElementaryTypeName",
"src": "2929:7:5"
}
],
"id": 1015,
"name": "VariableDeclaration",
"src": "2929:7:5"
}
],
"id": 1016,
"name": "ParameterList",
"src": "2928:9:5"
},
{
"children": [
{
"attributes": {
"assignments": [
1018
]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "node",
"scope": 1039,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1017,
"name": "ElementaryTypeName",
"src": "2948:7:5"
}
],
"id": 1018,
"name": "VariableDeclaration",
"src": "2948:12:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1009,
"type": "function (address,address) returns (bytes32)",
"value": "claimWithResolver"
},
"id": 1019,
"name": "Identifier",
"src": "2963:17:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
"typeString": "contract ReverseRegistrar"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 1020,
"name": "ElementaryTypeName",
"src": "2981:7:5"
}
],
"id": 1021,
"name": "ElementaryTypeNameExpression",
"src": "2981:7:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -28,
"type": "contract ReverseRegistrar",
"value": "this"
},
"id": 1022,
"name": "Identifier",
"src": "2989:4:5"
}
],
"id": 1023,
"name": "FunctionCall",
"src": "2981:13:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "address",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_NameResolver_$843",
"typeString": "contract NameResolver"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address"
},
"id": 1024,
"name": "ElementaryTypeName",
"src": "2996:7:5"
}
],
"id": 1025,
"name": "ElementaryTypeNameExpression",
"src": "2996:7:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 850,
"type": "contract NameResolver",
"value": "defaultResolver"
},
"id": 1026,
"name": "Identifier",
"src": "3004:15:5"
}
],
"id": 1027,
"name": "FunctionCall",
"src": "2996:24:5"
}
],
"id": 1028,
"name": "FunctionCall",
"src": "2963:58:5"
}
],
"id": 1029,
"name": "VariableDeclarationStatement",
"src": "2948:73:5"
},
{
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "setName",
"referencedDeclaration": 842,
"type": "function (bytes32,string memory) external"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 850,
"type": "contract NameResolver",
"value": "defaultResolver"
},
"id": 1030,
"name": "Identifier",
"src": "3031:15:5"
}
],
"id": 1032,
"name": "MemberAccess",
"src": "3031:23:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1018,
"type": "bytes32",
"value": "node"
},
"id": 1033,
"name": "Identifier",
"src": "3055:4:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1012,
"type": "string memory",
"value": "name"
},
"id": 1034,
"name": "Identifier",
"src": "3061:4:5"
}
],
"id": 1035,
"name": "FunctionCall",
"src": "3031:35:5"
}
],
"id": 1036,
"name": "ExpressionStatement",
"src": "3031:35:5"
},
{
"attributes": {
"functionReturnParameters": 1016
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1018,
"type": "bytes32",
"value": "node"
},
"id": 1037,
"name": "Identifier",
"src": "3083:4:5"
}
],
"id": 1038,
"name": "Return",
"src": "3076:11:5"
}
],
"id": 1039,
"name": "Block",
"src": "2938:156:5"
}
],
"id": 1040,
"name": "FunctionDefinition",
"src": "2876:218:5"
},
{
"attributes": {
"functionSelector": "bffbe61c",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "node",
"scope": 1074,
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Returns the node hash for a given account's reverse records.\n @param addr The address to hash\n @return The ENS node hash."
},
"id": 1041,
"name": "StructuredDocumentation",
"src": "3100:157:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "addr",
"scope": 1059,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1042,
"name": "ElementaryTypeName",
"src": "3276:7:5"
}
],
"id": 1043,
"name": "VariableDeclaration",
"src": "3276:12:5"
}
],
"id": 1044,
"name": "ParameterList",
"src": "3275:14:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"scope": 1059,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1045,
"name": "ElementaryTypeName",
"src": "3311:7:5"
}
],
"id": 1046,
"name": "VariableDeclaration",
"src": "3311:7:5"
}
],
"id": 1047,
"name": "ParameterList",
"src": "3310:9:5"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1047
},
"children": [
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": -8,
"type": "function (bytes memory) pure returns (bytes32)",
"value": "keccak256"
},
"id": 1048,
"name": "Identifier",
"src": "3337:9:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"member_name": "encodePacked",
"type": "function () pure returns (bytes memory)"
},
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": -1,
"type": "abi",
"value": "abi"
},
"id": 1049,
"name": "Identifier",
"src": "3347:3:5"
}
],
"id": 1050,
"name": "MemberAccess",
"src": "3347:16:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 846,
"type": "bytes32",
"value": "ADDR_REVERSE_NODE"
},
"id": 1051,
"name": "Identifier",
"src": "3364:17:5"
},
{
"attributes": {
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "bytes32",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1073,
"type": "function (address) pure returns (bytes32)",
"value": "sha3HexAddress"
},
"id": 1052,
"name": "Identifier",
"src": "3383:14:5"
},
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1043,
"type": "address",
"value": "addr"
},
"id": 1053,
"name": "Identifier",
"src": "3398:4:5"
}
],
"id": 1054,
"name": "FunctionCall",
"src": "3383:20:5"
}
],
"id": 1055,
"name": "FunctionCall",
"src": "3347:57:5"
}
],
"id": 1056,
"name": "FunctionCall",
"src": "3337:68:5"
}
],
"id": 1057,
"name": "Return",
"src": "3330:75:5"
}
],
"id": 1058,
"name": "Block",
"src": "3320:92:5"
}
],
"id": 1059,
"name": "FunctionDefinition",
"src": "3262:150:5"
},
{
"attributes": {
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "sha3HexAddress",
"scope": 1074,
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
"children": [
{
"attributes": {
"text": " @dev An optimised function to compute the sha3 of the lower-case\n hexadecimal representation of an Ethereum address.\n @param addr The address to hash\n @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n input address."
},
"id": 1060,
"name": "StructuredDocumentation",
"src": "3418:294:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "addr",
"scope": 1073,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1061,
"name": "ElementaryTypeName",
"src": "3741:7:5"
}
],
"id": 1062,
"name": "VariableDeclaration",
"src": "3741:12:5"
}
],
"id": 1063,
"name": "ParameterList",
"src": "3740:14:5"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "ret",
"scope": 1073,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1064,
"name": "ElementaryTypeName",
"src": "3777:7:5"
}
],
"id": 1065,
"name": "VariableDeclaration",
"src": "3777:11:5"
}
],
"id": 1066,
"name": "ParameterList",
"src": "3776:13:5"
},
{
"children": [
{
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1062,
"type": "address",
"value": "addr"
},
"id": 1067,
"name": "Identifier",
"src": "3800:4:5"
}
],
"id": 1068,
"name": "ExpressionStatement",
"src": "3800:4:5"
},
{
"children": [
{
"attributes": {
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1065,
"type": "bytes32",
"value": "ret"
},
"id": 1069,
"name": "Identifier",
"src": "3814:3:5"
}
],
"id": 1070,
"name": "ExpressionStatement",
"src": "3814:3:5"
},
{
"attributes": {
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4088:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4125:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4137:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4216:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4253:4:5",
"valueSize": 1
},
{
"declaration": 1062,
"isOffset": false,
"isSlot": false,
"src": "4265:4:5",
"valueSize": 1
},
{
"declaration": 1065,
"isOffset": false,
"isSlot": false,
"src": "4304:3:5",
"valueSize": 1
}
],
"operations": "{\n let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000\n for { let i := 40 } gt(i, 0) { }\n {\n i := sub(i, 1)\n mstore8(i, byte(and(addr, 0xf), lookup))\n addr := div(addr, 0x10)\n i := sub(i, 1)\n mstore8(i, byte(and(addr, 0xf), lookup))\n addr := div(addr, 0x10)\n }\n ret := keccak256(0, 40)\n}"
},
"children": [],
"id": 1071,
"name": "InlineAssembly",
"src": "3869:468:5"
}
],
"id": 1072,
"name": "Block",
"src": "3790:553:5"
}
],
"id": 1073,
"name": "FunctionDefinition",
"src": "3717:626:5"
}
],
"id": 1074,
"name": "ContractDefinition",
"src": "153:4192:5"
}
],
"id": 1075,
"name": "SourceUnit",
"src": "0:4346:5"
},
"compiler": {
"name": "solc",
"version": "0.7.4+commit.3f05b770.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.4.11",
"updatedAt": "2022-12-07T05:57:04.351Z",
"devdoc": {
"kind": "dev",
"methods": {
"claim(address)": {
"details": "Transfers ownership of the reverse ENS record associated with the calling account.",
"params": {
"owner": "The address to set as the owner of the reverse record in ENS."
},
"returns": {
"_0": "The ENS node hash of the reverse record."
}
},
"claimWithResolver(address,address)": {
"details": "Transfers ownership of the reverse ENS record associated with the calling account.",
"params": {
"owner": "The address to set as the owner of the reverse record in ENS.",
"resolver": "The address of the resolver to set; 0 to leave unchanged."
},
"returns": {
"_0": "The ENS node hash of the reverse record."
}
},
"constructor": {
"details": "Constructor",
"params": {
"ensAddr": "The address of the ENS registry.",
"resolverAddr": "The address of the default reverse resolver."
}
},
"node(address)": {
"details": "Returns the node hash for a given account's reverse records.",
"params": {
"addr": "The address to hash"
},
"returns": {
"_0": "The ENS node hash."
}
},
"setName(string)": {
"details": "Sets the `name()` record for the reverse ENS record associated with the calling account. First updates the resolver to the default reverse resolver if necessary.",
"params": {
"name": "The name to set for this address."
},
"returns": {
"_0": "The ENS node hash of the reverse record."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}