diff --git a/waffle-ens/build-artifacts.js b/waffle-ens/build-artifacts.js deleted file mode 100644 index 9cb04dbff..000000000 --- a/waffle-ens/build-artifacts.js +++ /dev/null @@ -1,27 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable @typescript-eslint/no-var-requires */ - -const {promises: fs} = require('fs'); -const path = require('path'); -const ens = require('@ensdomains/ens'); -const resolver = require('@ensdomains/resolver'); - -const outputFolder = './dist/contracts/'; - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -(async () => { - try { - await fs.stat(outputFolder); - } catch (error) { - await fs.mkdir(outputFolder, {recursive: true}); - } - - await writeContracts(ens); - await writeContracts(resolver); -})(); - -async function writeContracts(package) { - for (const key in package) { - await fs.writeFile(path.resolve(outputFolder, `${key}.json`), JSON.stringify(package[key])); - } -} diff --git a/waffle-ens/build-artifacts.mjs b/waffle-ens/build-artifacts.mjs new file mode 100644 index 000000000..f2737cc02 --- /dev/null +++ b/waffle-ens/build-artifacts.mjs @@ -0,0 +1,23 @@ +import {mkdir, stat, writeFile} from 'node:fs/promises'; +import {resolve} from 'node:path'; +import ens from '@ensdomains/ens'; +import resolver from '@ensdomains/resolver'; + +const outputFolder = './src/abis/'; +const names = ['ENSRegistry', 'FIFSRegistrar', 'ReverseRegistrar', 'PublicResolver'] + +try { + await stat(outputFolder); +} catch (error) { + await mkdir(outputFolder, {recursive: true}); +} + +await writeContracts(ens); +await writeContracts(resolver); + +async function writeContracts(contracts) { + for (const key in contracts) { + if(!names.includes(key)) continue; + await writeFile(resolve(outputFolder, `${key}.json`), JSON.stringify(contracts[key])); + } +} diff --git a/waffle-ens/package.json b/waffle-ens/package.json index dbb4d5330..dcde9d17b 100644 --- a/waffle-ens/package.json +++ b/waffle-ens/package.json @@ -37,7 +37,7 @@ "build": "rimraf ./dist && pnpm build:artifacts && pnpm build:esm && pnpm build:cjs", "build:esm": "tsc -p tsconfig.build.json --outDir dist/esm --module ES6", "build:cjs": "tsc -p tsconfig.build.json --outDir dist/cjs", - "build:artifacts": "node build-artifacts.js" + "build:artifacts": "node build-artifacts.mjs" }, "engines": { "node": ">=10.0" diff --git a/waffle-ens/src/ENS.ts b/waffle-ens/src/ENS.ts index a0f85b550..1fc5b2701 100644 --- a/waffle-ens/src/ENS.ts +++ b/waffle-ens/src/ENS.ts @@ -1,22 +1,8 @@ -import * as contracts from './contracts.js'; +import {ReverseRegistrar, FIFSRegistrar, PublicResolver, ENSRegistry} from './contracts'; import {constants, Contract, Signer, utils} from 'ethers'; import {COIN_TYPE_ETH, deployContract, getDomainInfo} from './utils'; import {ExpectedTopLevelDomain, MissingDomain} from './errors'; -const getContracts = () => { - const {ENSRegistry, FIFSRegistrar, ReverseRegistrar, PublicResolver} = contracts; - const result = {ENSRegistry, FIFSRegistrar, ReverseRegistrar, PublicResolver}; - for (const key of Object.keys(result)) { - if (!contracts[key]) { - throw new Error( - `Contract ${key} is missing from ENS dependencies.` + - 'Have you installed peer dependencies "@ensdomains/ens" and "@ensdomains/resolver"?' - ); - } - } - return result; -}; - const {namehash} = utils; const {HashZero} = constants; @@ -25,7 +11,7 @@ interface DomainRegistrationOptions { } export async function createResolver(signer: Signer, ens: Contract) { - const resolver = await deployContract(signer, getContracts().PublicResolver, [ens.address]); + const resolver = await deployContract(signer, PublicResolver, [ens.address]); const resolverNode = namehash('resolver'); const resolverLabel = utils.id('resolver'); await ens.setSubnodeOwner(HashZero, resolverLabel, await signer.getAddress()); @@ -37,7 +23,7 @@ export async function createResolver(signer: Signer, ens: Contract) { export async function createReverseRegistrar(signer: Signer, ens: Contract, resolver: Contract) { const reverseRegistrar = await deployContract( signer, - getContracts().ReverseRegistrar, + ReverseRegistrar, [ens.address, resolver.address] ); await ens.setSubnodeOwner(HashZero, utils.id('reverse'), await signer.getAddress()); @@ -46,7 +32,7 @@ export async function createReverseRegistrar(signer: Signer, ens: Contract, reso } export async function deployENS(signer: Signer) { - const ens = await deployContract(signer, getContracts().ENSRegistry, []); + const ens = await deployContract(signer, ENSRegistry, []); const resolver = await createResolver(signer, ens); const reverseRegistrar = await createReverseRegistrar(signer, ens, resolver); return new ENS(signer, ens, resolver, reverseRegistrar); @@ -70,7 +56,7 @@ export class ENS { const node = namehash(domain); this.registrars = { ...this.registrars, - [domain]: await deployContract(this.signer, getContracts().FIFSRegistrar, [this.ens.address, node]) + [domain]: await deployContract(this.signer, FIFSRegistrar, [this.ens.address, node]) }; await this.ens.setSubnodeOwner(HashZero, utils.id(domain), this.registrars[domain].address); } @@ -81,7 +67,7 @@ export class ENS { await this.ens.setResolver(node, this.resolver.address); const registrar: Contract = await deployContract( this.signer, - getContracts().FIFSRegistrar, + FIFSRegistrar, [this.ens.address, node] ); await this.ens.setOwner(node, registrar.address); diff --git a/waffle-ens/src/abis/ENSRegistry.json b/waffle-ens/src/abis/ENSRegistry.json new file mode 100644 index 000000000..df99460cc --- /dev/null +++ b/waffle-ens/src/abis/ENSRegistry.json @@ -0,0 +1 @@ +{"contractName":"ENSRegistry","abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"resolver","type":"address"}],"name":"NewResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"NewTTL","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setRecord","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setSubnodeRecord","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setTTL","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"ttl","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"recordExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"recordExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"details\":\"Constructs a new ENS registrar.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Query if an address is an authorized operator for another address.\",\"params\":{\"operator\":\"The address that acts on behalf of the owner.\",\"owner\":\"The address that owns the records.\"},\"return\":\"True if `operator` is an approved operator for `owner`, false otherwise.\"},\"owner(bytes32)\":{\"details\":\"Returns the address that owns the specified node.\",\"params\":{\"node\":\"The specified node.\"},\"return\":\"address of the owner.\"},\"recordExists(bytes32)\":{\"details\":\"Returns whether a record has been imported to the registry.\",\"params\":{\"node\":\"The specified node.\"},\"return\":\"Bool if record exists\"},\"resolver(bytes32)\":{\"details\":\"Returns the address of the resolver for the specified node.\",\"params\":{\"node\":\"The specified node.\"},\"return\":\"address of the resolver.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval.\",\"operator\":\"Address to add to the set of authorized operators.\"}},\"setOwner(bytes32,address)\":{\"details\":\"Transfers ownership of a node to a new address. May only be called by the current owner of the node.\",\"params\":{\"node\":\"The node to transfer ownership of.\",\"owner\":\"The address of the new owner.\"}},\"setRecord(bytes32,address,address,uint64)\":{\"details\":\"Sets the record for a node.\",\"params\":{\"node\":\"The node to update.\",\"owner\":\"The address of the new owner.\",\"resolver\":\"The address of the resolver.\",\"ttl\":\"The TTL in seconds.\"}},\"setResolver(bytes32,address)\":{\"details\":\"Sets the resolver address for the specified node.\",\"params\":{\"node\":\"The node to update.\",\"resolver\":\"The address of the resolver.\"}},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"details\":\"Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\",\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\"}},\"setSubnodeRecord(bytes32,bytes32,address,address,uint64)\":{\"details\":\"Sets the record for a subnode.\",\"params\":{\"label\":\"The hash of the label specifying the subnode.\",\"node\":\"The parent node.\",\"owner\":\"The address of the new owner.\",\"resolver\":\"The address of the resolver.\",\"ttl\":\"The TTL in seconds.\"}},\"setTTL(bytes32,uint64)\":{\"details\":\"Sets the TTL for the specified node.\",\"params\":{\"node\":\"The node to update.\",\"ttl\":\"The TTL in seconds.\"}},\"ttl(bytes32)\":{\"details\":\"Returns the TTL of a node, and any records associated with it.\",\"params\":{\"node\":\"The specified node.\"},\"return\":\"ttl of the node.\"}}},\"userdoc\":{\"methods\":{},\"notice\":\"The ENS registry contract.\"}},\"settings\":{\"compilationTarget\":{\"/Users/makoto/work/ens/ens/contracts/ENSRegistry.sol\":\"ENSRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/makoto/work/ens/ens/contracts/ENS.sol\":{\"keccak256\":\"0x10b88673d8c180cd62523be4fec7607c65594eb4f0c561fa0fbc0784422b4871\",\"urls\":[\"bzz-raw://b3de1882a4a1a1b13c27ee6dc04cc58c34ac392c80cad507de2cdfa8c02712fe\",\"dweb:/ipfs/QmeKcaBF8QdJjXiqFrPJkAtK3et5kUL8XJrnHjwhAThRMT\"]},\"/Users/makoto/work/ens/ens/contracts/ENSRegistry.sol\":{\"keccak256\":\"0xa40b635d209272928968c804b0a8ee390d599e84100b491c9ad38e86b841fed8\",\"urls\":[\"bzz-raw://8bb61b4f5773f6ddd5e4abde74f08127b86a6bc07466cbfba119760bcfb9aa59\",\"dweb:/ipfs/QmRckNAmD2gqVSocvBbLPNDhMrFgHdRaErR7MnY7TLr7Yx\"]}},\"version\":1}","bytecode":"0x608060405234801561001057600080fd5b50336000808060001b815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061118b806100776000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80635b0fc9c3116100715780635b0fc9c3146102e75780635ef2c7f014610335578063a22cb465146103c1578063cf40882314610411578063e985e9c514610493578063f79fe5381461050f576100b4565b80630178b8bf146100b957806302571be31461012757806306ab59231461019557806314ab90381461020157806316a25cbd146102435780631896f70a14610299575b600080fd5b6100e5600480360360208110156100cf57600080fd5b8101908080359060200190929190505050610555565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101536004803603602081101561013d57600080fd5b8101908080359060200190929190505050610594565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101eb600480360360608110156101ab57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610617565b6040518082815260200191505060405180910390f35b6102416004803603604081101561021757600080fd5b8101908080359060200190929190803567ffffffffffffffff1690602001909291905050506107cc565b005b61026f6004803603602081101561025957600080fd5b810190808035906020019092919050505061095e565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6102e5600480360360408110156102af57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610991565b005b610333600480360360408110156102fd57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b53565b005b6103bf600480360360a081101561034b57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610ccb565b005b61040f600480360360408110156103d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ced565b005b6104916004803603608081101561042757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610dee565b005b6104f5600480360360408110156104a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e09565b604051808215151515815260200191505060405180910390f35b61053b6004803603602081101561052557600080fd5b8101908080359060200190929190505050610e9d565b604051808215151515815260200191505060405180910390f35b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561060d576000915050610612565b809150505b919050565b600083600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107145750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61071d57600080fd5b60008686604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905061075a8186610f0b565b85877fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8287604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a38093505050509392505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806108c75750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6108d057600080fd5b837f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6884604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a28260008086815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a8c5750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a9557600080fd5b837f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a084604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28260008086815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610c4e5750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610c5757600080fd5b610c618484610f0b565b837fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d26684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b6000610cd8868686610617565b9050610ce5818484610f63565b505050505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610df88484610b53565b610e03848383610f63565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8060008084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611084578160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25b60008084815260200190815260200160002060010160149054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1614611151578060008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6882604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a25b50505056fea265627a7a723158207b5a893502e908f44aa238df4c84f15a53b16ec0f0e4ca667c972fe8f918e5d364736f6c63430005100032","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80635b0fc9c3116100715780635b0fc9c3146102e75780635ef2c7f014610335578063a22cb465146103c1578063cf40882314610411578063e985e9c514610493578063f79fe5381461050f576100b4565b80630178b8bf146100b957806302571be31461012757806306ab59231461019557806314ab90381461020157806316a25cbd146102435780631896f70a14610299575b600080fd5b6100e5600480360360208110156100cf57600080fd5b8101908080359060200190929190505050610555565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101536004803603602081101561013d57600080fd5b8101908080359060200190929190505050610594565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101eb600480360360608110156101ab57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610617565b6040518082815260200191505060405180910390f35b6102416004803603604081101561021757600080fd5b8101908080359060200190929190803567ffffffffffffffff1690602001909291905050506107cc565b005b61026f6004803603602081101561025957600080fd5b810190808035906020019092919050505061095e565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6102e5600480360360408110156102af57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610991565b005b610333600480360360408110156102fd57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b53565b005b6103bf600480360360a081101561034b57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610ccb565b005b61040f600480360360408110156103d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ced565b005b6104916004803603608081101561042757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610dee565b005b6104f5600480360360408110156104a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e09565b604051808215151515815260200191505060405180910390f35b61053b6004803603602081101561052557600080fd5b8101908080359060200190929190505050610e9d565b604051808215151515815260200191505060405180910390f35b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561060d576000915050610612565b809150505b919050565b600083600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107145750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61071d57600080fd5b60008686604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905061075a8186610f0b565b85877fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8287604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a38093505050509392505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806108c75750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6108d057600080fd5b837f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6884604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a28260008086815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a8c5750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a9557600080fd5b837f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a084604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28260008086815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610c4e5750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610c5757600080fd5b610c618484610f0b565b837fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d26684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b6000610cd8868686610617565b9050610ce5818484610f63565b505050505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610df88484610b53565b610e03848383610f63565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8060008084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611084578160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25b60008084815260200190815260200160002060010160149054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1614611151578060008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6882604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a25b50505056fea265627a7a723158207b5a893502e908f44aa238df4c84f15a53b16ec0f0e4ca667c972fe8f918e5d364736f6c63430005100032","sourceMap":"84:5835:3:-;;;621:69;8:9:-1;5:2;;;30:1;27;20:12;5:2;621:69:3;673:10;652:7;:12;660:3;652:12;;;;;;;;;;;;;:18;;;:31;;;;;;;;;;;;;;;;;;84:5835;;;;;;","deployedSourceMap":"84:5835:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;84:5835:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4325:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4325:108:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3940:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3940:212:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2340:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2340:287:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3119:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3119:138:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4601:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4601:97:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2802:169;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2802:169:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1882:146;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1882:146:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1412:231;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1412:231:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3591:189;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3591:189:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;931:174;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;931:174:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5303:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5303:138:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4868:122;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4868:122:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4325:108;4378:7;4404;:13;4412:4;4404:13;;;;;;;;;;;:22;;;;;;;;;;;;4397:29;;4325:108;;;:::o;3940:212::-;3990:7;4009:12;4024:7;:13;4032:4;4024:13;;;;;;;;;;;:19;;;;;;;;;;;;4009:34;;4073:4;4057:21;;:4;:21;;;4053:71;;;4109:3;4094:19;;;;;4053:71;4141:4;4134:11;;;3940:212;;;;:::o;2340:287::-;2441:7;2427:4;432:13;448:7;:13;456:4;448:13;;;;;;;;;;;:19;;;;;;;;;;;;432:35;;494:10;485:19;;:5;:19;;;:51;;;;508:9;:16;518:5;508:16;;;;;;;;;;;;;;;:28;525:10;508:28;;;;;;;;;;;;;;;;;;;;;;;;;485:51;477:60;;;;;;2460:15;2505:4;2511:5;2488:29;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2488:29:3;;;2478:40;;;;;;2460:58;;2528:25;2538:7;2547:5;2528:9;:25::i;:::-;2583:5;2577:4;2568:28;2590:5;2568:28;;;;;;;;;;;;;;;;;;;;;;2613:7;2606:14;;;2340:287;;;;;;;:::o;3119:138::-;3179:4;432:13;448:7;:13;456:4;448:13;;;;;;;;;;;:19;;;;;;;;;;;;432:35;;494:10;485:19;;:5;:19;;;:51;;;;508:9;:16;518:5;508:16;;;;;;;;;;;;;;;:28;525:10;508:28;;;;;;;;;;;;;;;;;;;;;;;;;485:51;477:60;;;;;;3207:4;3200:17;3213:3;3200:17;;;;;;;;;;;;;;;;;;;;;;3247:3;3227:7;:13;3235:4;3227:13;;;;;;;;;;;:17;;;:23;;;;;;;;;;;;;;;;;;3119:138;;;;:::o;4601:97::-;4649:6;4674:7;:13;4682:4;4674:13;;;;;;;;;;;:17;;;;;;;;;;;;4667:24;;4601:97;;;:::o;2802:169::-;2873:4;432:13;448:7;:13;456:4;448:13;;;;;;;;;;;:19;;;;;;;;;;;;432:35;;494:10;485:19;;:5;:19;;;:51;;;;508:9;:16;518:5;508:16;;;;;;;;;;;;;;;:28;525:10;508:28;;;;;;;;;;;;;;;;;;;;;;;;;485:51;477:60;;;;;;2906:4;2894:27;2912:8;2894:27;;;;;;;;;;;;;;;;;;;;;;2956:8;2931:7;:13;2939:4;2931:13;;;;;;;;;;;:22;;;:33;;;;;;;;;;;;;;;;;;2802:169;;;;:::o;1882:146::-;1947:4;432:13;448:7;:13;456:4;448:13;;;;;;;;;;;:19;;;;;;;;;;;;432:35;;494:10;485:19;;:5;:19;;;:51;;;;508:9;:16;518:5;508:16;;;;;;;;;;;;;;;:28;525:10;508:28;;;;;;;;;;;;;;;;;;;;;;;;;485:51;477:60;;;;;;1963:22;1973:4;1979:5;1963:9;:22::i;:::-;2009:4;2000:21;2015:5;2000:21;;;;;;;;;;;;;;;;;;;;;;1882:146;;;;:::o;1412:231::-;1531:15;1549:35;1565:4;1571:5;1578;1549:15;:35::i;:::-;1531:53;;1594:42;1613:7;1622:8;1632:3;1594:18;:42::i;:::-;1412:231;;;;;;:::o;3591:189::-;3704:8;3670:9;:21;3680:10;3670:21;;;;;;;;;;;;;;;:31;3692:8;3670:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3754:8;3727:46;;3742:10;3727:46;;;3764:8;3727:46;;;;;;;;;;;;;;;;;;;;;;3591:189;;:::o;931:174::-;1028:21;1037:4;1043:5;1028:8;:21::i;:::-;1059:39;1078:4;1084:8;1094:3;1059:18;:39::i;:::-;931:174;;;;:::o;5303:138::-;5385:4;5408:9;:16;5418:5;5408:16;;;;;;;;;;;;;;;:26;5425:8;5408:26;;;;;;;;;;;;;;;;;;;;;;;;;5401:33;;5303:138;;;;:::o;4868:122::-;4925:4;4979:3;4948:35;;:7;:13;4956:4;4948:13;;;;;;;;;;;:19;;;;;;;;;;;;:35;;;;4941:42;;4868:122;;;:::o;5447:101::-;5536:5;5514:7;:13;5522:4;5514:13;;;;;;;;;;;:19;;;:27;;;;;;;;;;;;;;;;;;5447:101;;:::o;5554:363::-;5660:7;:13;5668:4;5660:13;;;;;;;;;;;:22;;;;;;;;;;;;5648:34;;:8;:34;;;5645:143;;5723:8;5698:7;:13;5706:4;5698:13;;;;;;;;;;;:22;;;:33;;;;;;;;;;;;;;;;;;5762:4;5750:27;5768:8;5750:27;;;;;;;;;;;;;;;;;;;;;;5645:143;5808:7;:13;5816:4;5808:13;;;;;;;;;;;:17;;;;;;;;;;;;5801:24;;:3;:24;;;5798:113;;5861:3;5841:7;:13;5849:4;5841:13;;;;;;;;;;;:17;;;:23;;;;;;;;;;;;;;;;;;5890:4;5883:17;5896:3;5883:17;;;;;;;;;;;;;;;;;;;;;;5798:113;5554:363;;;:::o","source":"pragma solidity ^0.5.0;\n\nimport \"./ENS.sol\";\n\n/**\n * The ENS registry contract.\n */\ncontract ENSRegistry is ENS {\n\n struct Record {\n address owner;\n address resolver;\n uint64 ttl;\n }\n\n mapping (bytes32 => Record) records;\n mapping (address => mapping(address => bool)) operators;\n\n // Permits modifications only by the owner of the specified node.\n modifier authorised(bytes32 node) {\n address owner = records[node].owner;\n require(owner == msg.sender || operators[owner][msg.sender]);\n _;\n }\n\n /**\n * @dev Constructs a new ENS registrar.\n */\n constructor() public {\n records[0x0].owner = msg.sender;\n }\n\n /**\n * @dev Sets the record for a node.\n * @param node The node to update.\n * @param owner The address of the new owner.\n * @param resolver The address of the resolver.\n * @param ttl The TTL in seconds.\n */\n function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) external {\n setOwner(node, owner);\n _setResolverAndTTL(node, resolver, ttl);\n }\n\n /**\n * @dev Sets the record for a subnode.\n * @param node The parent node.\n * @param label The hash of the label specifying the subnode.\n * @param owner The address of the new owner.\n * @param resolver The address of the resolver.\n * @param ttl The TTL in seconds.\n */\n function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external {\n bytes32 subnode = setSubnodeOwner(node, label, owner);\n _setResolverAndTTL(subnode, resolver, ttl);\n }\n\n /**\n * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\n * @param node The node to transfer ownership of.\n * @param owner The address of the new owner.\n */\n function setOwner(bytes32 node, address owner) public authorised(node) {\n _setOwner(node, owner);\n emit Transfer(node, owner);\n }\n\n /**\n * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\n * @param node The parent node.\n * @param label The hash of the label specifying the subnode.\n * @param owner The address of the new owner.\n */\n function setSubnodeOwner(bytes32 node, bytes32 label, address owner) public authorised(node) returns(bytes32) {\n bytes32 subnode = keccak256(abi.encodePacked(node, label));\n _setOwner(subnode, owner);\n emit NewOwner(node, label, owner);\n return subnode;\n }\n\n /**\n * @dev Sets the resolver address for the specified node.\n * @param node The node to update.\n * @param resolver The address of the resolver.\n */\n function setResolver(bytes32 node, address resolver) public authorised(node) {\n emit NewResolver(node, resolver);\n records[node].resolver = resolver;\n }\n\n /**\n * @dev Sets the TTL for the specified node.\n * @param node The node to update.\n * @param ttl The TTL in seconds.\n */\n function setTTL(bytes32 node, uint64 ttl) public authorised(node) {\n emit NewTTL(node, ttl);\n records[node].ttl = ttl;\n }\n\n /**\n * @dev Enable or disable approval for a third party (\"operator\") to manage\n * all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\n * @param operator Address to add to the set of authorized operators.\n * @param approved True if the operator is approved, false to revoke approval.\n */\n function setApprovalForAll(address operator, bool approved) external {\n operators[msg.sender][operator] = approved;\n emit ApprovalForAll(msg.sender, operator, approved);\n }\n\n /**\n * @dev Returns the address that owns the specified node.\n * @param node The specified node.\n * @return address of the owner.\n */\n function owner(bytes32 node) public view returns (address) {\n address addr = records[node].owner;\n if (addr == address(this)) {\n return address(0x0);\n }\n\n return addr;\n }\n\n /**\n * @dev Returns the address of the resolver for the specified node.\n * @param node The specified node.\n * @return address of the resolver.\n */\n function resolver(bytes32 node) public view returns (address) {\n return records[node].resolver;\n }\n\n /**\n * @dev Returns the TTL of a node, and any records associated with it.\n * @param node The specified node.\n * @return ttl of the node.\n */\n function ttl(bytes32 node) public view returns (uint64) {\n return records[node].ttl;\n }\n\n /**\n * @dev Returns whether a record has been imported to the registry.\n * @param node The specified node.\n * @return Bool if record exists\n */\n function recordExists(bytes32 node) public view returns (bool) {\n return records[node].owner != address(0x0);\n }\n\n /**\n * @dev Query if an address is an authorized operator for another address.\n * @param owner The address that owns the records.\n * @param operator The address that acts on behalf of the owner.\n * @return True if `operator` is an approved operator for `owner`, false otherwise.\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool) {\n return operators[owner][operator];\n }\n\n function _setOwner(bytes32 node, address owner) internal {\n records[node].owner = owner;\n }\n\n function _setResolverAndTTL(bytes32 node, address resolver, uint64 ttl) internal {\n if(resolver != records[node].resolver) {\n records[node].resolver = resolver;\n emit NewResolver(node, resolver);\n }\n\n if(ttl != records[node].ttl) {\n records[node].ttl = ttl;\n emit NewTTL(node, ttl);\n }\n }\n}\n","sourcePath":"/Users/makoto/work/ens/ens/contracts/ENSRegistry.sol","ast":{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENSRegistry.sol","exportedSymbols":{"ENSRegistry":[830]},"id":831,"nodeType":"SourceUnit","nodes":[{"id":438,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:3"},{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENS.sol","file":"./ENS.sol","id":439,"nodeType":"ImportDirective","scope":831,"sourceUnit":437,"src":"25:19:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":440,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"108:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":441,"nodeType":"InheritanceSpecifier","src":"108:3:3"}],"contractDependencies":[436],"contractKind":"contract","documentation":"The ENS registry contract.","fullyImplemented":true,"id":830,"linearizedBaseContracts":[830,436],"name":"ENSRegistry","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ENSRegistry.Record","id":448,"members":[{"constant":false,"id":443,"name":"owner","nodeType":"VariableDeclaration","scope":448,"src":"143:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":442,"name":"address","nodeType":"ElementaryTypeName","src":"143:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":445,"name":"resolver","nodeType":"VariableDeclaration","scope":448,"src":"166:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":444,"name":"address","nodeType":"ElementaryTypeName","src":"166:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":447,"name":"ttl","nodeType":"VariableDeclaration","scope":448,"src":"192:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":446,"name":"uint64","nodeType":"ElementaryTypeName","src":"192:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"name":"Record","nodeType":"StructDefinition","scope":830,"src":"119:90:3","visibility":"public"},{"constant":false,"id":452,"name":"records","nodeType":"VariableDeclaration","scope":830,"src":"215:35:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record)"},"typeName":{"id":451,"keyType":{"id":449,"name":"bytes32","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"215:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record)"},"valueType":{"contractScope":null,"id":450,"name":"Record","nodeType":"UserDefinedTypeName","referencedDeclaration":448,"src":"235:6:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage_ptr","typeString":"struct ENSRegistry.Record"}}},"value":null,"visibility":"internal"},{"constant":false,"id":458,"name":"operators","nodeType":"VariableDeclaration","scope":830,"src":"256:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":457,"keyType":{"id":453,"name":"address","nodeType":"ElementaryTypeName","src":"265:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"256:45:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":456,"keyType":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"284:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"276:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":455,"name":"bool","nodeType":"ElementaryTypeName","src":"295:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"value":null,"visibility":"internal"},{"body":{"id":484,"nodeType":"Block","src":"422:133:3","statements":[{"assignments":[463],"declarations":[{"constant":false,"id":463,"name":"owner","nodeType":"VariableDeclaration","scope":484,"src":"432:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":462,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":468,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":464,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"448:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":466,"indexExpression":{"argumentTypes":null,"id":465,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"456:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"448:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"448:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"432:35:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":470,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"485:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":471,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"494:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"494:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"485:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":474,"name":"operators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"508:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":476,"indexExpression":{"argumentTypes":null,"id":475,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"518:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"508:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":479,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":477,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"525:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"525:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"508:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"485:51:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[3035,3036],"referencedDeclaration":3035,"src":"477:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"477:60:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":482,"nodeType":"ExpressionStatement","src":"477:60:3"},{"id":483,"nodeType":"PlaceholderStatement","src":"547:1:3"}]},"documentation":null,"id":485,"name":"authorised","nodeType":"ModifierDefinition","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":460,"name":"node","nodeType":"VariableDeclaration","scope":485,"src":"408:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"408:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"407:14:3"},"src":"388:167:3","visibility":"internal"},{"body":{"id":496,"nodeType":"Block","src":"642:48:3","statements":[{"expression":{"argumentTypes":null,"id":494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":488,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"652:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":490,"indexExpression":{"argumentTypes":null,"hexValue":"307830","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"660:3:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"652:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"652:18:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":492,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"673:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"673:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"652:31:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":495,"nodeType":"ExpressionStatement","src":"652:31:3"}]},"documentation":"@dev Constructs a new ENS registrar.","id":497,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":486,"nodeType":"ParameterList","parameters":[],"src":"632:2:3"},"returnParameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"642:0:3"},"scope":830,"src":"621:69:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":519,"nodeType":"Block","src":"1018:87:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":509,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"1037:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":510,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"1043:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":508,"name":"setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"1028:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1028:21:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":512,"nodeType":"ExpressionStatement","src":"1028:21:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":514,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"1078:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":515,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":503,"src":"1084:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":516,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"1094:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":513,"name":"_setResolverAndTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"1059:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1059:39:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":518,"nodeType":"ExpressionStatement","src":"1059:39:3"}]},"documentation":"@dev Sets the record for a node.\n@param node The node to update.\n@param owner The address of the new owner.\n@param resolver The address of the resolver.\n@param ttl The TTL in seconds.","id":520,"implemented":true,"kind":"function","modifiers":[],"name":"setRecord","nodeType":"FunctionDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":499,"name":"node","nodeType":"VariableDeclaration","scope":520,"src":"950:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"950:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":501,"name":"owner","nodeType":"VariableDeclaration","scope":520,"src":"964:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"964:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":503,"name":"resolver","nodeType":"VariableDeclaration","scope":520,"src":"979:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"979:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":505,"name":"ttl","nodeType":"VariableDeclaration","scope":520,"src":"997:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":504,"name":"uint64","nodeType":"ElementaryTypeName","src":"997:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"949:59:3"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1018:0:3"},"scope":830,"src":"931:174:3","stateMutability":"nonpayable","superFunction":346,"visibility":"external"},{"body":{"id":547,"nodeType":"Block","src":"1521:122:3","statements":[{"assignments":[534],"declarations":[{"constant":false,"id":534,"name":"subnode","nodeType":"VariableDeclaration","scope":547,"src":"1531:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1531:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":540,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":536,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"1565:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":537,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"1571:5:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":538,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"1578:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":535,"name":"setSubnodeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"1549:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) returns (bytes32)"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:35:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1531:53:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":542,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"1613:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":543,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"1622:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":544,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"1632:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":541,"name":"_setResolverAndTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"1594:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1594:42:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":546,"nodeType":"ExpressionStatement","src":"1594:42:3"}]},"documentation":"@dev Sets the record for a subnode.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.\n@param resolver The address of the resolver.\n@param ttl The TTL in seconds.","id":548,"implemented":true,"kind":"function","modifiers":[],"name":"setSubnodeRecord","nodeType":"FunctionDefinition","parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"name":"node","nodeType":"VariableDeclaration","scope":548,"src":"1438:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1438:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":524,"name":"label","nodeType":"VariableDeclaration","scope":548,"src":"1452:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1452:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":526,"name":"owner","nodeType":"VariableDeclaration","scope":548,"src":"1467:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":528,"name":"resolver","nodeType":"VariableDeclaration","scope":548,"src":"1482:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"1482:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":530,"name":"ttl","nodeType":"VariableDeclaration","scope":548,"src":"1500:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":529,"name":"uint64","nodeType":"ElementaryTypeName","src":"1500:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"1437:74:3"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[],"src":"1521:0:3"},"scope":830,"src":"1412:231:3","stateMutability":"nonpayable","superFunction":359,"visibility":"external"},{"body":{"id":568,"nodeType":"Block","src":"1953:75:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":559,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"1973:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":560,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":552,"src":"1979:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":558,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"1963:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1963:22:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":562,"nodeType":"ExpressionStatement","src":"1963:22:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":564,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"2009:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":552,"src":"2015:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":563,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"2000:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2000:21:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":567,"nodeType":"EmitStatement","src":"1995:26:3"}]},"documentation":"@dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\n@param node The node to transfer ownership of.\n@param owner The address of the new owner.","id":569,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":555,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"1947:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":556,"modifierName":{"argumentTypes":null,"id":554,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"1936:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"1936:16:3"}],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":550,"name":"node","nodeType":"VariableDeclaration","scope":569,"src":"1900:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1900:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":552,"name":"owner","nodeType":"VariableDeclaration","scope":569,"src":"1914:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":551,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1899:29:3"},"returnParameters":{"id":557,"nodeType":"ParameterList","parameters":[],"src":"1953:0:3"},"scope":830,"src":"1882:146:3","stateMutability":"nonpayable","superFunction":384,"visibility":"public"},{"body":{"id":606,"nodeType":"Block","src":"2450:177:3","statements":[{"assignments":[584],"declarations":[{"constant":false,"id":584,"name":"subnode","nodeType":"VariableDeclaration","scope":606,"src":"2460:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2460:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":592,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":588,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2505:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":589,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2511:5:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":586,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"2488:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2488:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2488:29:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":585,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"2478:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2478:40:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2460:58:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":594,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"2538:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":595,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"2547:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":593,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"2528:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2528:25:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"2528:25:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":599,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2577:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":600,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2583:5:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":601,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"2590:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":598,"name":"NewOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2568:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,bytes32,address)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2568:28:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":603,"nodeType":"EmitStatement","src":"2563:33:3"},{"expression":{"argumentTypes":null,"id":604,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"2613:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":582,"id":605,"nodeType":"Return","src":"2606:14:3"}]},"documentation":"@dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.","id":607,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":578,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2427:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":579,"modifierName":{"argumentTypes":null,"id":577,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"2416:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"2416:16:3"}],"name":"setSubnodeOwner","nodeType":"FunctionDefinition","parameters":{"id":576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":571,"name":"node","nodeType":"VariableDeclaration","scope":607,"src":"2365:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2365:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":573,"name":"label","nodeType":"VariableDeclaration","scope":607,"src":"2379:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":572,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2379:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":575,"name":"owner","nodeType":"VariableDeclaration","scope":607,"src":"2394:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":574,"name":"address","nodeType":"ElementaryTypeName","src":"2394:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2364:44:3"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"name":"","nodeType":"VariableDeclaration","scope":607,"src":"2441:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":580,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2441:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2440:9:3"},"scope":830,"src":"2340:287:3","stateMutability":"nonpayable","superFunction":370,"visibility":"public"},{"body":{"id":629,"nodeType":"Block","src":"2879:92:3","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":618,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2906:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":619,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"2912:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":617,"name":"NewResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"2894:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2894:27:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":621,"nodeType":"EmitStatement","src":"2889:32:3"},{"expression":{"argumentTypes":null,"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":622,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"2931:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":624,"indexExpression":{"argumentTypes":null,"id":623,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2939:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2931:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"2931:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":626,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"2956:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2931:33:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":628,"nodeType":"ExpressionStatement","src":"2931:33:3"}]},"documentation":"@dev Sets the resolver address for the specified node.\n@param node The node to update.\n@param resolver The address of the resolver.","id":630,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":614,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2873:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":615,"modifierName":{"argumentTypes":null,"id":613,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"2862:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"2862:16:3"}],"name":"setResolver","nodeType":"FunctionDefinition","parameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"name":"node","nodeType":"VariableDeclaration","scope":630,"src":"2823:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2823:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":611,"name":"resolver","nodeType":"VariableDeclaration","scope":630,"src":"2837:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":610,"name":"address","nodeType":"ElementaryTypeName","src":"2837:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2822:32:3"},"returnParameters":{"id":616,"nodeType":"ParameterList","parameters":[],"src":"2879:0:3"},"scope":830,"src":"2802:169:3","stateMutability":"nonpayable","superFunction":377,"visibility":"public"},{"body":{"id":652,"nodeType":"Block","src":"3185:72:3","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":641,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"3207:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":642,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"3213:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":640,"name":"NewTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"3200:6:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$","typeString":"function (bytes32,uint64)"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3200:17:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":644,"nodeType":"EmitStatement","src":"3195:22:3"},{"expression":{"argumentTypes":null,"id":650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":645,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"3227:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":647,"indexExpression":{"argumentTypes":null,"id":646,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"3235:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3227:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"3227:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":649,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"3247:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3227:23:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":651,"nodeType":"ExpressionStatement","src":"3227:23:3"}]},"documentation":"@dev Sets the TTL for the specified node.\n@param node The node to update.\n@param ttl The TTL in seconds.","id":653,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":637,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"3179:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":638,"modifierName":{"argumentTypes":null,"id":636,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"3168:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"3168:16:3"}],"name":"setTTL","nodeType":"FunctionDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":632,"name":"node","nodeType":"VariableDeclaration","scope":653,"src":"3135:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3135:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":634,"name":"ttl","nodeType":"VariableDeclaration","scope":653,"src":"3149:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":633,"name":"uint64","nodeType":"ElementaryTypeName","src":"3149:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"3134:26:3"},"returnParameters":{"id":639,"nodeType":"ParameterList","parameters":[],"src":"3185:0:3"},"scope":830,"src":"3119:138:3","stateMutability":"nonpayable","superFunction":391,"visibility":"public"},{"body":{"id":676,"nodeType":"Block","src":"3660:120:3","statements":[{"expression":{"argumentTypes":null,"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":660,"name":"operators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"3670:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":664,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":661,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"3680:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3680:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3670:21:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":665,"indexExpression":{"argumentTypes":null,"id":663,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"3692:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3670:31:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":666,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"3704:8:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3670:42:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":668,"nodeType":"ExpressionStatement","src":"3670:42:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":670,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"3742:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3742:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":672,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"3754:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":673,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"3764:8:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":669,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"3727:14:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3727:46:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":675,"nodeType":"EmitStatement","src":"3722:51:3"}]},"documentation":"@dev Enable or disable approval for a third party (\"operator\") to manage\n all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\n@param operator Address to add to the set of authorized operators.\n@param approved True if the operator is approved, false to revoke approval.","id":677,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"name":"operator","nodeType":"VariableDeclaration","scope":677,"src":"3618:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"3618:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":657,"name":"approved","nodeType":"VariableDeclaration","scope":677,"src":"3636:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":656,"name":"bool","nodeType":"ElementaryTypeName","src":"3636:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3617:33:3"},"returnParameters":{"id":659,"nodeType":"ParameterList","parameters":[],"src":"3660:0:3"},"scope":830,"src":"3591:189:3","stateMutability":"nonpayable","superFunction":398,"visibility":"external"},{"body":{"id":704,"nodeType":"Block","src":"3999:153:3","statements":[{"assignments":[685],"declarations":[{"constant":false,"id":685,"name":"addr","nodeType":"VariableDeclaration","scope":704,"src":"4009:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":684,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":690,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":686,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4024:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":688,"indexExpression":{"argumentTypes":null,"id":687,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"4032:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4024:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"4024:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4009:34:3"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":691,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4057:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":693,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3052,"src":"4073:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENSRegistry_$830","typeString":"contract ENSRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ENSRegistry_$830","typeString":"contract ENSRegistry"}],"id":692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4065:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4057:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":701,"nodeType":"IfStatement","src":"4053:71:3","trueBody":{"id":700,"nodeType":"Block","src":"4080:44:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4109:3:3","subdenomination":null,"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":696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4101:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4101:12:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":683,"id":699,"nodeType":"Return","src":"4094:19:3"}]}},{"expression":{"argumentTypes":null,"id":702,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4141:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":683,"id":703,"nodeType":"Return","src":"4134:11:3"}]},"documentation":"@dev Returns the address that owns the specified node.\n@param node The specified node.\n@return address of the owner.","id":705,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"name":"node","nodeType":"VariableDeclaration","scope":705,"src":"3955:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3955:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3954:14:3"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"name":"","nodeType":"VariableDeclaration","scope":705,"src":"3990:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":681,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3989:9:3"},"scope":830,"src":"3940:212:3","stateMutability":"view","superFunction":405,"visibility":"public"},{"body":{"id":717,"nodeType":"Block","src":"4387:46:3","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":712,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4404:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":714,"indexExpression":{"argumentTypes":null,"id":713,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"4412:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4404:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"4404:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":711,"id":716,"nodeType":"Return","src":"4397:29:3"}]},"documentation":"@dev Returns the address of the resolver for the specified node.\n@param node The specified node.\n@return address of the resolver.","id":718,"implemented":true,"kind":"function","modifiers":[],"name":"resolver","nodeType":"FunctionDefinition","parameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":707,"name":"node","nodeType":"VariableDeclaration","scope":718,"src":"4343:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4343:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4342:14:3"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":710,"name":"","nodeType":"VariableDeclaration","scope":718,"src":"4378:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":709,"name":"address","nodeType":"ElementaryTypeName","src":"4378:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"4377:9:3"},"scope":830,"src":"4325:108:3","stateMutability":"view","superFunction":412,"visibility":"public"},{"body":{"id":730,"nodeType":"Block","src":"4657:41:3","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":725,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4674:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":727,"indexExpression":{"argumentTypes":null,"id":726,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"4682:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4674:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"4674:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":724,"id":729,"nodeType":"Return","src":"4667:24:3"}]},"documentation":"@dev Returns the TTL of a node, and any records associated with it.\n@param node The specified node.\n@return ttl of the node.","id":731,"implemented":true,"kind":"function","modifiers":[],"name":"ttl","nodeType":"FunctionDefinition","parameters":{"id":721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":720,"name":"node","nodeType":"VariableDeclaration","scope":731,"src":"4614:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":719,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4614:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4613:14:3"},"returnParameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"name":"","nodeType":"VariableDeclaration","scope":731,"src":"4649:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":722,"name":"uint64","nodeType":"ElementaryTypeName","src":"4649:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"4648:8:3"},"scope":830,"src":"4601:97:3","stateMutability":"view","superFunction":419,"visibility":"public"},{"body":{"id":747,"nodeType":"Block","src":"4931:59:3","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":738,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4948:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":740,"indexExpression":{"argumentTypes":null,"id":739,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":733,"src":"4956:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4948:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"4948:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4979:3:3","subdenomination":null,"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":742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4971:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4971:12:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4948:35:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":737,"id":746,"nodeType":"Return","src":"4941:42:3"}]},"documentation":"@dev Returns whether a record has been imported to the registry.\n@param node The specified node.\n@return Bool if record exists","id":748,"implemented":true,"kind":"function","modifiers":[],"name":"recordExists","nodeType":"FunctionDefinition","parameters":{"id":734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":733,"name":"node","nodeType":"VariableDeclaration","scope":748,"src":"4890:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4890:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4889:14:3"},"returnParameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":736,"name":"","nodeType":"VariableDeclaration","scope":748,"src":"4925:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":735,"name":"bool","nodeType":"ElementaryTypeName","src":"4925:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4924:6:3"},"scope":830,"src":"4868:122:3","stateMutability":"view","superFunction":426,"visibility":"public"},{"body":{"id":763,"nodeType":"Block","src":"5391:50:3","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":757,"name":"operators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"5408:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":759,"indexExpression":{"argumentTypes":null,"id":758,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"5418:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5408:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":761,"indexExpression":{"argumentTypes":null,"id":760,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"5425:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5408:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":756,"id":762,"nodeType":"Return","src":"5401:33:3"}]},"documentation":"@dev Query if an address is an authorized operator for another address.\n@param owner The address that owns the records.\n@param operator The address that acts on behalf of the owner.\n@return True if `operator` is an approved operator for `owner`, false otherwise.","id":764,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","parameters":{"id":753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"name":"owner","nodeType":"VariableDeclaration","scope":764,"src":"5329:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":749,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":752,"name":"operator","nodeType":"VariableDeclaration","scope":764,"src":"5344:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":751,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5328:33:3"},"returnParameters":{"id":756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"name":"","nodeType":"VariableDeclaration","scope":764,"src":"5385:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":754,"name":"bool","nodeType":"ElementaryTypeName","src":"5385:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"5384:6:3"},"scope":830,"src":"5303:138:3","stateMutability":"view","superFunction":435,"visibility":"external"},{"body":{"id":778,"nodeType":"Block","src":"5504:44:3","statements":[{"expression":{"argumentTypes":null,"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":771,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5514:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":773,"indexExpression":{"argumentTypes":null,"id":772,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"5522:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5514:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"5514:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":775,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"5536:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5514:27:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":777,"nodeType":"ExpressionStatement","src":"5514:27:3"}]},"documentation":null,"id":779,"implemented":true,"kind":"function","modifiers":[],"name":"_setOwner","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"name":"node","nodeType":"VariableDeclaration","scope":779,"src":"5466:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5466:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":768,"name":"owner","nodeType":"VariableDeclaration","scope":779,"src":"5480:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":767,"name":"address","nodeType":"ElementaryTypeName","src":"5480:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5465:29:3"},"returnParameters":{"id":770,"nodeType":"ParameterList","parameters":[],"src":"5504:0:3"},"scope":830,"src":"5447:101:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":828,"nodeType":"Block","src":"5635:282:3","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":788,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5648:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":789,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5660:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":791,"indexExpression":{"argumentTypes":null,"id":790,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5668:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5660:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"5660:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5648:34:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":807,"nodeType":"IfStatement","src":"5645:143:3","trueBody":{"id":806,"nodeType":"Block","src":"5684:104:3","statements":[{"expression":{"argumentTypes":null,"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":794,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5698:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":796,"indexExpression":{"argumentTypes":null,"id":795,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5706:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5698:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"5698:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":798,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5723:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5698:33:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":800,"nodeType":"ExpressionStatement","src":"5698:33:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":802,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5762:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":803,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5768:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":801,"name":"NewResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"5750:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5750:27:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":805,"nodeType":"EmitStatement","src":"5745:32:3"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":808,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"5801:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":809,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5808:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":811,"indexExpression":{"argumentTypes":null,"id":810,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5816:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5808:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"5808:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5801:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":827,"nodeType":"IfStatement","src":"5798:113:3","trueBody":{"id":826,"nodeType":"Block","src":"5827:84:3","statements":[{"expression":{"argumentTypes":null,"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":814,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5841:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":816,"indexExpression":{"argumentTypes":null,"id":815,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5849:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5841:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"5841:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":818,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"5861:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5841:23:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":820,"nodeType":"ExpressionStatement","src":"5841:23:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":822,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5890:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":823,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"5896:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":821,"name":"NewTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"5883:6:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$","typeString":"function (bytes32,uint64)"}},"id":824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5883:17:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":825,"nodeType":"EmitStatement","src":"5878:22:3"}]}}]},"documentation":null,"id":829,"implemented":true,"kind":"function","modifiers":[],"name":"_setResolverAndTTL","nodeType":"FunctionDefinition","parameters":{"id":786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"name":"node","nodeType":"VariableDeclaration","scope":829,"src":"5582:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":780,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5582:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":783,"name":"resolver","nodeType":"VariableDeclaration","scope":829,"src":"5596:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":782,"name":"address","nodeType":"ElementaryTypeName","src":"5596:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":785,"name":"ttl","nodeType":"VariableDeclaration","scope":829,"src":"5614:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":784,"name":"uint64","nodeType":"ElementaryTypeName","src":"5614:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"5581:44:3"},"returnParameters":{"id":787,"nodeType":"ParameterList","parameters":[],"src":"5635:0:3"},"scope":830,"src":"5554:363:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":831,"src":"84:5835:3"}],"src":"0:5920:3"},"legacyAST":{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENSRegistry.sol","exportedSymbols":{"ENSRegistry":[830]},"id":831,"nodeType":"SourceUnit","nodes":[{"id":438,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:3"},{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENS.sol","file":"./ENS.sol","id":439,"nodeType":"ImportDirective","scope":831,"sourceUnit":437,"src":"25:19:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":440,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"108:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":441,"nodeType":"InheritanceSpecifier","src":"108:3:3"}],"contractDependencies":[436],"contractKind":"contract","documentation":"The ENS registry contract.","fullyImplemented":true,"id":830,"linearizedBaseContracts":[830,436],"name":"ENSRegistry","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ENSRegistry.Record","id":448,"members":[{"constant":false,"id":443,"name":"owner","nodeType":"VariableDeclaration","scope":448,"src":"143:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":442,"name":"address","nodeType":"ElementaryTypeName","src":"143:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":445,"name":"resolver","nodeType":"VariableDeclaration","scope":448,"src":"166:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":444,"name":"address","nodeType":"ElementaryTypeName","src":"166:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":447,"name":"ttl","nodeType":"VariableDeclaration","scope":448,"src":"192:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":446,"name":"uint64","nodeType":"ElementaryTypeName","src":"192:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"name":"Record","nodeType":"StructDefinition","scope":830,"src":"119:90:3","visibility":"public"},{"constant":false,"id":452,"name":"records","nodeType":"VariableDeclaration","scope":830,"src":"215:35:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record)"},"typeName":{"id":451,"keyType":{"id":449,"name":"bytes32","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"215:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record)"},"valueType":{"contractScope":null,"id":450,"name":"Record","nodeType":"UserDefinedTypeName","referencedDeclaration":448,"src":"235:6:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage_ptr","typeString":"struct ENSRegistry.Record"}}},"value":null,"visibility":"internal"},{"constant":false,"id":458,"name":"operators","nodeType":"VariableDeclaration","scope":830,"src":"256:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":457,"keyType":{"id":453,"name":"address","nodeType":"ElementaryTypeName","src":"265:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"256:45:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":456,"keyType":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"284:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"276:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":455,"name":"bool","nodeType":"ElementaryTypeName","src":"295:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"value":null,"visibility":"internal"},{"body":{"id":484,"nodeType":"Block","src":"422:133:3","statements":[{"assignments":[463],"declarations":[{"constant":false,"id":463,"name":"owner","nodeType":"VariableDeclaration","scope":484,"src":"432:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":462,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":468,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":464,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"448:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":466,"indexExpression":{"argumentTypes":null,"id":465,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"456:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"448:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"448:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"432:35:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":470,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"485:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":471,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"494:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"494:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"485:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":474,"name":"operators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"508:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":476,"indexExpression":{"argumentTypes":null,"id":475,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"518:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"508:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":479,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":477,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"525:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"525:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"508:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"485:51:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[3035,3036],"referencedDeclaration":3035,"src":"477:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"477:60:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":482,"nodeType":"ExpressionStatement","src":"477:60:3"},{"id":483,"nodeType":"PlaceholderStatement","src":"547:1:3"}]},"documentation":null,"id":485,"name":"authorised","nodeType":"ModifierDefinition","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":460,"name":"node","nodeType":"VariableDeclaration","scope":485,"src":"408:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"408:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"407:14:3"},"src":"388:167:3","visibility":"internal"},{"body":{"id":496,"nodeType":"Block","src":"642:48:3","statements":[{"expression":{"argumentTypes":null,"id":494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":488,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"652:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":490,"indexExpression":{"argumentTypes":null,"hexValue":"307830","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"660:3:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"652:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"652:18:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":492,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"673:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"673:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"652:31:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":495,"nodeType":"ExpressionStatement","src":"652:31:3"}]},"documentation":"@dev Constructs a new ENS registrar.","id":497,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":486,"nodeType":"ParameterList","parameters":[],"src":"632:2:3"},"returnParameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"642:0:3"},"scope":830,"src":"621:69:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":519,"nodeType":"Block","src":"1018:87:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":509,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"1037:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":510,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"1043:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":508,"name":"setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"1028:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1028:21:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":512,"nodeType":"ExpressionStatement","src":"1028:21:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":514,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"1078:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":515,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":503,"src":"1084:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":516,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"1094:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":513,"name":"_setResolverAndTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"1059:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1059:39:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":518,"nodeType":"ExpressionStatement","src":"1059:39:3"}]},"documentation":"@dev Sets the record for a node.\n@param node The node to update.\n@param owner The address of the new owner.\n@param resolver The address of the resolver.\n@param ttl The TTL in seconds.","id":520,"implemented":true,"kind":"function","modifiers":[],"name":"setRecord","nodeType":"FunctionDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":499,"name":"node","nodeType":"VariableDeclaration","scope":520,"src":"950:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"950:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":501,"name":"owner","nodeType":"VariableDeclaration","scope":520,"src":"964:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"964:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":503,"name":"resolver","nodeType":"VariableDeclaration","scope":520,"src":"979:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"979:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":505,"name":"ttl","nodeType":"VariableDeclaration","scope":520,"src":"997:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":504,"name":"uint64","nodeType":"ElementaryTypeName","src":"997:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"949:59:3"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1018:0:3"},"scope":830,"src":"931:174:3","stateMutability":"nonpayable","superFunction":346,"visibility":"external"},{"body":{"id":547,"nodeType":"Block","src":"1521:122:3","statements":[{"assignments":[534],"declarations":[{"constant":false,"id":534,"name":"subnode","nodeType":"VariableDeclaration","scope":547,"src":"1531:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1531:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":540,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":536,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"1565:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":537,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"1571:5:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":538,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"1578:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":535,"name":"setSubnodeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"1549:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) returns (bytes32)"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:35:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1531:53:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":542,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"1613:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":543,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"1622:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":544,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"1632:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":541,"name":"_setResolverAndTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"1594:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint64_$returns$__$","typeString":"function (bytes32,address,uint64)"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1594:42:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":546,"nodeType":"ExpressionStatement","src":"1594:42:3"}]},"documentation":"@dev Sets the record for a subnode.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.\n@param resolver The address of the resolver.\n@param ttl The TTL in seconds.","id":548,"implemented":true,"kind":"function","modifiers":[],"name":"setSubnodeRecord","nodeType":"FunctionDefinition","parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"name":"node","nodeType":"VariableDeclaration","scope":548,"src":"1438:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1438:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":524,"name":"label","nodeType":"VariableDeclaration","scope":548,"src":"1452:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1452:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":526,"name":"owner","nodeType":"VariableDeclaration","scope":548,"src":"1467:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":528,"name":"resolver","nodeType":"VariableDeclaration","scope":548,"src":"1482:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"1482:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":530,"name":"ttl","nodeType":"VariableDeclaration","scope":548,"src":"1500:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":529,"name":"uint64","nodeType":"ElementaryTypeName","src":"1500:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"1437:74:3"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[],"src":"1521:0:3"},"scope":830,"src":"1412:231:3","stateMutability":"nonpayable","superFunction":359,"visibility":"external"},{"body":{"id":568,"nodeType":"Block","src":"1953:75:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":559,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"1973:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":560,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":552,"src":"1979:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":558,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"1963:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1963:22:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":562,"nodeType":"ExpressionStatement","src":"1963:22:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":564,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"2009:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":552,"src":"2015:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":563,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"2000:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2000:21:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":567,"nodeType":"EmitStatement","src":"1995:26:3"}]},"documentation":"@dev Transfers ownership of a node to a new address. May only be called by the current owner of the node.\n@param node The node to transfer ownership of.\n@param owner The address of the new owner.","id":569,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":555,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"1947:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":556,"modifierName":{"argumentTypes":null,"id":554,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"1936:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"1936:16:3"}],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":550,"name":"node","nodeType":"VariableDeclaration","scope":569,"src":"1900:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1900:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":552,"name":"owner","nodeType":"VariableDeclaration","scope":569,"src":"1914:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":551,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1899:29:3"},"returnParameters":{"id":557,"nodeType":"ParameterList","parameters":[],"src":"1953:0:3"},"scope":830,"src":"1882:146:3","stateMutability":"nonpayable","superFunction":384,"visibility":"public"},{"body":{"id":606,"nodeType":"Block","src":"2450:177:3","statements":[{"assignments":[584],"declarations":[{"constant":false,"id":584,"name":"subnode","nodeType":"VariableDeclaration","scope":606,"src":"2460:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2460:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":592,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":588,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2505:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":589,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2511:5:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":586,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"2488:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2488:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2488:29:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":585,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"2478:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2478:40:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2460:58:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":594,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"2538:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":595,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"2547:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":593,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"2528:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2528:25:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"2528:25:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":599,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2577:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":600,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2583:5:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":601,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"2590:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":598,"name":"NewOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2568:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,bytes32,address)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2568:28:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":603,"nodeType":"EmitStatement","src":"2563:33:3"},{"expression":{"argumentTypes":null,"id":604,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"2613:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":582,"id":605,"nodeType":"Return","src":"2606:14:3"}]},"documentation":"@dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.","id":607,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":578,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"2427:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":579,"modifierName":{"argumentTypes":null,"id":577,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"2416:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"2416:16:3"}],"name":"setSubnodeOwner","nodeType":"FunctionDefinition","parameters":{"id":576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":571,"name":"node","nodeType":"VariableDeclaration","scope":607,"src":"2365:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2365:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":573,"name":"label","nodeType":"VariableDeclaration","scope":607,"src":"2379:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":572,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2379:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":575,"name":"owner","nodeType":"VariableDeclaration","scope":607,"src":"2394:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":574,"name":"address","nodeType":"ElementaryTypeName","src":"2394:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2364:44:3"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"name":"","nodeType":"VariableDeclaration","scope":607,"src":"2441:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":580,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2441:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2440:9:3"},"scope":830,"src":"2340:287:3","stateMutability":"nonpayable","superFunction":370,"visibility":"public"},{"body":{"id":629,"nodeType":"Block","src":"2879:92:3","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":618,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2906:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":619,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"2912:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":617,"name":"NewResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"2894:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2894:27:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":621,"nodeType":"EmitStatement","src":"2889:32:3"},{"expression":{"argumentTypes":null,"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":622,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"2931:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":624,"indexExpression":{"argumentTypes":null,"id":623,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2939:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2931:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"2931:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":626,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"2956:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2931:33:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":628,"nodeType":"ExpressionStatement","src":"2931:33:3"}]},"documentation":"@dev Sets the resolver address for the specified node.\n@param node The node to update.\n@param resolver The address of the resolver.","id":630,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":614,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2873:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":615,"modifierName":{"argumentTypes":null,"id":613,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"2862:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"2862:16:3"}],"name":"setResolver","nodeType":"FunctionDefinition","parameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"name":"node","nodeType":"VariableDeclaration","scope":630,"src":"2823:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2823:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":611,"name":"resolver","nodeType":"VariableDeclaration","scope":630,"src":"2837:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":610,"name":"address","nodeType":"ElementaryTypeName","src":"2837:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2822:32:3"},"returnParameters":{"id":616,"nodeType":"ParameterList","parameters":[],"src":"2879:0:3"},"scope":830,"src":"2802:169:3","stateMutability":"nonpayable","superFunction":377,"visibility":"public"},{"body":{"id":652,"nodeType":"Block","src":"3185:72:3","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":641,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"3207:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":642,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"3213:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":640,"name":"NewTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"3200:6:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$","typeString":"function (bytes32,uint64)"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3200:17:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":644,"nodeType":"EmitStatement","src":"3195:22:3"},{"expression":{"argumentTypes":null,"id":650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":645,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"3227:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":647,"indexExpression":{"argumentTypes":null,"id":646,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"3235:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3227:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"3227:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":649,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"3247:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3227:23:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":651,"nodeType":"ExpressionStatement","src":"3227:23:3"}]},"documentation":"@dev Sets the TTL for the specified node.\n@param node The node to update.\n@param ttl The TTL in seconds.","id":653,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":637,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"3179:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":638,"modifierName":{"argumentTypes":null,"id":636,"name":"authorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"3168:10:3","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"3168:16:3"}],"name":"setTTL","nodeType":"FunctionDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":632,"name":"node","nodeType":"VariableDeclaration","scope":653,"src":"3135:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3135:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":634,"name":"ttl","nodeType":"VariableDeclaration","scope":653,"src":"3149:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":633,"name":"uint64","nodeType":"ElementaryTypeName","src":"3149:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"3134:26:3"},"returnParameters":{"id":639,"nodeType":"ParameterList","parameters":[],"src":"3185:0:3"},"scope":830,"src":"3119:138:3","stateMutability":"nonpayable","superFunction":391,"visibility":"public"},{"body":{"id":676,"nodeType":"Block","src":"3660:120:3","statements":[{"expression":{"argumentTypes":null,"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":660,"name":"operators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"3670:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":664,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":661,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"3680:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3680:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3670:21:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":665,"indexExpression":{"argumentTypes":null,"id":663,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"3692:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3670:31:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":666,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"3704:8:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3670:42:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":668,"nodeType":"ExpressionStatement","src":"3670:42:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":670,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"3742:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3742:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":672,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"3754:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":673,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"3764:8:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":669,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"3727:14:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3727:46:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":675,"nodeType":"EmitStatement","src":"3722:51:3"}]},"documentation":"@dev Enable or disable approval for a third party (\"operator\") to manage\n all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.\n@param operator Address to add to the set of authorized operators.\n@param approved True if the operator is approved, false to revoke approval.","id":677,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"name":"operator","nodeType":"VariableDeclaration","scope":677,"src":"3618:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"3618:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":657,"name":"approved","nodeType":"VariableDeclaration","scope":677,"src":"3636:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":656,"name":"bool","nodeType":"ElementaryTypeName","src":"3636:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3617:33:3"},"returnParameters":{"id":659,"nodeType":"ParameterList","parameters":[],"src":"3660:0:3"},"scope":830,"src":"3591:189:3","stateMutability":"nonpayable","superFunction":398,"visibility":"external"},{"body":{"id":704,"nodeType":"Block","src":"3999:153:3","statements":[{"assignments":[685],"declarations":[{"constant":false,"id":685,"name":"addr","nodeType":"VariableDeclaration","scope":704,"src":"4009:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":684,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":690,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":686,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4024:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":688,"indexExpression":{"argumentTypes":null,"id":687,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"4032:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4024:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"4024:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4009:34:3"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":691,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4057:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":693,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3052,"src":"4073:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENSRegistry_$830","typeString":"contract ENSRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ENSRegistry_$830","typeString":"contract ENSRegistry"}],"id":692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4065:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4057:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":701,"nodeType":"IfStatement","src":"4053:71:3","trueBody":{"id":700,"nodeType":"Block","src":"4080:44:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4109:3:3","subdenomination":null,"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":696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4101:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4101:12:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":683,"id":699,"nodeType":"Return","src":"4094:19:3"}]}},{"expression":{"argumentTypes":null,"id":702,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4141:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":683,"id":703,"nodeType":"Return","src":"4134:11:3"}]},"documentation":"@dev Returns the address that owns the specified node.\n@param node The specified node.\n@return address of the owner.","id":705,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"name":"node","nodeType":"VariableDeclaration","scope":705,"src":"3955:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3955:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3954:14:3"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"name":"","nodeType":"VariableDeclaration","scope":705,"src":"3990:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":681,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3989:9:3"},"scope":830,"src":"3940:212:3","stateMutability":"view","superFunction":405,"visibility":"public"},{"body":{"id":717,"nodeType":"Block","src":"4387:46:3","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":712,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4404:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":714,"indexExpression":{"argumentTypes":null,"id":713,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"4412:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4404:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"4404:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":711,"id":716,"nodeType":"Return","src":"4397:29:3"}]},"documentation":"@dev Returns the address of the resolver for the specified node.\n@param node The specified node.\n@return address of the resolver.","id":718,"implemented":true,"kind":"function","modifiers":[],"name":"resolver","nodeType":"FunctionDefinition","parameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":707,"name":"node","nodeType":"VariableDeclaration","scope":718,"src":"4343:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4343:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4342:14:3"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":710,"name":"","nodeType":"VariableDeclaration","scope":718,"src":"4378:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":709,"name":"address","nodeType":"ElementaryTypeName","src":"4378:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"4377:9:3"},"scope":830,"src":"4325:108:3","stateMutability":"view","superFunction":412,"visibility":"public"},{"body":{"id":730,"nodeType":"Block","src":"4657:41:3","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":725,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4674:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":727,"indexExpression":{"argumentTypes":null,"id":726,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"4682:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4674:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"4674:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":724,"id":729,"nodeType":"Return","src":"4667:24:3"}]},"documentation":"@dev Returns the TTL of a node, and any records associated with it.\n@param node The specified node.\n@return ttl of the node.","id":731,"implemented":true,"kind":"function","modifiers":[],"name":"ttl","nodeType":"FunctionDefinition","parameters":{"id":721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":720,"name":"node","nodeType":"VariableDeclaration","scope":731,"src":"4614:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":719,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4614:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4613:14:3"},"returnParameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"name":"","nodeType":"VariableDeclaration","scope":731,"src":"4649:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":722,"name":"uint64","nodeType":"ElementaryTypeName","src":"4649:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"4648:8:3"},"scope":830,"src":"4601:97:3","stateMutability":"view","superFunction":419,"visibility":"public"},{"body":{"id":747,"nodeType":"Block","src":"4931:59:3","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":738,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"4948:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":740,"indexExpression":{"argumentTypes":null,"id":739,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":733,"src":"4956:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4948:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"4948:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4979:3:3","subdenomination":null,"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":742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4971:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4971:12:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4948:35:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":737,"id":746,"nodeType":"Return","src":"4941:42:3"}]},"documentation":"@dev Returns whether a record has been imported to the registry.\n@param node The specified node.\n@return Bool if record exists","id":748,"implemented":true,"kind":"function","modifiers":[],"name":"recordExists","nodeType":"FunctionDefinition","parameters":{"id":734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":733,"name":"node","nodeType":"VariableDeclaration","scope":748,"src":"4890:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4890:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4889:14:3"},"returnParameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":736,"name":"","nodeType":"VariableDeclaration","scope":748,"src":"4925:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":735,"name":"bool","nodeType":"ElementaryTypeName","src":"4925:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4924:6:3"},"scope":830,"src":"4868:122:3","stateMutability":"view","superFunction":426,"visibility":"public"},{"body":{"id":763,"nodeType":"Block","src":"5391:50:3","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":757,"name":"operators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"5408:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":759,"indexExpression":{"argumentTypes":null,"id":758,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"5418:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5408:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":761,"indexExpression":{"argumentTypes":null,"id":760,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"5425:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5408:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":756,"id":762,"nodeType":"Return","src":"5401:33:3"}]},"documentation":"@dev Query if an address is an authorized operator for another address.\n@param owner The address that owns the records.\n@param operator The address that acts on behalf of the owner.\n@return True if `operator` is an approved operator for `owner`, false otherwise.","id":764,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","parameters":{"id":753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"name":"owner","nodeType":"VariableDeclaration","scope":764,"src":"5329:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":749,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":752,"name":"operator","nodeType":"VariableDeclaration","scope":764,"src":"5344:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":751,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5328:33:3"},"returnParameters":{"id":756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"name":"","nodeType":"VariableDeclaration","scope":764,"src":"5385:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":754,"name":"bool","nodeType":"ElementaryTypeName","src":"5385:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"5384:6:3"},"scope":830,"src":"5303:138:3","stateMutability":"view","superFunction":435,"visibility":"external"},{"body":{"id":778,"nodeType":"Block","src":"5504:44:3","statements":[{"expression":{"argumentTypes":null,"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":771,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5514:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":773,"indexExpression":{"argumentTypes":null,"id":772,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"5522:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5514:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":443,"src":"5514:19:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":775,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"5536:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5514:27:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":777,"nodeType":"ExpressionStatement","src":"5514:27:3"}]},"documentation":null,"id":779,"implemented":true,"kind":"function","modifiers":[],"name":"_setOwner","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"name":"node","nodeType":"VariableDeclaration","scope":779,"src":"5466:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5466:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":768,"name":"owner","nodeType":"VariableDeclaration","scope":779,"src":"5480:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":767,"name":"address","nodeType":"ElementaryTypeName","src":"5480:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5465:29:3"},"returnParameters":{"id":770,"nodeType":"ParameterList","parameters":[],"src":"5504:0:3"},"scope":830,"src":"5447:101:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":828,"nodeType":"Block","src":"5635:282:3","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":788,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5648:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":789,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5660:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":791,"indexExpression":{"argumentTypes":null,"id":790,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5668:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5660:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"5660:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5648:34:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":807,"nodeType":"IfStatement","src":"5645:143:3","trueBody":{"id":806,"nodeType":"Block","src":"5684:104:3","statements":[{"expression":{"argumentTypes":null,"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":794,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5698:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":796,"indexExpression":{"argumentTypes":null,"id":795,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5706:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5698:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":445,"src":"5698:22:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":798,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5723:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5698:33:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":800,"nodeType":"ExpressionStatement","src":"5698:33:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":802,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5762:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":803,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5768:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":801,"name":"NewResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"5750:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5750:27:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":805,"nodeType":"EmitStatement","src":"5745:32:3"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":808,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"5801:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":809,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5808:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":811,"indexExpression":{"argumentTypes":null,"id":810,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5816:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5808:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"5808:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5801:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":827,"nodeType":"IfStatement","src":"5798:113:3","trueBody":{"id":826,"nodeType":"Block","src":"5827:84:3","statements":[{"expression":{"argumentTypes":null,"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":814,"name":"records","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5841:7:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Record_$448_storage_$","typeString":"mapping(bytes32 => struct ENSRegistry.Record storage ref)"}},"id":816,"indexExpression":{"argumentTypes":null,"id":815,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5849:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5841:13:3","typeDescriptions":{"typeIdentifier":"t_struct$_Record_$448_storage","typeString":"struct ENSRegistry.Record storage ref"}},"id":817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"ttl","nodeType":"MemberAccess","referencedDeclaration":447,"src":"5841:17:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":818,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"5861:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5841:23:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":820,"nodeType":"ExpressionStatement","src":"5841:23:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":822,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"5890:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":823,"name":"ttl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"5896:3:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":821,"name":"NewTTL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"5883:6:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$","typeString":"function (bytes32,uint64)"}},"id":824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5883:17:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":825,"nodeType":"EmitStatement","src":"5878:22:3"}]}}]},"documentation":null,"id":829,"implemented":true,"kind":"function","modifiers":[],"name":"_setResolverAndTTL","nodeType":"FunctionDefinition","parameters":{"id":786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"name":"node","nodeType":"VariableDeclaration","scope":829,"src":"5582:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":780,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5582:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":783,"name":"resolver","nodeType":"VariableDeclaration","scope":829,"src":"5596:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":782,"name":"address","nodeType":"ElementaryTypeName","src":"5596:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":785,"name":"ttl","nodeType":"VariableDeclaration","scope":829,"src":"5614:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":784,"name":"uint64","nodeType":"ElementaryTypeName","src":"5614:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":null,"visibility":"internal"}],"src":"5581:44:3"},"returnParameters":{"id":787,"nodeType":"ParameterList","parameters":[],"src":"5635:0:3"},"scope":830,"src":"5554:363:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":831,"src":"84:5835:3"}],"src":"0:5920:3"},"compiler":{"name":"solc","version":"0.5.16+commit.9c3226ce.Emscripten.clang"},"networks":{},"schemaVersion":"3.2.0","updatedAt":"2020-06-23T14:47:43.691Z","devdoc":{"methods":{"constructor":{"details":"Constructs a new ENS registrar."},"isApprovedForAll(address,address)":{"details":"Query if an address is an authorized operator for another address.","params":{"operator":"The address that acts on behalf of the owner.","owner":"The address that owns the records."},"return":"True if `operator` is an approved operator for `owner`, false otherwise."},"owner(bytes32)":{"details":"Returns the address that owns the specified node.","params":{"node":"The specified node."},"return":"address of the owner."},"recordExists(bytes32)":{"details":"Returns whether a record has been imported to the registry.","params":{"node":"The specified node."},"return":"Bool if record exists"},"resolver(bytes32)":{"details":"Returns the address of the resolver for the specified node.","params":{"node":"The specified node."},"return":"address of the resolver."},"setApprovalForAll(address,bool)":{"details":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s ENS records. Emits the ApprovalForAll event.","params":{"approved":"True if the operator is approved, false to revoke approval.","operator":"Address to add to the set of authorized operators."}},"setOwner(bytes32,address)":{"details":"Transfers ownership of a node to a new address. May only be called by the current owner of the node.","params":{"node":"The node to transfer ownership of.","owner":"The address of the new owner."}},"setRecord(bytes32,address,address,uint64)":{"details":"Sets the record for a node.","params":{"node":"The node to update.","owner":"The address of the new owner.","resolver":"The address of the resolver.","ttl":"The TTL in seconds."}},"setResolver(bytes32,address)":{"details":"Sets the resolver address for the specified node.","params":{"node":"The node to update.","resolver":"The address of the resolver."}},"setSubnodeOwner(bytes32,bytes32,address)":{"details":"Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node.","params":{"label":"The hash of the label specifying the subnode.","node":"The parent node.","owner":"The address of the new owner."}},"setSubnodeRecord(bytes32,bytes32,address,address,uint64)":{"details":"Sets the record for a subnode.","params":{"label":"The hash of the label specifying the subnode.","node":"The parent node.","owner":"The address of the new owner.","resolver":"The address of the resolver.","ttl":"The TTL in seconds."}},"setTTL(bytes32,uint64)":{"details":"Sets the TTL for the specified node.","params":{"node":"The node to update.","ttl":"The TTL in seconds."}},"ttl(bytes32)":{"details":"Returns the TTL of a node, and any records associated with it.","params":{"node":"The specified node."},"return":"ttl of the node."}}},"userdoc":{"methods":{},"notice":"The ENS registry contract."}} \ No newline at end of file diff --git a/waffle-ens/src/abis/FIFSRegistrar.json b/waffle-ens/src/abis/FIFSRegistrar.json new file mode 100644 index 000000000..b8b28a22e --- /dev/null +++ b/waffle-ens/src/abis/FIFSRegistrar.json @@ -0,0 +1 @@ +{"contractName":"FIFSRegistrar","abi":[{"inputs":[{"internalType":"contract ENS","name":"ensAddr","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"params\":{\"ensAddr\":\"The address of the ENS registry.\",\"node\":\"The node that this registrar administers.\"}},\"register(bytes32,address)\":{\"params\":{\"label\":\"The hash of the label to register.\",\"owner\":\"The address of the new owner.\"}}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructor.\",\"register(bytes32,address)\":{\"notice\":\"Register a name, or change the owner of an existing registration.\"}},\"notice\":\"A registrar that allocates subdomains to the first person to claim them.\"}},\"settings\":{\"compilationTarget\":{\"/Users/makoto/work/ens/ens/contracts/FIFSRegistrar.sol\":\"FIFSRegistrar\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/makoto/work/ens/ens/contracts/ENS.sol\":{\"keccak256\":\"0x10b88673d8c180cd62523be4fec7607c65594eb4f0c561fa0fbc0784422b4871\",\"urls\":[\"bzz-raw://b3de1882a4a1a1b13c27ee6dc04cc58c34ac392c80cad507de2cdfa8c02712fe\",\"dweb:/ipfs/QmeKcaBF8QdJjXiqFrPJkAtK3et5kUL8XJrnHjwhAThRMT\"]},\"/Users/makoto/work/ens/ens/contracts/FIFSRegistrar.sol\":{\"keccak256\":\"0xee608fdeeea6d7c0e6cb5d69b27a0e6c0658fad024c31ab56d52ccd8c7c0fcd5\",\"urls\":[\"bzz-raw://b81fc1330b804af1f0a0cc0cbe00b6c95fffe113c656c2db353893b0e448be9a\",\"dweb:/ipfs/QmcXnnD4uLw3wxceFhWahicL36kG15t9rnpBhMfem93Uhs\"]}},\"version\":1}","bytecode":"0x608060405234801561001057600080fd5b5060405161039e38038061039e8339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060018190555050506102f8806100a66000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061007e565b005b8160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3600154846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d602081101561014d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806101c657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6101cf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab592360015486866040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561028157600080fd5b505af1158015610295573d6000803e3d6000fd5b505050506040513d60208110156102ab57600080fd5b8101908080519060200190929190505050505050505056fea265627a7a7231582050432f41eedb6faece2877c201027aebc0a97c9c56d47ce9f58a80157f4b797164736f6c63430005100032","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061007e565b005b8160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3600154846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d602081101561014d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806101c657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6101cf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab592360015486866040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561028157600080fd5b505af1158015610295573d6000803e3d6000fd5b505050506040513d60208110156102ab57600080fd5b8101908080519060200190929190505050505050505056fea265627a7a7231582050432f41eedb6faece2877c201027aebc0a97c9c56d47ce9f58a80157f4b797164736f6c63430005100032","sourceMap":"130:877:5:-;;;571:101;8:9:-1;5:2;;;30:1;27;20:12;5:2;571:101:5;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;571:101:5;;;;;;;;;;;;;;;;;;;;;;;;;633:7;627:3;;:13;;;;;;;;;;;;;;;;;;661:4;650:8;:15;;;;571:101;;130:877;;;;;;","deployedSourceMap":"130:877:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;130:877:5;;;;;;;;;;;;;;;;;;;872:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;872:133:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;938:5;240:20;263:3;;;;;;;;;;;:9;;;300:8;;310:5;283:33;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;283:33:5;;;273:44;;;;;;263:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;263:55:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;263:55:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;263:55:5;;;;;;;;;;;;;;;;240:78;;360:3;336:28;;:12;:28;;;:58;;;;384:10;368:26;;:12;:26;;;336:58;328:67;;;;;;955:3;;;;;;;;;;;:19;;;975:8;;985:5;992;955:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;955:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;955:43:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;955:43:5;;;;;;;;;;;;;;;;;872:133;;;;:::o","source":"pragma solidity ^0.5.0;\n\nimport \"./ENS.sol\";\n\n/**\n * A registrar that allocates subdomains to the first person to claim them.\n */\ncontract FIFSRegistrar {\n ENS ens;\n bytes32 rootNode;\n\n modifier only_owner(bytes32 label) {\n address currentOwner = ens.owner(keccak256(abi.encodePacked(rootNode, label)));\n require(currentOwner == address(0x0) || currentOwner == msg.sender);\n _;\n }\n\n /**\n * Constructor.\n * @param ensAddr The address of the ENS registry.\n * @param node The node that this registrar administers.\n */\n constructor(ENS ensAddr, bytes32 node) public {\n ens = ensAddr;\n rootNode = node;\n }\n\n /**\n * Register a name, or change the owner of an existing registration.\n * @param label The hash of the label to register.\n * @param owner The address of the new owner.\n */\n function register(bytes32 label, address owner) public only_owner(label) {\n ens.setSubnodeOwner(rootNode, label, owner);\n }\n}\n","sourcePath":"/Users/makoto/work/ens/ens/contracts/FIFSRegistrar.sol","ast":{"absolutePath":"/Users/makoto/work/ens/ens/contracts/FIFSRegistrar.sol","exportedSymbols":{"FIFSRegistrar":[1030]},"id":1031,"nodeType":"SourceUnit","nodes":[{"id":957,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:5"},{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENS.sol","file":"./ENS.sol","id":958,"nodeType":"ImportDirective","scope":1031,"sourceUnit":437,"src":"25:19:5","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"A registrar that allocates subdomains to the first person to claim them.","fullyImplemented":true,"id":1030,"linearizedBaseContracts":[1030],"name":"FIFSRegistrar","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":960,"name":"ens","nodeType":"VariableDeclaration","scope":1030,"src":"159:7:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":959,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"159:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":962,"name":"rootNode","nodeType":"VariableDeclaration","scope":1030,"src":"172:16:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"172:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"body":{"id":993,"nodeType":"Block","src":"230:183:5","statements":[{"assignments":[967],"declarations":[{"constant":false,"id":967,"name":"currentOwner","nodeType":"VariableDeclaration","scope":993,"src":"240:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":966,"name":"address","nodeType":"ElementaryTypeName","src":"240:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":978,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":973,"name":"rootNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"300:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":974,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"310:5:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":971,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"283:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"283:16:5","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"283:33:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":970,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"273:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"273:44:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":968,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"263:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":405,"src":"263:9:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"263:55:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"240:78:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":980,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"336:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"360:3:5","subdenomination":null,"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":981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"352:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"352:12:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"336:28:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":985,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"368:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"384:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"384:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"368:26:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"336:58:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[3035,3036],"referencedDeclaration":3035,"src":"328:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"328:67:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":991,"nodeType":"ExpressionStatement","src":"328:67:5"},{"id":992,"nodeType":"PlaceholderStatement","src":"405:1:5"}]},"documentation":null,"id":994,"name":"only_owner","nodeType":"ModifierDefinition","parameters":{"id":965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"name":"label","nodeType":"VariableDeclaration","scope":994,"src":"215:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":963,"name":"bytes32","nodeType":"ElementaryTypeName","src":"215:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"214:15:5"},"src":"195:218:5","visibility":"internal"},{"body":{"id":1009,"nodeType":"Block","src":"617:55:5","statements":[{"expression":{"argumentTypes":null,"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1001,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"627:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1002,"name":"ensAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"633:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"src":"627:13:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":1004,"nodeType":"ExpressionStatement","src":"627:13:5"},{"expression":{"argumentTypes":null,"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1005,"name":"rootNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"650:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1006,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":998,"src":"661:4:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"650:15:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1008,"nodeType":"ExpressionStatement","src":"650:15:5"}]},"documentation":"Constructor.\n@param ensAddr The address of the ENS registry.\n@param node The node that this registrar administers.","id":1010,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":996,"name":"ensAddr","nodeType":"VariableDeclaration","scope":1010,"src":"583:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":995,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"583:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":998,"name":"node","nodeType":"VariableDeclaration","scope":1010,"src":"596:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"596:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"582:27:5"},"returnParameters":{"id":1000,"nodeType":"ParameterList","parameters":[],"src":"617:0:5"},"scope":1030,"src":"571:101:5","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1028,"nodeType":"Block","src":"945:60:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1023,"name":"rootNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"975:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":1024,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"985:5:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":1025,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"992: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":{"argumentTypes":null,"id":1020,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"955:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":370,"src":"955: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":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:43:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1027,"nodeType":"ExpressionStatement","src":"955:43:5"}]},"documentation":"Register a name, or change the owner of an existing registration.\n@param label The hash of the label to register.\n@param owner The address of the new owner.","id":1029,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1017,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"938:5:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1018,"modifierName":{"argumentTypes":null,"id":1016,"name":"only_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"927:10:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"927:17:5"}],"name":"register","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1012,"name":"label","nodeType":"VariableDeclaration","scope":1029,"src":"890:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1011,"name":"bytes32","nodeType":"ElementaryTypeName","src":"890:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":1014,"name":"owner","nodeType":"VariableDeclaration","scope":1029,"src":"905:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1013,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"889:30:5"},"returnParameters":{"id":1019,"nodeType":"ParameterList","parameters":[],"src":"945:0:5"},"scope":1030,"src":"872:133:5","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":1031,"src":"130:877:5"}],"src":"0:1008:5"},"legacyAST":{"absolutePath":"/Users/makoto/work/ens/ens/contracts/FIFSRegistrar.sol","exportedSymbols":{"FIFSRegistrar":[1030]},"id":1031,"nodeType":"SourceUnit","nodes":[{"id":957,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:5"},{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENS.sol","file":"./ENS.sol","id":958,"nodeType":"ImportDirective","scope":1031,"sourceUnit":437,"src":"25:19:5","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"A registrar that allocates subdomains to the first person to claim them.","fullyImplemented":true,"id":1030,"linearizedBaseContracts":[1030],"name":"FIFSRegistrar","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":960,"name":"ens","nodeType":"VariableDeclaration","scope":1030,"src":"159:7:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":959,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"159:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":962,"name":"rootNode","nodeType":"VariableDeclaration","scope":1030,"src":"172:16:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"172:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"body":{"id":993,"nodeType":"Block","src":"230:183:5","statements":[{"assignments":[967],"declarations":[{"constant":false,"id":967,"name":"currentOwner","nodeType":"VariableDeclaration","scope":993,"src":"240:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":966,"name":"address","nodeType":"ElementaryTypeName","src":"240:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":978,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":973,"name":"rootNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"300:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":974,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"310:5:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":971,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"283:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"283:16:5","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"283:33:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":970,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"273:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"273:44:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":968,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"263:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":405,"src":"263:9:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"263:55:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"240:78:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":980,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"336:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"360:3:5","subdenomination":null,"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":981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"352:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"352:12:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"336:28:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":985,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"368:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"384:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"384:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"368:26:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"336:58:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[3035,3036],"referencedDeclaration":3035,"src":"328:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"328:67:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":991,"nodeType":"ExpressionStatement","src":"328:67:5"},{"id":992,"nodeType":"PlaceholderStatement","src":"405:1:5"}]},"documentation":null,"id":994,"name":"only_owner","nodeType":"ModifierDefinition","parameters":{"id":965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"name":"label","nodeType":"VariableDeclaration","scope":994,"src":"215:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":963,"name":"bytes32","nodeType":"ElementaryTypeName","src":"215:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"214:15:5"},"src":"195:218:5","visibility":"internal"},{"body":{"id":1009,"nodeType":"Block","src":"617:55:5","statements":[{"expression":{"argumentTypes":null,"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1001,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"627:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1002,"name":"ensAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"633:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"src":"627:13:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":1004,"nodeType":"ExpressionStatement","src":"627:13:5"},{"expression":{"argumentTypes":null,"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1005,"name":"rootNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"650:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1006,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":998,"src":"661:4:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"650:15:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1008,"nodeType":"ExpressionStatement","src":"650:15:5"}]},"documentation":"Constructor.\n@param ensAddr The address of the ENS registry.\n@param node The node that this registrar administers.","id":1010,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":996,"name":"ensAddr","nodeType":"VariableDeclaration","scope":1010,"src":"583:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":995,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"583:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":998,"name":"node","nodeType":"VariableDeclaration","scope":1010,"src":"596:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"596:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"582:27:5"},"returnParameters":{"id":1000,"nodeType":"ParameterList","parameters":[],"src":"617:0:5"},"scope":1030,"src":"571:101:5","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1028,"nodeType":"Block","src":"945:60:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1023,"name":"rootNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"975:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":1024,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"985:5:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":1025,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"992: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":{"argumentTypes":null,"id":1020,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"955:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":370,"src":"955: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":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:43:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1027,"nodeType":"ExpressionStatement","src":"955:43:5"}]},"documentation":"Register a name, or change the owner of an existing registration.\n@param label The hash of the label to register.\n@param owner The address of the new owner.","id":1029,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1017,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"938:5:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1018,"modifierName":{"argumentTypes":null,"id":1016,"name":"only_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"927:10:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_bytes32_$","typeString":"modifier (bytes32)"}},"nodeType":"ModifierInvocation","src":"927:17:5"}],"name":"register","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1012,"name":"label","nodeType":"VariableDeclaration","scope":1029,"src":"890:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1011,"name":"bytes32","nodeType":"ElementaryTypeName","src":"890:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":1014,"name":"owner","nodeType":"VariableDeclaration","scope":1029,"src":"905:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1013,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"889:30:5"},"returnParameters":{"id":1019,"nodeType":"ParameterList","parameters":[],"src":"945:0:5"},"scope":1030,"src":"872:133:5","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":1031,"src":"130:877:5"}],"src":"0:1008:5"},"compiler":{"name":"solc","version":"0.5.16+commit.9c3226ce.Emscripten.clang"},"networks":{},"schemaVersion":"3.2.0","updatedAt":"2020-06-23T14:47:43.695Z","devdoc":{"methods":{"constructor":{"params":{"ensAddr":"The address of the ENS registry.","node":"The node that this registrar administers."}},"register(bytes32,address)":{"params":{"label":"The hash of the label to register.","owner":"The address of the new owner."}}}},"userdoc":{"methods":{"constructor":"Constructor.","register(bytes32,address)":{"notice":"Register a name, or change the owner of an existing registration."}},"notice":"A registrar that allocates subdomains to the first person to claim them."}} \ No newline at end of file diff --git a/waffle-ens/src/abis/PublicResolver.json b/waffle-ens/src/abis/PublicResolver.json new file mode 100644 index 000000000..bd8f79ba6 --- /dev/null +++ b/waffle-ens/src/abis/PublicResolver.json @@ -0,0 +1 @@ +{"contractName":"PublicResolver","abi":[{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"data","type":"bytes"}],"name":"setDNSRecords","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"key","type":"string"},{"name":"value","type":"string"}],"name":"setText","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"interfaceID","type":"bytes4"}],"name":"interfaceImplementer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"contentTypes","type":"uint256"}],"name":"ABI","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"x","type":"bytes32"},{"name":"y","type":"bytes32"}],"name":"setPubkey","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"hash","type":"bytes"}],"name":"setContenthash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"addr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"name","type":"bytes32"}],"name":"hasDNSRecords","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"key","type":"string"}],"name":"text","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"contentType","type":"uint256"},{"name":"data","type":"bytes"}],"name":"setABI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"coinType","type":"uint256"},{"name":"a","type":"bytes"}],"name":"setAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"name","type":"bytes32"},{"name":"resource","type":"uint16"}],"name":"dnsRecord","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"}],"name":"clearDNSZone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"contenthash","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"pubkey","outputs":[{"name":"x","type":"bytes32"},{"name":"y","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"a","type":"address"}],"name":"setAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"interfaceID","type":"bytes4"},{"name":"implementer","type":"address"}],"name":"setInterface","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"coinType","type":"uint256"}],"name":"addr","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"},{"name":"","type":"address"},{"name":"","type":"address"}],"name":"authorisations","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_ens","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"isAuthorised","type":"bool"}],"name":"AuthorisationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"indexedKey","type":"string"},{"indexed":false,"name":"key","type":"string"}],"name":"TextChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"x","type":"bytes32"},{"indexed":false,"name":"y","type":"bytes32"}],"name":"PubkeyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"name","type":"string"}],"name":"NameChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"interfaceID","type":"bytes4"},{"indexed":false,"name":"implementer","type":"address"}],"name":"InterfaceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"name","type":"bytes"},{"indexed":false,"name":"resource","type":"uint16"},{"indexed":false,"name":"record","type":"bytes"}],"name":"DNSRecordChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"name","type":"bytes"},{"indexed":false,"name":"resource","type":"uint16"}],"name":"DNSRecordDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"}],"name":"DNSZoneCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"hash","type":"bytes"}],"name":"ContenthashChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"coinType","type":"uint256"},{"indexed":false,"name":"newAddress","type":"bytes"}],"name":"AddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"contentType","type":"uint256"}],"name":"ABIChanged","type":"event"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"target","type":"address"},{"name":"isAuthorised","type":"bool"}],"name":"setAuthorisation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"name":"results","type":"bytes[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.8+commit.23d335f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"interfaceImplementer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"target\",\"type\":\"address\"},{\"name\":\"isAuthorised\",\"type\":\"bool\"}],\"name\":\"setAuthorisation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"},{\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"bytes32\"},{\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"name\":\"results\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearDNSZone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"setInterface\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorisations\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_ens\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"isAuthorised\",\"type\":\"bool\"}],\"name\":\"AuthorisationChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"interfaceID\",\"type\":\"bytes4\"},{\"indexed\":false,\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"DNSZoneCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"return\":\"contentType The content type of the return valuedata The ABI data\"},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"return\":\"The associated address.\"},\"clearDNSZone(bytes32)\":{\"params\":{\"node\":\"the namehash of the node for which to clear the zone\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"return\":\"The associated contenthash.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"return\":\"the DNS record in wire format if present, otherwise empty\"},\"hasDNSRecords(bytes32,bytes32)\":{\"params\":{\"name\":\"the namehash of the node for which to check the records\",\"node\":\"the namehash of the node for which to check the records\"}},\"interfaceImplementer(bytes32,bytes4)\":{\"params\":{\"interfaceID\":\"The EIP 168 interface ID to check for.\",\"node\":\"The ENS node to query.\"},\"return\":\"The address that implements this interface, or 0 if the interface is unsupported.\"},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"return\":\"The associated name.\"},\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"return\":\"x, y the X and Y coordinates of the curve point for the public key.\"},\"setABI(bytes32,uint256,bytes)\":{\"params\":{\"contentType\":\"The content type of the ABI\",\"data\":\"The ABI data.\",\"node\":\"The node to update.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setAuthorisation(bytes32,address,bool)\":{\"details\":\"Sets or clears an authorisation. Authorisations are specific to the caller. Any account can set an authorisation for any name, but the authorisation that is checked will be that of the current owner of a name. Thus, transferring a name effectively clears any existing authorisations, and new authorisations can be set in advance of an ownership transfer if desired.\",\"params\":{\"isAuthorised\":\"True if the address should be authorised, or false if it should be deauthorised.\",\"node\":\"The name to change the authorisation on.\",\"target\":\"The address that is to be authorised or deauthorised.\"}},\"setContenthash(bytes32,bytes)\":{\"params\":{\"hash\":\"The contenthash to set\",\"node\":\"The node to update.\"}},\"setDNSRecords(bytes32,bytes)\":{\"params\":{\"data\":\"the DNS wire format records to set\",\"node\":\"the namehash of the node for which to set the records\"}},\"setInterface(bytes32,bytes4,address)\":{\"params\":{\"implementer\":\"The address of a contract that implements this interface for this node.\",\"interfaceID\":\"The EIP 168 interface ID.\",\"node\":\"The node to update.\"}},\"setName(bytes32,string)\":{\"params\":{\"name\":\"The name to set.\",\"node\":\"The node to update.\"}},\"setPubkey(bytes32,bytes32,bytes32)\":{\"params\":{\"node\":\"The ENS node to query\",\"x\":\"the X coordinate of the curve point for the public key.\",\"y\":\"the Y coordinate of the curve point for the public key.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"return\":\"The associated text data.\"}}},\"userdoc\":{\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"clearDNSZone(bytes32)\":{\"notice\":\"Clear all information for a DNS zone.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"hasDNSRecords(bytes32,bytes32)\":{\"notice\":\"Check if a given node has records.\"},\"interfaceImplementer(bytes32,bytes4)\":{\"notice\":\"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP168 and returns `true` for the specified interfaceID, its address will be returned.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"},\"setABI(bytes32,uint256,bytes)\":{\"notice\":\"Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setContenthash(bytes32,bytes)\":{\"notice\":\"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setDNSRecords(bytes32,bytes)\":{\"notice\":\"Set one or more DNS records. Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied: a.example.com IN A 1.2.3.4 a.example.com IN A 5.6.7.8 www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied: a.example.com IN A 1.2.3.4 www.example.com IN CNAME a.example.com. a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\"},\"setInterface(bytes32,bytes4,address)\":{\"notice\":\"Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"},\"setPubkey(bytes32,bytes32,bytes32)\":{\"notice\":\"Sets the SECP256k1 public key associated with an ENS node.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"}},\"notice\":\"A simple resolver anyone can use; only allows the owner of a node to set its address.\"}},\"settings\":{\"compilationTarget\":{\"/home/user/Dropbox/projects/resolvers/contracts/PublicResolver.sol\":\"PublicResolver\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/user/Dropbox/projects/resolvers/contracts/PublicResolver.sol\":{\"keccak256\":\"0xefbe75eae88d73e4db56bc22f72fbf157d027caf2d20644eb99298f04b27fa5f\",\"urls\":[\"bzzr://4cb74b326c91262a10141c4c2dfe36a303793fbb300f502a0f3e2fbfbb468c58\"]},\"/home/user/Dropbox/projects/resolvers/contracts/ResolverBase.sol\":{\"keccak256\":\"0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8\",\"urls\":[\"bzzr://81e5565403a67f558d12c787f53f40ff19a5da99c648f8a4f99f2caa449ca0e6\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/ABIResolver.sol\":{\"keccak256\":\"0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f\",\"urls\":[\"bzzr://9fdf58339517baeca57889519a4bb2f30a010f2f4262771e6f5de4374fc436b1\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/AddrResolver.sol\":{\"keccak256\":\"0xbe84f840b10f6ddc3d695d5905fe4034569c646bdf56b1367c16271aa92071c6\",\"urls\":[\"bzzr://c97941ee4075d43abe371cc52f3bfa018d7dc93c7cfbb72da565ecaa72996381\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/ContentHashResolver.sol\":{\"keccak256\":\"0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc\",\"urls\":[\"bzzr://c80ec35a145dd4b853e1e04b32763843313be216462a4993d28d5b489a6912f7\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol\":{\"keccak256\":\"0x51534f5ebdcfda403b1a935f256e7f27d16b490e5b023b6e57877973daf9a4d4\",\"urls\":[\"bzzr://a81c189814102f6debd761795650d94694225b7486d490faf7d5fb6e0704ed28\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/InterfaceResolver.sol\":{\"keccak256\":\"0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41\",\"urls\":[\"bzzr://0d539232d308722b6a434ed5e9a22b0c4cb849c641b6d0739f2f83e566cb59f1\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/NameResolver.sol\":{\"keccak256\":\"0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16\",\"urls\":[\"bzzr://a4a8988916719c4976bb0caf1cff3bdee3c94ae693b57970f6b925124cff38ee\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/PubkeyResolver.sol\":{\"keccak256\":\"0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a\",\"urls\":[\"bzzr://1caaa8668f536f654f4e6d68129ab5091e0ed5c72e0e70216b82d0bb9e7cd86f\"]},\"/home/user/Dropbox/projects/resolvers/contracts/profiles/TextResolver.sol\":{\"keccak256\":\"0x1feb20d9466c52f471c57344c1e3792e2c69b24ab9d7f7a4de6e49912abc75bb\",\"urls\":[\"bzzr://25ce3b4bf68f29d54e8916c0682b746a9e15f14bcccfc76136fc17ae2c902898\"]},\"@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0x1264adbd06f6e05b04539bb225063a988b7fa90343d068de60cdde6cfb6fa92d\",\"urls\":[\"bzzr://8f1cb39e242b73bb7fac1f48bf0380ccccad14f06aae9cf4f87329cc78186122\"]},\"@ensdomains/dnssec-oracle/contracts/BytesUtils.sol\":{\"keccak256\":\"0x4014e689ef4a36cbf7103d88286abd2a7c560c2a7af99a561c33c61bc78be27a\",\"urls\":[\"bzzr://adf984996598f1e0d446eea1eda14ed2c49ab86a4ea1ae837cf4f9d99556b9c2\"]},\"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\":{\"keccak256\":\"0x5135591043cf38413b19f93d16f189f0f8b50b01b78642fb764635d9790cc7ca\",\"urls\":[\"bzzr://7e3a0111306a7c5640e213da22bcfac1e42b813e8d4d99ef7ea33c09747049fc\"]},\"@ensdomains/ens/contracts/ENS.sol\":{\"keccak256\":\"0xe688db01c0b974f8ff8565557f7fe81aa1f209c1497ec1e74536241f4cc11f08\",\"urls\":[\"bzzr://04aa083550728a1da54d9acf874f4fca77cc3afef81c57f1ec19be78af05019a\"]}},\"version\":1}","bytecode":"0x60806040523480156200001157600080fd5b506040516020806200386d833981018060405262000033919081019062000092565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000120565b6000815190506200008c8162000106565b92915050565b600060208284031215620000a557600080fd5b6000620000b5848285016200007b565b91505092915050565b6000620000cb82620000e6565b9050919050565b6000620000df82620000be565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011181620000d2565b81146200011d57600080fd5b50565b61373d80620001306000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063691f3431116100c3578063bc1c58d11161007c578063bc1c58d11461040a578063c86902331461043a578063d5fa2b001461046b578063e59d895d14610487578063f1cb7e06146104a3578063f86bc879146104d357610158565b8063691f34311461032657806377372213146103565780638b95dd7114610372578063a8fa56821461038e578063ac9650d8146103be578063ad5780af146103ee57610158565b8063304e6ade11610115578063304e6ade146102425780633b3b57de1461025e5780633e9ce7941461028e5780634cbf6ba4146102aa57806359d1d43c146102da578063623195b01461030a57610158565b806301ffc9a71461015d5780630af179d71461018d57806310f13a8c146101a9578063124a319c146101c55780632203ab56146101f557806329cd62ea14610226575b600080fd5b61017760048036036101729190810190612ecd565b610503565b60405161018491906132ae565b60405180910390f35b6101a760048036036101a29190810190612c85565b610564565b005b6101c360048036036101be9190810190612d35565b610792565b005b6101df60048036036101da9190810190612bfa565b610840565b6040516101ec919061323b565b60405180910390f35b61020f600480360361020a9190810190612dbe565b610c2b565b60405161021d929190613429565b60405180910390f35b610240600480360361023b9190810190612b5c565b610d7a565b005b61025c60048036036102579190810190612c85565b610e0c565b005b61027860048036036102739190810190612a1d565b610e82565b6040516102859190613271565b60405180910390f35b6102a860048036036102a39190810190612ad1565b610eb9565b005b6102c460048036036102bf9190810190612b20565b610fc9565b6040516102d191906132ae565b60405180910390f35b6102f460048036036102ef9190810190612cdd565b611031565b6040516103019190613407565b60405180910390f35b610324600480360361031f9190810190612dfa565b611106565b005b610340600480360361033b9190810190612a1d565b611193565b60405161034d9190613407565b60405180910390f35b610370600480360361036b9190810190612cdd565b611248565b005b61038c60048036036103879190810190612e66565b6112be565b005b6103a860048036036103a39190810190612bab565b611394565b6040516103b5919061334c565b60405180910390f35b6103d860048036036103d391908101906129d8565b611499565b6040516103e5919061328c565b60405180910390f35b61040860048036036104039190810190612a1d565b6115ef565b005b610424600480360361041f9190810190612a1d565b611656565b604051610431919061334c565b60405180910390f35b610454600480360361044f9190810190612a1d565b61170b565b6040516104629291906132e4565b60405180910390f35b61048560048036036104809190810190612a46565b611745565b005b6104a1600480360361049c9190810190612c36565b611771565b005b6104bd60048036036104b89190810190612dbe565b611883565b6040516104ca919061334c565b60405180910390f35b6104ed60048036036104e89190810190612a82565b61194a565b6040516104fa91906132ae565b60405180910390f35b60006359d1d43c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061055d575061055c82611986565b5b9050919050565b8261056e816119e7565b61057757600080fd5b60008090506000809050606080600061058e6125b2565b6105e660008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611b7090919063ffffffff16565b90505b6105f281611b9a565b61071f5760008661ffff16141561064e578060400151955061061381611bb0565b93508360405160200161062691906131f6565b60405160208183030381529060405280519060200120915061064781611be7565b9250610711565b606061065982611bb0565b9050816040015161ffff168761ffff1614158061068657506106848186611c1790919063ffffffff16565b155b1561070f576106e88b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a8b88602001510360008b5114611c3e565b81604001519650816020015195508094508480519060200120925061070c82611be7565b93505b505b61071a81611f6e565b6105e9565b50600083511115610787576107868984878b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088898e8e9050036000895114611c3e565b5b505050505050505050565b8461079c816119e7565b6107a557600080fd5b82826009600089815260200190815260200160002087876040516107ca92919061320d565b908152602001604051809103902091906107e59291906125fd565b5084846040516107f692919061320d565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516108309291906133e3565b60405180910390a3505050505050565b600080600660008581526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109055780915050610c25565b600061091085610e82565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561095257600092505050610c25565b600060608273ffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b604051602401610985919061330d565b6040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610a0f91906131f6565b600060405180830381855afa9150503d8060008114610a4a576040519150601f19603f3d011682016040523d82523d6000602084013e610a4f565b606091505b5091509150811580610a62575060208151105b80610aa95750600060f81b81601f81518110610a7a57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15610abb576000945050505050610c25565b8273ffffffffffffffffffffffffffffffffffffffff1686604051602401610ae3919061330d565b6040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610b6d91906131f6565b600060405180830381855afa9150503d8060008114610ba8576040519150601f19603f3d011682016040523d82523d6000602084013e610bad565b606091505b508092508193505050811580610bc4575060208151105b80610c0b5750600060f81b81601f81518110610bdc57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15610c1d576000945050505050610c25565b829450505050505b92915050565b60006060600080600086815260200190815260200160002090506000600190505b848111610d5757600085821614158015610c8c57506000826000838152602001908152602001600020805460018160011615610100020316600290049050115b15610d4b5780826000838152602001908152602001600020808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d395780601f10610d0e57610100808354040283529160200191610d39565b820191906000526020600020905b815481529060010190602001808311610d1c57829003601f168201915b50505050509050935093505050610d73565b600181901b9050610c4c565b5060006040518060200160405280600081525081915092509250505b9250929050565b82610d84816119e7565b610d8d57600080fd5b604051806040016040528084815260200183815250600860008681526020019081526020016000206000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051610dfe9291906132e4565b60405180910390a250505050565b82610e16816119e7565b610e1f57600080fd5b8282600260008781526020019081526020016000209190610e4192919061267d565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610e74929190613328565b60405180910390a250505050565b60006060610e9183603c611883565b9050600081511415610ea7576000915050610eb4565b610eb081612082565b9150505b919050565b80600b600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df84604051610fbc91906132ae565b60405180910390a4505050565b60008060056000858152602001908152602001600020600060036000878152602001908152602001600020548152602001908152602001600020600084815260200190815260200160002060009054906101000a900461ffff1661ffff161415905092915050565b606060096000858152602001908152602001600020838360405161105692919061320d565b90815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110f85780601f106110cd576101008083540402835291602001916110f8565b820191906000526020600020905b8154815290600101906020018083116110db57829003601f168201915b505050505090509392505050565b83611110816119e7565b61111957600080fd5b60008460018603161461112b57600080fd5b82826000808881526020019081526020016000206000878152602001908152602001600020919061115d92919061267d565b5083857faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a35050505050565b6060600760008381526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561123c5780601f106112115761010080835404028352916020019161123c565b820191906000526020600020905b81548152906001019060200180831161121f57829003601f168201915b50505050509050919050565b82611252816119e7565b61125b57600080fd5b828260076000878152602001908152602001600020919061127d9291906125fd565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f784846040516112b09291906133e3565b60405180910390a250505050565b826112c8816119e7565b6112d157600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051611303929190613429565b60405180910390a2603c83141561135557837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd261133f84612082565b60405161134c9190613256565b60405180910390a25b81600160008681526020019081526020016000206000858152602001908152602001600020908051906020019061138d9291906126fd565b5050505050565b606060046000858152602001908152602001600020600060036000878152602001908152602001600020548152602001908152602001600020600084815260200190815260200160002060008361ffff1661ffff1681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561148b5780601f106114605761010080835404028352916020019161148b565b820191906000526020600020905b81548152906001019060200180831161146e57829003601f168201915b505050505090509392505050565b6060828290506040519080825280602002602001820160405280156114d257816020015b60608152602001906001900390816114bd5790505b50905060008090505b838390508110156115e557600060603073ffffffffffffffffffffffffffffffffffffffff1686868581811061150d57fe5b905060200281018035600160200383360303811261152a57600080fd5b8083019250508135905060208201915067ffffffffffffffff81111561154f57600080fd5b60018102360382131561156157600080fd5b60405161156f9291906131dd565b600060405180830381855af49150503d80600081146115aa576040519150601f19603f3d011682016040523d82523d6000602084013e6115af565b606091505b5091509150816115be57600080fd5b808484815181106115cb57fe5b6020026020010181905250505080806001019150506114db565b5080905092915050565b806115f9816119e7565b61160257600080fd5b6003600083815260200190815260200160002060008154809291906001019190505550817fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198360405160405180910390a25050565b6060600260008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116ff5780601f106116d4576101008083540402835291602001916116ff565b820191906000526020600020905b8154815290600101906020018083116116e257829003601f168201915b50505050509050919050565b6000806008600084815260200190815260200160002060000154600860008581526020019081526020016000206001015491509150915091565b8161174f816119e7565b61175857600080fd5b61176c83603c611767856120a5565b6112be565b505050565b8261177b816119e7565b61178457600080fd5b81600660008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916847f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa84604051611875919061323b565b60405180910390a350505050565b60606001600084815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561193d5780601f106119125761010080835404028352916020019161193d565b820191906000526020600020905b81548152906001019060200180831161192057829003601f168201915b5050505050905092915050565b600b602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b600063c869023360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119e057506119df826120f0565b5b9050919050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3846040518263ffffffff1660e01b8152600401611a4591906132c9565b60206040518083038186803b158015611a5d57600080fd5b505afa158015611a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a9591908101906129af565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b685750600b600084815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b915050919050565b611b786125b2565b828160000181905250818160c0018181525050611b9481611f6e565b92915050565b6000816000015151826020015110159050919050565b6060611be08260200151611bcc84600001518560200151612151565b84600001516121ac9092919063ffffffff16565b9050919050565b6060611c108260a001518360a001518460c001510384600001516121ac9092919063ffffffff16565b9050919050565b600081518351148015611c365750611c35836000846000875161221f565b5b905092915050565b6000600360008981526020019081526020016000205490506000878051906020012090506060611c798686896121ac9092919063ffffffff16565b90508315611dee576000600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff16815260200190815260200160002080546001816001161561010002031660029004905014611d5557600560008b815260200190815260200160002060008481526020019081526020016000206000838152602001908152602001600020600081819054906101000a900461ffff16809291906001900391906101000a81548161ffff021916908361ffff160217905550505b600460008b81526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060008961ffff1661ffff1681526020019081526020016000206000611daf919061277d565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611de192919061336e565b60405180910390a2611f62565b6000600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff1681526020019081526020016000208054600181600116156101000203166002900490501415611ec257600560008b815260200190815260200160002060008481526020019081526020016000206000838152602001908152602001600020600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff160217905550505b80600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff1681526020019081526020016000209080519060200190611f249291906126fd565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611f599392919061339e565b60405180910390a25b50505050505050505050565b8060c00151816020018181525050806000015151816020015110611f915761207f565b6000611fa582600001518360200151612151565b8260200151019050611fc481836000015161224390919063ffffffff16565b826040019061ffff16908161ffff1681525050600281019050611ff481836000015161224390919063ffffffff16565b826060019061ffff16908161ffff168152505060028101905061202481836000015161226990919063ffffffff16565b826080019063ffffffff16908163ffffffff1681525050600481019050600061205a82846000015161224390919063ffffffff16565b61ffff169050600282019150818360a00181815250508082018360c001818152505050505b50565b6000601482511461209257600080fd5b600c6101000a6020830151049050919050565b606060146040519080825280601f01601f1916602001820160405280156120db5781602001600182028038833980820191505090505b509050600c6101000a82026020820152919050565b600063691f343160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061214a575061214982612291565b5b9050919050565b6000808290505b6001156121a0578351811061216957fe5b600061217e82866122fe90919063ffffffff16565b60ff1690506001810182019150600081141561219a57506121a0565b50612158565b82810391505092915050565b6060835182840111156121be57600080fd5b6060826040519080825280601f01601f1916602001820160405280156121f35781602001600182028038833980820191505090505b5090506000806020830191508560208801019050612212828287612322565b8293505050509392505050565b600061222c84848461236b565b61223787878561236b565b14905095945050505050565b6000825160028301111561225657600080fd5b61ffff8260028501015116905092915050565b6000825160048301111561227c57600080fd5b63ffffffff8260048501015116905092915050565b600060405161229f90613226565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806122f757506122f68261238e565b5b9050919050565b600082828151811061230c57fe5b602001015160f81c60f81b60f81c905092915050565b5b602081106123465781518352602083019250602082019150602081039050612323565b60006001826020036101000a0390508019835116818551168181178652505050505050565b60008351828401111561237d57600080fd5b818360208601012090509392505050565b600063a8fa568260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806123e857506123e7826123ef565b5b9050919050565b600063bc1c58d160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612449575061244882612450565b5b9050919050565b6000633b3b57de60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806124e9575063f1cb7e0660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806124f957506124f882612500565b5b9050919050565b6000632203ab5660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061255a575061255982612561565b5b9050919050565b60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061263e57803560ff191683800117855561266c565b8280016001018555821561266c579182015b8281111561266b578235825591602001919060010190612650565b5b50905061267991906127c5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106126be57803560ff19168380011785556126ec565b828001600101855582156126ec579182015b828111156126eb5782358255916020019190600101906126d0565b5b5090506126f991906127c5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061273e57805160ff191683800117855561276c565b8280016001018555821561276c579182015b8281111561276b578251825591602001919060010190612750565b5b50905061277991906127c5565b5090565b50805460018160011615610100020316600290046000825580601f106127a357506127c2565b601f0160209004906000526020600020908101906127c191906127c5565b5b50565b6127e791905b808211156127e35760008160009055506001016127cb565b5090565b90565b6000813590506127f981613679565b92915050565b60008151905061280e81613679565b92915050565b60008083601f84011261282657600080fd5b8235905067ffffffffffffffff81111561283f57600080fd5b60208301915083602082028301111561285757600080fd5b9250929050565b60008135905061286d81613690565b92915050565b600081359050612882816136a7565b92915050565b600081359050612897816136be565b92915050565b60008083601f8401126128af57600080fd5b8235905067ffffffffffffffff8111156128c857600080fd5b6020830191508360018202830111156128e057600080fd5b9250929050565b600082601f8301126128f857600080fd5b813561290b61290682613486565b613459565b9150808252602083016020830185838301111561292757600080fd5b612932838284613626565b50505092915050565b60008083601f84011261294d57600080fd5b8235905067ffffffffffffffff81111561296657600080fd5b60208301915083600182028301111561297e57600080fd5b9250929050565b600081359050612994816136d5565b92915050565b6000813590506129a9816136ec565b92915050565b6000602082840312156129c157600080fd5b60006129cf848285016127ff565b91505092915050565b600080602083850312156129eb57600080fd5b600083013567ffffffffffffffff811115612a0557600080fd5b612a1185828601612814565b92509250509250929050565b600060208284031215612a2f57600080fd5b6000612a3d84828501612873565b91505092915050565b60008060408385031215612a5957600080fd5b6000612a6785828601612873565b9250506020612a78858286016127ea565b9150509250929050565b600080600060608486031215612a9757600080fd5b6000612aa586828701612873565b9350506020612ab6868287016127ea565b9250506040612ac7868287016127ea565b9150509250925092565b600080600060608486031215612ae657600080fd5b6000612af486828701612873565b9350506020612b05868287016127ea565b9250506040612b168682870161285e565b9150509250925092565b60008060408385031215612b3357600080fd5b6000612b4185828601612873565b9250506020612b5285828601612873565b9150509250929050565b600080600060608486031215612b7157600080fd5b6000612b7f86828701612873565b9350506020612b9086828701612873565b9250506040612ba186828701612873565b9150509250925092565b600080600060608486031215612bc057600080fd5b6000612bce86828701612873565b9350506020612bdf86828701612873565b9250506040612bf086828701612985565b9150509250925092565b60008060408385031215612c0d57600080fd5b6000612c1b85828601612873565b9250506020612c2c85828601612888565b9150509250929050565b600080600060608486031215612c4b57600080fd5b6000612c5986828701612873565b9350506020612c6a86828701612888565b9250506040612c7b868287016127ea565b9150509250925092565b600080600060408486031215612c9a57600080fd5b6000612ca886828701612873565b935050602084013567ffffffffffffffff811115612cc557600080fd5b612cd18682870161289d565b92509250509250925092565b600080600060408486031215612cf257600080fd5b6000612d0086828701612873565b935050602084013567ffffffffffffffff811115612d1d57600080fd5b612d298682870161293b565b92509250509250925092565b600080600080600060608688031215612d4d57600080fd5b6000612d5b88828901612873565b955050602086013567ffffffffffffffff811115612d7857600080fd5b612d848882890161293b565b9450945050604086013567ffffffffffffffff811115612da357600080fd5b612daf8882890161293b565b92509250509295509295909350565b60008060408385031215612dd157600080fd5b6000612ddf85828601612873565b9250506020612df08582860161299a565b9150509250929050565b60008060008060608587031215612e1057600080fd5b6000612e1e87828801612873565b9450506020612e2f8782880161299a565b935050604085013567ffffffffffffffff811115612e4c57600080fd5b612e588782880161289d565b925092505092959194509250565b600080600060608486031215612e7b57600080fd5b6000612e8986828701612873565b9350506020612e9a8682870161299a565b925050604084013567ffffffffffffffff811115612eb757600080fd5b612ec3868287016128e7565b9150509250925092565b600060208284031215612edf57600080fd5b6000612eed84828501612888565b91505092915050565b6000612f028383613095565b905092915050565b612f13816135f0565b82525050565b612f2281613564565b82525050565b612f3181613552565b82525050565b6000612f42826134bf565b612f4c81856134f8565b935083602082028501612f5e856134b2565b8060005b85811015612f9a5784840389528151612f7b8582612ef6565b9450612f86836134eb565b925060208a01995050600181019050612f62565b50829750879550505050505092915050565b612fb581613576565b82525050565b612fc481613582565b82525050565b612fd38161358c565b82525050565b6000612fe5838561351a565b9350612ff2838584613626565b612ffb83613668565b840190509392505050565b6000613012838561352b565b935061301f838584613626565b82840190509392505050565b6000613036826134d5565b613040818561351a565b9350613050818560208601613635565b61305981613668565b840191505092915050565b600061306f826134d5565b613079818561352b565b9350613089818560208601613635565b80840191505092915050565b60006130a0826134ca565b6130aa8185613509565b93506130ba818560208601613635565b6130c381613668565b840191505092915050565b60006130da8385613536565b93506130e7838584613626565b6130f083613668565b840190509392505050565b60006131078385613547565b9350613114838584613626565b82840190509392505050565b600061312b826134e0565b6131358185613536565b9350613145818560208601613635565b61314e81613668565b840191505092915050565b6000613166602483613547565b91507f696e74657266616365496d706c656d656e74657228627974657333322c62797460008301527f65733429000000000000000000000000000000000000000000000000000000006020830152602482019050919050565b6131c8816135b8565b82525050565b6131d7816135e6565b82525050565b60006131ea828486613006565b91508190509392505050565b60006132028284613064565b915081905092915050565b600061321a8284866130fb565b91508190509392505050565b600061323182613159565b9150819050919050565b60006020820190506132506000830184612f28565b92915050565b600060208201905061326b6000830184612f0a565b92915050565b60006020820190506132866000830184612f19565b92915050565b600060208201905081810360008301526132a68184612f37565b905092915050565b60006020820190506132c36000830184612fac565b92915050565b60006020820190506132de6000830184612fbb565b92915050565b60006040820190506132f96000830185612fbb565b6133066020830184612fbb565b9392505050565b60006020820190506133226000830184612fca565b92915050565b60006020820190508181036000830152613343818486612fd9565b90509392505050565b60006020820190508181036000830152613366818461302b565b905092915050565b60006040820190508181036000830152613388818561302b565b905061339760208301846131bf565b9392505050565b600060608201905081810360008301526133b8818661302b565b90506133c760208301856131bf565b81810360408301526133d9818461302b565b9050949350505050565b600060208201905081810360008301526133fe8184866130ce565b90509392505050565b600060208201905081810360008301526134218184613120565b905092915050565b600060408201905061343e60008301856131ce565b8181036020830152613450818461302b565b90509392505050565b6000604051905081810181811067ffffffffffffffff8211171561347c57600080fd5b8060405250919050565b600067ffffffffffffffff82111561349d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061355d826135c6565b9050919050565b600061356f826135c6565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006135fb82613602565b9050919050565b600061360d82613614565b9050919050565b600061361f826135c6565b9050919050565b82818337600083830152505050565b60005b83811015613653578082015181840152602081019050613638565b83811115613662576000848401525b50505050565b6000601f19601f8301169050919050565b61368281613552565b811461368d57600080fd5b50565b61369981613576565b81146136a457600080fd5b50565b6136b081613582565b81146136bb57600080fd5b50565b6136c78161358c565b81146136d257600080fd5b50565b6136de816135b8565b81146136e957600080fd5b50565b6136f5816135e6565b811461370057600080fd5b5056fea265627a7a7230582049ebf27fa2f4353ae0dc98302f101fe3256ef5930b91c52222dcf860d94f3c326c6578706572696d656e74616cf50037","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063691f3431116100c3578063bc1c58d11161007c578063bc1c58d11461040a578063c86902331461043a578063d5fa2b001461046b578063e59d895d14610487578063f1cb7e06146104a3578063f86bc879146104d357610158565b8063691f34311461032657806377372213146103565780638b95dd7114610372578063a8fa56821461038e578063ac9650d8146103be578063ad5780af146103ee57610158565b8063304e6ade11610115578063304e6ade146102425780633b3b57de1461025e5780633e9ce7941461028e5780634cbf6ba4146102aa57806359d1d43c146102da578063623195b01461030a57610158565b806301ffc9a71461015d5780630af179d71461018d57806310f13a8c146101a9578063124a319c146101c55780632203ab56146101f557806329cd62ea14610226575b600080fd5b61017760048036036101729190810190612ecd565b610503565b60405161018491906132ae565b60405180910390f35b6101a760048036036101a29190810190612c85565b610564565b005b6101c360048036036101be9190810190612d35565b610792565b005b6101df60048036036101da9190810190612bfa565b610840565b6040516101ec919061323b565b60405180910390f35b61020f600480360361020a9190810190612dbe565b610c2b565b60405161021d929190613429565b60405180910390f35b610240600480360361023b9190810190612b5c565b610d7a565b005b61025c60048036036102579190810190612c85565b610e0c565b005b61027860048036036102739190810190612a1d565b610e82565b6040516102859190613271565b60405180910390f35b6102a860048036036102a39190810190612ad1565b610eb9565b005b6102c460048036036102bf9190810190612b20565b610fc9565b6040516102d191906132ae565b60405180910390f35b6102f460048036036102ef9190810190612cdd565b611031565b6040516103019190613407565b60405180910390f35b610324600480360361031f9190810190612dfa565b611106565b005b610340600480360361033b9190810190612a1d565b611193565b60405161034d9190613407565b60405180910390f35b610370600480360361036b9190810190612cdd565b611248565b005b61038c60048036036103879190810190612e66565b6112be565b005b6103a860048036036103a39190810190612bab565b611394565b6040516103b5919061334c565b60405180910390f35b6103d860048036036103d391908101906129d8565b611499565b6040516103e5919061328c565b60405180910390f35b61040860048036036104039190810190612a1d565b6115ef565b005b610424600480360361041f9190810190612a1d565b611656565b604051610431919061334c565b60405180910390f35b610454600480360361044f9190810190612a1d565b61170b565b6040516104629291906132e4565b60405180910390f35b61048560048036036104809190810190612a46565b611745565b005b6104a1600480360361049c9190810190612c36565b611771565b005b6104bd60048036036104b89190810190612dbe565b611883565b6040516104ca919061334c565b60405180910390f35b6104ed60048036036104e89190810190612a82565b61194a565b6040516104fa91906132ae565b60405180910390f35b60006359d1d43c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061055d575061055c82611986565b5b9050919050565b8261056e816119e7565b61057757600080fd5b60008090506000809050606080600061058e6125b2565b6105e660008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611b7090919063ffffffff16565b90505b6105f281611b9a565b61071f5760008661ffff16141561064e578060400151955061061381611bb0565b93508360405160200161062691906131f6565b60405160208183030381529060405280519060200120915061064781611be7565b9250610711565b606061065982611bb0565b9050816040015161ffff168761ffff1614158061068657506106848186611c1790919063ffffffff16565b155b1561070f576106e88b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a8b88602001510360008b5114611c3e565b81604001519650816020015195508094508480519060200120925061070c82611be7565b93505b505b61071a81611f6e565b6105e9565b50600083511115610787576107868984878b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088898e8e9050036000895114611c3e565b5b505050505050505050565b8461079c816119e7565b6107a557600080fd5b82826009600089815260200190815260200160002087876040516107ca92919061320d565b908152602001604051809103902091906107e59291906125fd565b5084846040516107f692919061320d565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516108309291906133e3565b60405180910390a3505050505050565b600080600660008581526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109055780915050610c25565b600061091085610e82565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561095257600092505050610c25565b600060608273ffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b604051602401610985919061330d565b6040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610a0f91906131f6565b600060405180830381855afa9150503d8060008114610a4a576040519150601f19603f3d011682016040523d82523d6000602084013e610a4f565b606091505b5091509150811580610a62575060208151105b80610aa95750600060f81b81601f81518110610a7a57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15610abb576000945050505050610c25565b8273ffffffffffffffffffffffffffffffffffffffff1686604051602401610ae3919061330d565b6040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610b6d91906131f6565b600060405180830381855afa9150503d8060008114610ba8576040519150601f19603f3d011682016040523d82523d6000602084013e610bad565b606091505b508092508193505050811580610bc4575060208151105b80610c0b5750600060f81b81601f81518110610bdc57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15610c1d576000945050505050610c25565b829450505050505b92915050565b60006060600080600086815260200190815260200160002090506000600190505b848111610d5757600085821614158015610c8c57506000826000838152602001908152602001600020805460018160011615610100020316600290049050115b15610d4b5780826000838152602001908152602001600020808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d395780601f10610d0e57610100808354040283529160200191610d39565b820191906000526020600020905b815481529060010190602001808311610d1c57829003601f168201915b50505050509050935093505050610d73565b600181901b9050610c4c565b5060006040518060200160405280600081525081915092509250505b9250929050565b82610d84816119e7565b610d8d57600080fd5b604051806040016040528084815260200183815250600860008681526020019081526020016000206000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051610dfe9291906132e4565b60405180910390a250505050565b82610e16816119e7565b610e1f57600080fd5b8282600260008781526020019081526020016000209190610e4192919061267d565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610e74929190613328565b60405180910390a250505050565b60006060610e9183603c611883565b9050600081511415610ea7576000915050610eb4565b610eb081612082565b9150505b919050565b80600b600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df84604051610fbc91906132ae565b60405180910390a4505050565b60008060056000858152602001908152602001600020600060036000878152602001908152602001600020548152602001908152602001600020600084815260200190815260200160002060009054906101000a900461ffff1661ffff161415905092915050565b606060096000858152602001908152602001600020838360405161105692919061320d565b90815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110f85780601f106110cd576101008083540402835291602001916110f8565b820191906000526020600020905b8154815290600101906020018083116110db57829003601f168201915b505050505090509392505050565b83611110816119e7565b61111957600080fd5b60008460018603161461112b57600080fd5b82826000808881526020019081526020016000206000878152602001908152602001600020919061115d92919061267d565b5083857faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a35050505050565b6060600760008381526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561123c5780601f106112115761010080835404028352916020019161123c565b820191906000526020600020905b81548152906001019060200180831161121f57829003601f168201915b50505050509050919050565b82611252816119e7565b61125b57600080fd5b828260076000878152602001908152602001600020919061127d9291906125fd565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f784846040516112b09291906133e3565b60405180910390a250505050565b826112c8816119e7565b6112d157600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051611303929190613429565b60405180910390a2603c83141561135557837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd261133f84612082565b60405161134c9190613256565b60405180910390a25b81600160008681526020019081526020016000206000858152602001908152602001600020908051906020019061138d9291906126fd565b5050505050565b606060046000858152602001908152602001600020600060036000878152602001908152602001600020548152602001908152602001600020600084815260200190815260200160002060008361ffff1661ffff1681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561148b5780601f106114605761010080835404028352916020019161148b565b820191906000526020600020905b81548152906001019060200180831161146e57829003601f168201915b505050505090509392505050565b6060828290506040519080825280602002602001820160405280156114d257816020015b60608152602001906001900390816114bd5790505b50905060008090505b838390508110156115e557600060603073ffffffffffffffffffffffffffffffffffffffff1686868581811061150d57fe5b905060200281018035600160200383360303811261152a57600080fd5b8083019250508135905060208201915067ffffffffffffffff81111561154f57600080fd5b60018102360382131561156157600080fd5b60405161156f9291906131dd565b600060405180830381855af49150503d80600081146115aa576040519150601f19603f3d011682016040523d82523d6000602084013e6115af565b606091505b5091509150816115be57600080fd5b808484815181106115cb57fe5b6020026020010181905250505080806001019150506114db565b5080905092915050565b806115f9816119e7565b61160257600080fd5b6003600083815260200190815260200160002060008154809291906001019190505550817fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198360405160405180910390a25050565b6060600260008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116ff5780601f106116d4576101008083540402835291602001916116ff565b820191906000526020600020905b8154815290600101906020018083116116e257829003601f168201915b50505050509050919050565b6000806008600084815260200190815260200160002060000154600860008581526020019081526020016000206001015491509150915091565b8161174f816119e7565b61175857600080fd5b61176c83603c611767856120a5565b6112be565b505050565b8261177b816119e7565b61178457600080fd5b81600660008681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916847f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa84604051611875919061323b565b60405180910390a350505050565b60606001600084815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561193d5780601f106119125761010080835404028352916020019161193d565b820191906000526020600020905b81548152906001019060200180831161192057829003601f168201915b5050505050905092915050565b600b602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b600063c869023360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119e057506119df826120f0565b5b9050919050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3846040518263ffffffff1660e01b8152600401611a4591906132c9565b60206040518083038186803b158015611a5d57600080fd5b505afa158015611a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a9591908101906129af565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b685750600b600084815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b915050919050565b611b786125b2565b828160000181905250818160c0018181525050611b9481611f6e565b92915050565b6000816000015151826020015110159050919050565b6060611be08260200151611bcc84600001518560200151612151565b84600001516121ac9092919063ffffffff16565b9050919050565b6060611c108260a001518360a001518460c001510384600001516121ac9092919063ffffffff16565b9050919050565b600081518351148015611c365750611c35836000846000875161221f565b5b905092915050565b6000600360008981526020019081526020016000205490506000878051906020012090506060611c798686896121ac9092919063ffffffff16565b90508315611dee576000600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff16815260200190815260200160002080546001816001161561010002031660029004905014611d5557600560008b815260200190815260200160002060008481526020019081526020016000206000838152602001908152602001600020600081819054906101000a900461ffff16809291906001900391906101000a81548161ffff021916908361ffff160217905550505b600460008b81526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060008961ffff1661ffff1681526020019081526020016000206000611daf919061277d565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611de192919061336e565b60405180910390a2611f62565b6000600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff1681526020019081526020016000208054600181600116156101000203166002900490501415611ec257600560008b815260200190815260200160002060008481526020019081526020016000206000838152602001908152602001600020600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff160217905550505b80600460008c81526020019081526020016000206000858152602001908152602001600020600084815260200190815260200160002060008a61ffff1661ffff1681526020019081526020016000209080519060200190611f249291906126fd565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611f599392919061339e565b60405180910390a25b50505050505050505050565b8060c00151816020018181525050806000015151816020015110611f915761207f565b6000611fa582600001518360200151612151565b8260200151019050611fc481836000015161224390919063ffffffff16565b826040019061ffff16908161ffff1681525050600281019050611ff481836000015161224390919063ffffffff16565b826060019061ffff16908161ffff168152505060028101905061202481836000015161226990919063ffffffff16565b826080019063ffffffff16908163ffffffff1681525050600481019050600061205a82846000015161224390919063ffffffff16565b61ffff169050600282019150818360a00181815250508082018360c001818152505050505b50565b6000601482511461209257600080fd5b600c6101000a6020830151049050919050565b606060146040519080825280601f01601f1916602001820160405280156120db5781602001600182028038833980820191505090505b509050600c6101000a82026020820152919050565b600063691f343160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061214a575061214982612291565b5b9050919050565b6000808290505b6001156121a0578351811061216957fe5b600061217e82866122fe90919063ffffffff16565b60ff1690506001810182019150600081141561219a57506121a0565b50612158565b82810391505092915050565b6060835182840111156121be57600080fd5b6060826040519080825280601f01601f1916602001820160405280156121f35781602001600182028038833980820191505090505b5090506000806020830191508560208801019050612212828287612322565b8293505050509392505050565b600061222c84848461236b565b61223787878561236b565b14905095945050505050565b6000825160028301111561225657600080fd5b61ffff8260028501015116905092915050565b6000825160048301111561227c57600080fd5b63ffffffff8260048501015116905092915050565b600060405161229f90613226565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806122f757506122f68261238e565b5b9050919050565b600082828151811061230c57fe5b602001015160f81c60f81b60f81c905092915050565b5b602081106123465781518352602083019250602082019150602081039050612323565b60006001826020036101000a0390508019835116818551168181178652505050505050565b60008351828401111561237d57600080fd5b818360208601012090509392505050565b600063a8fa568260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806123e857506123e7826123ef565b5b9050919050565b600063bc1c58d160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612449575061244882612450565b5b9050919050565b6000633b3b57de60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806124e9575063f1cb7e0660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806124f957506124f882612500565b5b9050919050565b6000632203ab5660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061255a575061255982612561565b5b9050919050565b60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061263e57803560ff191683800117855561266c565b8280016001018555821561266c579182015b8281111561266b578235825591602001919060010190612650565b5b50905061267991906127c5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106126be57803560ff19168380011785556126ec565b828001600101855582156126ec579182015b828111156126eb5782358255916020019190600101906126d0565b5b5090506126f991906127c5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061273e57805160ff191683800117855561276c565b8280016001018555821561276c579182015b8281111561276b578251825591602001919060010190612750565b5b50905061277991906127c5565b5090565b50805460018160011615610100020316600290046000825580601f106127a357506127c2565b601f0160209004906000526020600020908101906127c191906127c5565b5b50565b6127e791905b808211156127e35760008160009055506001016127cb565b5090565b90565b6000813590506127f981613679565b92915050565b60008151905061280e81613679565b92915050565b60008083601f84011261282657600080fd5b8235905067ffffffffffffffff81111561283f57600080fd5b60208301915083602082028301111561285757600080fd5b9250929050565b60008135905061286d81613690565b92915050565b600081359050612882816136a7565b92915050565b600081359050612897816136be565b92915050565b60008083601f8401126128af57600080fd5b8235905067ffffffffffffffff8111156128c857600080fd5b6020830191508360018202830111156128e057600080fd5b9250929050565b600082601f8301126128f857600080fd5b813561290b61290682613486565b613459565b9150808252602083016020830185838301111561292757600080fd5b612932838284613626565b50505092915050565b60008083601f84011261294d57600080fd5b8235905067ffffffffffffffff81111561296657600080fd5b60208301915083600182028301111561297e57600080fd5b9250929050565b600081359050612994816136d5565b92915050565b6000813590506129a9816136ec565b92915050565b6000602082840312156129c157600080fd5b60006129cf848285016127ff565b91505092915050565b600080602083850312156129eb57600080fd5b600083013567ffffffffffffffff811115612a0557600080fd5b612a1185828601612814565b92509250509250929050565b600060208284031215612a2f57600080fd5b6000612a3d84828501612873565b91505092915050565b60008060408385031215612a5957600080fd5b6000612a6785828601612873565b9250506020612a78858286016127ea565b9150509250929050565b600080600060608486031215612a9757600080fd5b6000612aa586828701612873565b9350506020612ab6868287016127ea565b9250506040612ac7868287016127ea565b9150509250925092565b600080600060608486031215612ae657600080fd5b6000612af486828701612873565b9350506020612b05868287016127ea565b9250506040612b168682870161285e565b9150509250925092565b60008060408385031215612b3357600080fd5b6000612b4185828601612873565b9250506020612b5285828601612873565b9150509250929050565b600080600060608486031215612b7157600080fd5b6000612b7f86828701612873565b9350506020612b9086828701612873565b9250506040612ba186828701612873565b9150509250925092565b600080600060608486031215612bc057600080fd5b6000612bce86828701612873565b9350506020612bdf86828701612873565b9250506040612bf086828701612985565b9150509250925092565b60008060408385031215612c0d57600080fd5b6000612c1b85828601612873565b9250506020612c2c85828601612888565b9150509250929050565b600080600060608486031215612c4b57600080fd5b6000612c5986828701612873565b9350506020612c6a86828701612888565b9250506040612c7b868287016127ea565b9150509250925092565b600080600060408486031215612c9a57600080fd5b6000612ca886828701612873565b935050602084013567ffffffffffffffff811115612cc557600080fd5b612cd18682870161289d565b92509250509250925092565b600080600060408486031215612cf257600080fd5b6000612d0086828701612873565b935050602084013567ffffffffffffffff811115612d1d57600080fd5b612d298682870161293b565b92509250509250925092565b600080600080600060608688031215612d4d57600080fd5b6000612d5b88828901612873565b955050602086013567ffffffffffffffff811115612d7857600080fd5b612d848882890161293b565b9450945050604086013567ffffffffffffffff811115612da357600080fd5b612daf8882890161293b565b92509250509295509295909350565b60008060408385031215612dd157600080fd5b6000612ddf85828601612873565b9250506020612df08582860161299a565b9150509250929050565b60008060008060608587031215612e1057600080fd5b6000612e1e87828801612873565b9450506020612e2f8782880161299a565b935050604085013567ffffffffffffffff811115612e4c57600080fd5b612e588782880161289d565b925092505092959194509250565b600080600060608486031215612e7b57600080fd5b6000612e8986828701612873565b9350506020612e9a8682870161299a565b925050604084013567ffffffffffffffff811115612eb757600080fd5b612ec3868287016128e7565b9150509250925092565b600060208284031215612edf57600080fd5b6000612eed84828501612888565b91505092915050565b6000612f028383613095565b905092915050565b612f13816135f0565b82525050565b612f2281613564565b82525050565b612f3181613552565b82525050565b6000612f42826134bf565b612f4c81856134f8565b935083602082028501612f5e856134b2565b8060005b85811015612f9a5784840389528151612f7b8582612ef6565b9450612f86836134eb565b925060208a01995050600181019050612f62565b50829750879550505050505092915050565b612fb581613576565b82525050565b612fc481613582565b82525050565b612fd38161358c565b82525050565b6000612fe5838561351a565b9350612ff2838584613626565b612ffb83613668565b840190509392505050565b6000613012838561352b565b935061301f838584613626565b82840190509392505050565b6000613036826134d5565b613040818561351a565b9350613050818560208601613635565b61305981613668565b840191505092915050565b600061306f826134d5565b613079818561352b565b9350613089818560208601613635565b80840191505092915050565b60006130a0826134ca565b6130aa8185613509565b93506130ba818560208601613635565b6130c381613668565b840191505092915050565b60006130da8385613536565b93506130e7838584613626565b6130f083613668565b840190509392505050565b60006131078385613547565b9350613114838584613626565b82840190509392505050565b600061312b826134e0565b6131358185613536565b9350613145818560208601613635565b61314e81613668565b840191505092915050565b6000613166602483613547565b91507f696e74657266616365496d706c656d656e74657228627974657333322c62797460008301527f65733429000000000000000000000000000000000000000000000000000000006020830152602482019050919050565b6131c8816135b8565b82525050565b6131d7816135e6565b82525050565b60006131ea828486613006565b91508190509392505050565b60006132028284613064565b915081905092915050565b600061321a8284866130fb565b91508190509392505050565b600061323182613159565b9150819050919050565b60006020820190506132506000830184612f28565b92915050565b600060208201905061326b6000830184612f0a565b92915050565b60006020820190506132866000830184612f19565b92915050565b600060208201905081810360008301526132a68184612f37565b905092915050565b60006020820190506132c36000830184612fac565b92915050565b60006020820190506132de6000830184612fbb565b92915050565b60006040820190506132f96000830185612fbb565b6133066020830184612fbb565b9392505050565b60006020820190506133226000830184612fca565b92915050565b60006020820190508181036000830152613343818486612fd9565b90509392505050565b60006020820190508181036000830152613366818461302b565b905092915050565b60006040820190508181036000830152613388818561302b565b905061339760208301846131bf565b9392505050565b600060608201905081810360008301526133b8818661302b565b90506133c760208301856131bf565b81810360408301526133d9818461302b565b9050949350505050565b600060208201905081810360008301526133fe8184866130ce565b90509392505050565b600060208201905081810360008301526134218184613120565b905092915050565b600060408201905061343e60008301856131ce565b8181036020830152613450818461302b565b90509392505050565b6000604051905081810181811067ffffffffffffffff8211171561347c57600080fd5b8060405250919050565b600067ffffffffffffffff82111561349d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061355d826135c6565b9050919050565b600061356f826135c6565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006135fb82613602565b9050919050565b600061360d82613614565b9050919050565b600061361f826135c6565b9050919050565b82818337600083830152505050565b60005b83811015613653578082015181840152602081019050613638565b83811115613662576000848401525b50505050565b6000601f19601f8301169050919050565b61368281613552565b811461368d57600080fd5b50565b61369981613576565b81146136a457600080fd5b50565b6136b081613582565b81146136bb57600080fd5b50565b6136c78161358c565b81146136d257600080fd5b50565b6136de816135b8565b81146136e957600080fd5b50565b6136f5816135e6565b811461370057600080fd5b5056fea265627a7a7230582049ebf27fa2f4353ae0dc98302f101fe3256ef5930b91c52222dcf860d94f3c326c6578706572696d656e74616cf50037","sourceMap":"520:2174:3:-;;;1151:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;1151:56:3;;;;;;;;;;;;;;;;;;;;;;1196:4;1190:3;;:10;;;;;;;;;;;;;;;;;;1151:56;520:2174;;5:158:-1;;101:6;95:13;86:22;;113:45;152:5;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;424:6;413:9;409:22;365:76;;;355:86;;327:120;259:198;;;;;464:91;;526:24;544:5;526:24;;;515:35;;509:46;;;;562:103;;636:24;654:5;636:24;;;625:35;;619:46;;;;672:121;;745:42;738:5;734:54;723:65;;717:76;;;;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;520:2174:3;;;;;;;","deployedSourceMap":"520:2174:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;520:2174:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:13;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2403:1263:9;;;;;;;;;;;;;;;;:::i;:::-;;573:184:13;;;;;;;;;;;;;;;;:::i;:::-;;1721:953:10;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1195:454:6;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;612:169:12;;;;;;;;;;;;;;;;:::i;:::-;;505:166:8;;;;;;;;;;;;;;;;:::i;:::-;;972:228:7;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1892:231:3;;;;;;;;;;;;;;;;:::i;:::-;;4450:153:9;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;974:127:13;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;582:292:6;;;;;;;;;;;;;;;;:::i;:::-;;844:101:11;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;492:152;;;;;;;;;;;;;;;;:::i;:::-;;1206:286:7;;;;;;;;;;;;;;;;:::i;:::-;;4068:168:9;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2326:366:3;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4742:128:9;;;;;;;;;;;;;;;;:::i;:::-;;838:108:8;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1023:133:12;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;681:132:7;;;;;;;;;;;;;;;;:::i;:::-;;858:226:10;;;;;;;;;;;;;;;;:::i;:::-;;1498:127:7;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;943:80:3;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1107:169:13;1174:4;144:10;1212:17;;1197:32;;;:11;:32;;;;:72;;;;1233:36;1257:11;1233:23;:36::i;:::-;1197:72;1190:79;;1107:169;;;:::o;2403:1263:9:-;2481:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;2497:15:9;2515:1;2497:19;;2526:14;2543:1;2526:18;;2554:17;2581:18;2609:16;2701:30;;:::i;:::-;2734:18;2750:1;2734:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2734:15:9;;;;;;;;:18;;;;:::i;:::-;2701:51;;2696:821;2755:11;:4;:9;:11::i;:::-;2696:821;;2811:1;2799:8;:13;;;2795:712;;;2843:4;:12;;;2832:23;;2880:11;:4;:9;:11::i;:::-;2873:18;;2947:4;2930:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2930:22:9;;;2920:33;;;;;;2909:44;;2985:12;:4;:10;:12::i;:::-;2971:27;;2795:712;;;3037:20;3060:11;:4;:9;:11::i;:::-;3037:34;;3105:4;:12;;;3093:24;;:8;:24;;;;:49;;;;3122:20;3134:7;3122:4;:11;;:20;;;;:::i;:::-;3121:21;3093:49;3089:404;;;3166:88;3178:4;3184;3190:8;3200:4;;3166:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3166:88:9;;;;;;3206:6;3228;3214:4;:11;;;:20;3252:1;3236:5;:12;:17;3166:11;:88::i;:::-;3287:4;:12;;;3276:23;;3330:4;:11;;;3321:20;;3370:7;3363:14;;3420:4;3410:15;;;;;;3399:26;;3461:12;:4;:10;:12::i;:::-;3447:27;;3089:404;2795:712;;2768:11;:4;:9;:11::i;:::-;2696:821;;;;3544:1;3530:4;:11;:15;3526:134;;;3561:88;3573:4;3579;3585:8;3595:4;;3561:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3561:88:9;;;;;;3601:6;3623;3609:4;;:11;;:20;3647:1;3631:5;:12;:17;3561:11;:88::i;:::-;3526:134;400:1:5;;;;;2403:1263:9;;;;:::o;573:184:13:-;668:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:13;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:10:-;1808:7;1827:19;1849:10;:16;1860:4;1849:16;;;;;;;;;;;:29;1866:11;1849:29;;;;;;;;;;;;;;;;;;;;;;;;;;;1827:51;;1914:1;1891:25;;:11;:25;;;1888:73;;1939:11;1932:18;;;;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;;2019:1;2006:15;;:1;:15;;;2003:62;;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;:12;;304:10;2183:17;;2130:71;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2130:71:10;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2130:71:10;2117:85;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:10;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2271:1;2253:19;;:10;2264:2;2253:14;;;;;;;;;;;;;;;;:19;;;;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;:12;;2463:11;2410:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2410:65:10;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2410:65:10;2397:79;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2373:103:10;;;;;;;;2490:7;2489:8;:34;;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2545:1;2527:19;;:10;2538:2;2527:14;;;;;;;;;;;;;;;;:19;;;;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;2666:1;2659:8;;;;;;1721:953;;;;;:::o;1195:454:6:-;1267:7;1276:12;1300:38;1341:4;:10;1346:4;1341:10;;;;;;;;;;;1300:51;;1367:19;1389:1;1367:23;;1362:249;1407:12;1392:11;:27;1362:249;;1490:1;1473:12;1459:11;:26;1458:33;;:67;;;;;1524:1;1495:6;:19;1502:11;1495:19;;;;;;;;;;;:26;;;;;;;;;;;;;;;;:30;1458:67;1454:147;;;1553:11;1566:6;:19;1573:11;1566:19;;;;;;;;;;;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;;;;;1362:249;;;;1629:1;1632:9;;;;;;;;;;;;1621:21;;;;;;;;1195:454;;;;;;:::o;612:169:12:-;687:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:12;;;;;;;;729:1;719:15;;;;732:1;719:15;;;703:7;:13;711:4;703:13;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;;763:4;749:25;769:1;772;749:25;;;;;;;;;;;;;;;;612:169;;;;:::o;505:166:8:-;584:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;615:4:8;;600:6;:12;607:4;600:12;;;;;;;;;;;:19;;;;;;;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;;;;;;;;;505:166;;;;:::o;972:228:7:-;1021:15;1048:14;1065:25;1070:4;261:2;1065:4;:25::i;:::-;1048:42;;1115:1;1103;:8;:13;1100:60;;;1147:1;1132:17;;;;;1100:60;1176:17;1191:1;1176:14;:17::i;:::-;1169:24;;;972:228;;;;:::o;1892:231:3:-;2029:12;1986:14;:20;2001:4;1986:20;;;;;;;;;;;:32;2007:10;1986:32;;;;;;;;;;;;;;;:40;2019:6;1986:40;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;2095:6;2056:60;;2083:10;2056:60;;2077:4;2056:60;2103:12;2056:60;;;;;;;;;;;;;;;1892:231;;;:::o;4450:153:9:-;4522:4;4594:1;4546:16;:22;4563:4;4546:22;;;;;;;;;;;:38;4569:8;:14;4578:4;4569:14;;;;;;;;;;;;4546:38;;;;;;;;;;;:44;4585:4;4546:44;;;;;;;;;;;;;;;;;;;;;:49;;;;4538:58;;4450:153;;;;:::o;974:127:13:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;582:292:6:-;674:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;780:1:6;764:11;759:1;745:11;:15;744:31;743:38;735:47;;;;;;819:4;;793;:10;798:4;793:10;;;;;;;;;;;:23;804:11;793:23;;;;;;;;;;;:30;;;;;;;:::i;:::-;;855:11;849:4;838:29;;;;;;;;;;582:292;;;;;:::o;844:101:11:-;895:13;927:5;:11;933:4;927:11;;;;;;;;;;;920:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;844:101;;;:::o;492:152::-;565:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;595:4:11;;581:5;:11;587:4;581:11;;;;;;;;;;;:18;;;;;;;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;;;;;;;;;492:152;;;;:::o;1206:286:7:-;1286:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;1322:4:7;1307:33;1328:8;1338:1;1307:33;;;;;;;;;;;;;;;;261:2;1353:8;:25;1350:96;;;1411:4;1399:36;1417:17;1432:1;1417:14;:17::i;:::-;1399:36;;;;;;;;;;;;;;;1350:96;1484:1;1455:10;:16;1466:4;1455:16;;;;;;;;;;;:26;1472:8;1455:26;;;;;;;;;;;:30;;;;;;;;;;;;:::i;:::-;;1206:286;;;;:::o;4068:168:9:-;4153:12;4184:7;:13;4192:4;4184:13;;;;;;;;;;;:29;4198:8;:14;4207:4;4198:14;;;;;;;;;;;;4184:29;;;;;;;;;;;:35;4214:4;4184:35;;;;;;;;;;;:45;4220:8;4184:45;;;;;;;;;;;;;;;4177:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4068:168;;;;;:::o;2326:366:3:-;2385:22;2441:4;;:11;;2429:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2419:34;;2467:6;2476:1;2467:10;;2463:199;2483:4;;:11;;2479:1;:15;2463:199;;;2516:12;2530:19;2561:4;2553:26;;2580:4;;2585:1;2580:7;;;;;;;;;;;;;43:11:-1;30:25;137:1;131:4;127:12;116:8;100:14;96:29;92:48;72:18;68:73;58:2;;155:1;152;145:12;58:2;188:18;178:8;174:33;162:45;;0:210;29:8;16:22;6:32;;69:4;59:8;55:19;43:31;;93:18;85:6;82:30;79:2;;;125:1;122;115:12;79:2;183:3;175:6;171:16;155:14;151:37;141:8;137:52;134:2;;;202:1;199;192:12;134:2;2553:35:3;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2515:73:3;;;;2610:7;2602:16;;;;;;2645:6;2632:7;2640:1;2632:10;;;;;;;;;;;;;:19;;;;2463:199;;2496:3;;;;;;;2463:199;;;;2678:7;2671:14;;2326:366;;;;:::o;4742:128:9:-;4796:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;4812:8:9;:14;4821:4;4812:14;;;;;;;;;;;;:16;;;;;;;;;;;;;4858:4;4843:20;;;;;;;;;;4742:128;;:::o;838:108:8:-;896:12;927:6;:12;934:4;927:12;;;;;;;;;;;920:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:108;;;:::o;1023:133:12:-;1076:9;1087;1116:7;:13;1124:4;1116:13;;;;;;;;;;;:15;;;1133:7;:13;1141:4;1133:13;;;;;;;;;;;:15;;;1108:41;;;;1023:133;;;:::o;681:132:7:-;743:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;759:47:7;767:4;261:2;788:17;803:1;788:14;:17::i;:::-;759:7;:47::i;:::-;681:132;;;:::o;858:226:10:-;955:4;371:18:5;384:4;371:12;:18::i;:::-;363:27;;;;;;1003:11:10;971:10;:16;982:4;971:16;;;;;;;;;;;:29;988:11;971:29;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1052:11;1029:48;;;1046:4;1029:48;1065:11;1029:48;;;;;;;;;;;;;;;858:226;;;;:::o;1498:127:7:-;1561:12;1592:10;:16;1603:4;1592:16;;;;;;;;;;;:26;1609:8;1592:26;;;;;;;;;;;1585:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1498:127;;;;:::o;943:80:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:12:-;1229:4;148:10;1267:19;;1252:34;;;:11;:34;;;;:74;;;;1290:36;1314:11;1290:23;:36::i;:::-;1252:74;1245:81;;1162:171;;;:::o;2129:191:3:-;2187:4;2203:13;2219:3;;;;;;;;;;;:9;;;2229:4;2219:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2219:15:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2219:15:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2219:15:3;;;;;;;;;2203:31;;2260:10;2251:19;;:5;:19;;;:62;;;;2274:14;:20;2289:4;2274:20;;;;;;;;;;;:27;2295:5;2274:27;;;;;;;;;;;;;;;:39;2302:10;2274:39;;;;;;;;;;;;;;;;;;;;;;;;;2251:62;2244:69;;;2129:191;;;:::o;2435:182:16:-;2510:21;;:::i;:::-;2554:4;2543:3;:8;;:15;;;;2585:6;2568:3;:14;;:23;;;;;2601:9;2606:3;2601:4;:9::i;:::-;2435:182;;;;:::o;2788:121::-;2848:4;2886;:9;;;:16;2871:4;:11;;;:31;;2864:38;;2788:121;;;:::o;3890:166::-;3950:12;3981:68;4001:4;:11;;;4014:34;4025:4;:9;;;4036:4;:11;;;4014:10;:34::i;:::-;3981:4;:9;;;:19;;:68;;;;;:::i;:::-;3974:75;;3890:166;;;:::o;4229:172::-;4290:12;4321:73;4341:4;:16;;;4377:4;:16;;;4359:4;:15;;;:34;4321:4;:9;;;:19;;:73;;;;;:::i;:::-;4314:80;;4229:172;;;:::o;4913:176:15:-;4990:4;5028:5;:12;5013:4;:11;:27;:69;;;;;5044:38;5051:4;5057:1;5060:5;5067:1;5070:4;:11;5044:6;:38::i;:::-;5013:69;5006:76;;4913:176;;;;:::o;5057:965:9:-;5275:15;5293:8;:14;5302:4;5293:14;;;;;;;;;;;;5275:32;;5317:16;5346:4;5336:15;;;;;;5317:34;;5361:19;5383:28;5398:6;5406:4;5383;:14;;:28;;;;;:::i;:::-;5361:50;;5425:12;5421:595;;;5510:1;5457:7;:13;5465:4;5457:13;;;;;;;;;;;:22;5471:7;5457:22;;;;;;;;;;;:32;5480:8;5457:32;;;;;;;;;;;:42;5490:8;5457:42;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;:54;5453:136;;5531:16;:22;5548:4;5531:22;;;;;;;;;;;:31;5554:7;5531:31;;;;;;;;;;;:41;5563:8;5531:41;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5453:136;5609:7;:13;5617:4;5609:13;;;;;;;;;;;:22;5623:7;5609:22;;;;;;;;;;;:32;5632:8;5609:32;;;;;;;;;;;:42;5642:8;5609:42;;;;;;;;;;;;;;;;5602:50;;;;:::i;:::-;5688:4;5671:38;5694:4;5700:8;5671:38;;;;;;;;;;;;;;;;5421:595;;;5797:1;5744:7;:13;5752:4;5744:13;;;;;;;;;;;:22;5758:7;5744:22;;;;;;;;;;;:32;5767:8;5744:32;;;;;;;;;;;:42;5777:8;5744:42;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;:54;5740:136;;;5818:16;:22;5835:4;5818:22;;;;;;;;;;;:31;5841:7;5818:31;;;;;;;;;;;:41;5850:8;5818:41;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5740:136;5934:6;5889:7;:13;5897:4;5889:13;;;;;;;;;;;:22;5903:7;5889:22;;;;;;;;;;;:32;5912:8;5889:32;;;;;;;;;;;:42;5922:8;5889:42;;;;;;;;;;;;;;;:51;;;;;;;;;;;;:::i;:::-;;5976:4;5959:46;5982:4;5988:8;5998:6;5959:46;;;;;;;;;;;;;;;;;5421:595;5057:965;;;;;;;;;;:::o;3032:682:16:-;3108:4;:15;;;3094:4;:11;;:29;;;;;3152:4;:9;;;:16;3137:4;:11;;;:31;3133:68;;3184:7;;3133:68;3236:8;3261:34;3272:4;:9;;;3283:4;:11;;;3261:10;:34::i;:::-;3247:4;:11;;;:48;3236:59;;3358:25;3379:3;3358:4;:9;;;:20;;:25;;;;:::i;:::-;3343:4;:12;;:40;;;;;;;;;;;3400:1;3393:8;;;;3424:25;3445:3;3424:4;:9;;;:20;;:25;;;;:::i;:::-;3411:4;:10;;:38;;;;;;;;;;;3466:1;3459:8;;;;3488:25;3509:3;3488:4;:9;;;:20;;:25;;;;:::i;:::-;3477:4;:8;;:36;;;;;;;;;;;3530:1;3523:8;;;;3568:16;3587:25;3608:3;3587:4;:9;;;:20;;:25;;;;:::i;:::-;3568:44;;;;3629:1;3622:8;;;;3659:3;3640:4;:16;;:22;;;;;3696:11;3690:3;:17;3672:4;:15;;:35;;;;;3032:682;;;;:::o;414:204:5:-;476:17;525:2;513:1;:8;:14;505:23;;;;;;598:2;593:3;589:12;583:2;580:1;576:10;570:17;566:36;561:41;;547:65;;;:::o;624:189::-;681:14;721:2;711:13;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;711:13:5;;;;707:17;;792:2;787:3;783:12;780:1;776:20;771:2;768:1;764:10;757:40;743:64;;;:::o;951:169:11:-;1018:4;144:10;1056:17;;1041:32;;;:11;:32;;;;:72;;;;1077:36;1101:11;1077:23;:36::i;:::-;1041:72;1034:79;;951:169;;;:::o;535:367:16:-;609:4;625:8;636:6;625:17;;652:215;659:4;652:215;;;692:4;:11;686:3;:17;679:25;;;;718:13;734:19;749:3;734:4;:14;;:19;;;;:::i;:::-;718:35;;;;785:1;774:8;:12;767:19;;;;816:1;804:8;:13;800:57;;;837:5;;;800:57;652:215;;;;889:6;883:3;:12;876:19;;;535:367;;;;:::o;8683:393:15:-;8766:12;8814:4;:11;8807:3;8798:6;:12;:27;;8790:36;;;;;;8837:16;8866:3;8856:14;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;8856:14:15;;;;8837:33;;8880:9;8899:8;8958:2;8953:3;8949:12;8941:20;;9000:6;8995:2;8989:4;8985:13;8981:26;8974:33;;9026:22;9033:4;9039:3;9044;9026:6;:22::i;:::-;9066:3;9059:10;;;;;8683:393;;;;;:::o;3277:209::-;3396:4;3448:31;3455:5;3462:11;3475:3;3448:6;:31::i;:::-;3419:25;3426:4;3432:6;3440:3;3419:6;:25::i;:::-;:60;3412:67;;3277:209;;;;;;;:::o;5697:223::-;5769:10;5810:4;:11;5805:1;5799:3;:7;:22;;5791:31;;;;;;5897:6;5890:3;5886:1;5880:4;5876:12;5872:22;5866:29;5862:42;5855:49;;5841:73;;;;:::o;6164:227::-;6236:10;6277:4;:11;6272:1;6266:3;:7;:22;;6258:31;;;;;;6364:10;6357:3;6353:1;6347:4;6343:12;6339:22;6333:29;6329:46;6322:53;;6308:77;;;;:::o;2680:174:10:-;2747:4;204:49;;;;;;;;;;;;;;2770:37;;;:11;:37;;;;:77;;;;2811:36;2835:11;2811:23;:36::i;:::-;2770:77;2763:84;;2680:174;;;:::o;5331:122:15:-;5402:9;5436:4;5441:3;5436:9;;;;;;;;;;;;;;;;5430:16;;5423:23;;5331:122;;;;:::o;7914:549::-;8034:165;8048:2;8041:3;:9;8034:165;;8123:3;8117:10;8111:4;8104:24;8163:2;8155:10;;;;8186:2;8179:9;;;;8059:2;8052:9;;;;8034:165;;;8241:9;8273:1;8266:3;8261:2;:8;8253:3;:17;:21;8241:33;;8342:4;8338:9;8332:3;8326:10;8322:26;8394:4;8387;8381:11;8377:22;8438:7;8428:8;8425:21;8419:4;8412:35;8293:164;;;;;;:::o;306:238::-;387:11;434:4;:11;427:3;418:6;:12;:27;;410:36;;;;;;524:3;515:6;510:2;504:4;500:13;496:26;486:42;479:49;;465:73;;;;;:::o;4876:175:9:-;4943:4;265:10;4981:23;;4966:38;;;:11;:38;;;;:78;;;;5008:36;5032:11;5008:23;:36::i;:::-;4966:78;4959:85;;4876:175;;;:::o;952:177:8:-;1019:4;159:10;1057:25;;1042:40;;;:11;:40;;;;:80;;;;1086:36;1110:11;1086:23;:36::i;:::-;1042:80;1035:87;;952:177;;;:::o;1631:208:7:-;1698:4;144:10;1736:17;;1721:32;;;:11;:32;;;;:71;;;;207:10;1772:20;;1757:35;;;:11;:35;;;;1721:71;:111;;;;1796:36;1820:11;1796:23;:36::i;:::-;1721:111;1714:118;;1631:208;;;:::o;1655:168:6:-;1722:4;142:10;1760:16;;1745:31;;;:11;:31;;;;:71;;;;1780:36;1804:11;1780:23;:36::i;:::-;1745:71;1738:78;;1655:168;;;:::o;114:129:5:-;181:4;97:10;219:17;;204:32;;;:11;:32;;;;197:39;;114:129;;;:::o;520:2174:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;487:6;474:20;464:30;;514:18;506:6;503:30;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;591:2;396:262;;;;;;666:124;;743:6;730:20;721:29;;755:30;779:5;755:30;;;715:75;;;;;797:130;;877:6;864:20;855:29;;889:33;916:5;889:33;;;849:78;;;;;934:128;;1013:6;1000:20;991:29;;1025:32;1051:5;1025:32;;;985:77;;;;;1083:335;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;1248:6;1235:20;1225:30;;1275:18;1267:6;1264:30;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1391:3;1384;1376:6;1372:16;1362:8;1358:31;1355:40;1352:2;;;1408:1;1405;1398:12;1352:2;1157:261;;;;;;1427:440;;1528:3;1521:4;1513:6;1509:17;1505:27;1495:2;;1546:1;1543;1536:12;1495:2;1583:6;1570:20;1605:64;1620:48;1661:6;1620:48;;;1605:64;;;1596:73;;1689:6;1682:5;1675:21;1725:4;1717:6;1713:17;1758:4;1751:5;1747:16;1793:3;1784:6;1779:3;1775:16;1772:25;1769:2;;;1810:1;1807;1800:12;1769:2;1820:41;1854:6;1849:3;1844;1820:41;;;1488:379;;;;;;;;1890:336;;;2005:3;1998:4;1990:6;1986:17;1982:27;1972:2;;2023:1;2020;2013:12;1972:2;2056:6;2043:20;2033:30;;2083:18;2075:6;2072:30;2069:2;;;2115:1;2112;2105:12;2069:2;2149:4;2141:6;2137:17;2125:29;;2199:3;2192;2184:6;2180:16;2170:8;2166:31;2163:40;2160:2;;;2216:1;2213;2206:12;2160:2;1965:261;;;;;;2234:128;;2313:6;2300:20;2291:29;;2325:32;2351:5;2325:32;;;2285:77;;;;;2369:130;;2449:6;2436:20;2427:29;;2461:33;2488:5;2461:33;;;2421:78;;;;;2506:263;;2621:2;2609:9;2600:7;2596:23;2592:32;2589:2;;;2637:1;2634;2627:12;2589:2;2672:1;2689:64;2745:7;2736:6;2725:9;2721:22;2689:64;;;2679:74;;2651:108;2583:186;;;;;2776:411;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;3001:1;2990:9;2986:17;2973:31;3024:18;3016:6;3013:30;3010:2;;;3056:1;3053;3046:12;3010:2;3084:87;3163:7;3154:6;3143:9;3139:22;3084:87;;;3074:97;;;;2952:225;2884:303;;;;;;3194:241;;3298:2;3286:9;3277:7;3273:23;3269:32;3266:2;;;3314:1;3311;3304:12;3266:2;3349:1;3366:53;3411:7;3402:6;3391:9;3387:22;3366:53;;;3356:63;;3328:97;3260:175;;;;;3442:366;;;3563:2;3551:9;3542:7;3538:23;3534:32;3531:2;;;3579:1;3576;3569:12;3531:2;3614:1;3631:53;3676:7;3667:6;3656:9;3652:22;3631:53;;;3621:63;;3593:97;3721:2;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;;;3729:63;;3700:98;3525:283;;;;;;3815:491;;;;3953:2;3941:9;3932:7;3928:23;3924:32;3921:2;;;3969:1;3966;3959:12;3921:2;4004:1;4021:53;4066:7;4057:6;4046:9;4042:22;4021:53;;;4011:63;;3983:97;4111:2;4129:53;4174:7;4165:6;4154:9;4150:22;4129:53;;;4119:63;;4090:98;4219:2;4237:53;4282:7;4273:6;4262:9;4258:22;4237:53;;;4227:63;;4198:98;3915:391;;;;;;4313:485;;;;4448:2;4436:9;4427:7;4423:23;4419:32;4416:2;;;4464:1;4461;4454:12;4416:2;4499:1;4516:53;4561:7;4552:6;4541:9;4537:22;4516:53;;;4506:63;;4478:97;4606:2;4624:53;4669:7;4660:6;4649:9;4645:22;4624:53;;;4614:63;;4585:98;4714:2;4732:50;4774:7;4765:6;4754:9;4750:22;4732:50;;;4722:60;;4693:95;4410:388;;;;;;4805:366;;;4926:2;4914:9;4905:7;4901:23;4897:32;4894:2;;;4942:1;4939;4932:12;4894:2;4977:1;4994:53;5039:7;5030:6;5019:9;5015:22;4994:53;;;4984:63;;4956:97;5084:2;5102:53;5147:7;5138:6;5127:9;5123:22;5102:53;;;5092:63;;5063:98;4888:283;;;;;;5178:491;;;;5316:2;5304:9;5295:7;5291:23;5287:32;5284:2;;;5332:1;5329;5322:12;5284:2;5367:1;5384:53;5429:7;5420:6;5409:9;5405:22;5384:53;;;5374:63;;5346:97;5474:2;5492:53;5537:7;5528:6;5517:9;5513:22;5492:53;;;5482:63;;5453:98;5582:2;5600:53;5645:7;5636:6;5625:9;5621:22;5600:53;;;5590:63;;5561:98;5278:391;;;;;;5676:489;;;;5813:2;5801:9;5792:7;5788:23;5784:32;5781:2;;;5829:1;5826;5819:12;5781:2;5864:1;5881:53;5926:7;5917:6;5906:9;5902:22;5881:53;;;5871:63;;5843:97;5971:2;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;;;5979:63;;5950:98;6079:2;6097:52;6141:7;6132:6;6121:9;6117:22;6097:52;;;6087:62;;6058:97;5775:390;;;;;;6172:364;;;6292:2;6280:9;6271:7;6267:23;6263:32;6260:2;;;6308:1;6305;6298:12;6260:2;6343:1;6360:53;6405:7;6396:6;6385:9;6381:22;6360:53;;;6350:63;;6322:97;6450:2;6468:52;6512:7;6503:6;6492:9;6488:22;6468:52;;;6458:62;;6429:97;6254:282;;;;;;6543:489;;;;6680:2;6668:9;6659:7;6655:23;6651:32;6648:2;;;6696:1;6693;6686:12;6648:2;6731:1;6748:53;6793:7;6784:6;6773:9;6769:22;6748:53;;;6738:63;;6710:97;6838:2;6856:52;6900:7;6891:6;6880:9;6876:22;6856:52;;;6846:62;;6817:97;6945:2;6963:53;7008:7;6999:6;6988:9;6984:22;6963:53;;;6953:63;;6924:98;6642:390;;;;;;7039:490;;;;7179:2;7167:9;7158:7;7154:23;7150:32;7147:2;;;7195:1;7192;7185:12;7147:2;7230:1;7247:53;7292:7;7283:6;7272:9;7268:22;7247:53;;;7237:63;;7209:97;7365:2;7354:9;7350:18;7337:32;7389:18;7381:6;7378:30;7375:2;;;7421:1;7418;7411:12;7375:2;7449:64;7505:7;7496:6;7485:9;7481:22;7449:64;;;7439:74;;;;7316:203;7141:388;;;;;;7536:492;;;;7677:2;7665:9;7656:7;7652:23;7648:32;7645:2;;;7693:1;7690;7683:12;7645:2;7728:1;7745:53;7790:7;7781:6;7770:9;7766:22;7745:53;;;7735:63;;7707:97;7863:2;7852:9;7848:18;7835:32;7887:18;7879:6;7876:30;7873:2;;;7919:1;7916;7909:12;7873:2;7947:65;8004:7;7995:6;7984:9;7980:22;7947:65;;;7937:75;;;;7814:204;7639:389;;;;;;8035:743;;;;;;8213:2;8201:9;8192:7;8188:23;8184:32;8181:2;;;8229:1;8226;8219:12;8181:2;8264:1;8281:53;8326:7;8317:6;8306:9;8302:22;8281:53;;;8271:63;;8243:97;8399:2;8388:9;8384:18;8371:32;8423:18;8415:6;8412:30;8409:2;;;8455:1;8452;8445:12;8409:2;8483:65;8540:7;8531:6;8520:9;8516:22;8483:65;;;8473:75;;;;8350:204;8613:2;8602:9;8598:18;8585:32;8637:18;8629:6;8626:30;8623:2;;;8669:1;8666;8659:12;8623:2;8697:65;8754:7;8745:6;8734:9;8730:22;8697:65;;;8687:75;;;;8564:204;8175:603;;;;;;;;;8785:366;;;8906:2;8894:9;8885:7;8881:23;8877:32;8874:2;;;8922:1;8919;8912:12;8874:2;8957:1;8974:53;9019:7;9010:6;8999:9;8995:22;8974:53;;;8964:63;;8936:97;9064:2;9082:53;9127:7;9118:6;9107:9;9103:22;9082:53;;;9072:63;;9043:98;8868:283;;;;;;9158:615;;;;;9315:2;9303:9;9294:7;9290:23;9286:32;9283:2;;;9331:1;9328;9321:12;9283:2;9366:1;9383:53;9428:7;9419:6;9408:9;9404:22;9383:53;;;9373:63;;9345:97;9473:2;9491:53;9536:7;9527:6;9516:9;9512:22;9491:53;;;9481:63;;9452:98;9609:2;9598:9;9594:18;9581:32;9633:18;9625:6;9622:30;9619:2;;;9665:1;9662;9655:12;9619:2;9693:64;9749:7;9740:6;9729:9;9725:22;9693:64;;;9683:74;;;;9560:203;9277:496;;;;;;;;9780:595;;;;9927:2;9915:9;9906:7;9902:23;9898:32;9895:2;;;9943:1;9940;9933:12;9895:2;9978:1;9995:53;10040:7;10031:6;10020:9;10016:22;9995:53;;;9985:63;;9957:97;10085:2;10103:53;10148:7;10139:6;10128:9;10124:22;10103:53;;;10093:63;;10064:98;10221:2;10210:9;10206:18;10193:32;10245:18;10237:6;10234:30;10231:2;;;10277:1;10274;10267:12;10231:2;10297:62;10351:7;10342:6;10331:9;10327:22;10297:62;;;10287:72;;10172:193;9889:486;;;;;;10382:239;;10485:2;10473:9;10464:7;10460:23;10456:32;10453:2;;;10501:1;10498;10491:12;10453:2;10536:1;10553:52;10597:7;10588:6;10577:9;10573:22;10553:52;;;10543:62;;10515:96;10447:174;;;;;10629:177;;10740:60;10796:3;10788:6;10740:60;;;10726:74;;10719:87;;;;;10814:142;10905:45;10944:5;10905:45;;;10900:3;10893:58;10887:69;;;10963:137;11062:32;11088:5;11062:32;;;11057:3;11050:45;11044:56;;;11107:113;11190:24;11208:5;11190:24;;;11185:3;11178:37;11172:48;;;11254:888;;11409:59;11462:5;11409:59;;;11481:91;11565:6;11560:3;11481:91;;;11474:98;;11595:3;11637:4;11629:6;11625:17;11620:3;11616:27;11664:61;11719:5;11664:61;;;11745:7;11773:1;11758:345;11783:6;11780:1;11777:13;11758:345;;;11845:9;11839:4;11835:20;11830:3;11823:33;11890:6;11884:13;11912:74;11981:4;11966:13;11912:74;;;11904:82;;12003:65;12061:6;12003:65;;;11993:75;;12091:4;12086:3;12082:14;12075:21;;11815:288;11805:1;11802;11798:9;11793:14;;11758:345;;;11762:14;12116:4;12109:11;;12133:3;12126:10;;11388:754;;;;;;;;;;12150:104;12227:21;12242:5;12227:21;;;12222:3;12215:34;12209:45;;;12261:113;12344:24;12362:5;12344:24;;;12339:3;12332:37;12326:48;;;12381:110;12462:23;12479:5;12462:23;;;12457:3;12450:36;12444:47;;;12521:297;;12635:70;12698:6;12693:3;12635:70;;;12628:77;;12717:43;12753:6;12748:3;12741:5;12717:43;;;12782:29;12804:6;12782:29;;;12777:3;12773:39;12766:46;;12621:197;;;;;;12849:306;;12977:88;13058:6;13053:3;12977:88;;;12970:95;;13077:43;13113:6;13108:3;13101:5;13077:43;;;13142:6;13137:3;13133:16;13126:23;;12963:192;;;;;;13163:343;;13273:38;13305:5;13273:38;;;13323:70;13386:6;13381:3;13323:70;;;13316:77;;13398:52;13443:6;13438:3;13431:4;13424:5;13420:16;13398:52;;;13471:29;13493:6;13471:29;;;13466:3;13462:39;13455:46;;13253:253;;;;;;13513:356;;13641:38;13673:5;13641:38;;;13691:88;13772:6;13767:3;13691:88;;;13684:95;;13784:52;13829:6;13824:3;13817:4;13810:5;13806:16;13784:52;;;13857:6;13852:3;13848:16;13841:23;;13621:248;;;;;;13876:315;;13972:34;14000:5;13972:34;;;14018:60;14071:6;14066:3;14018:60;;;14011:67;;14083:52;14128:6;14123:3;14116:4;14109:5;14105:16;14083:52;;;14156:29;14178:6;14156:29;;;14151:3;14147:39;14140:46;;13952:239;;;;;;14223:300;;14339:71;14403:6;14398:3;14339:71;;;14332:78;;14422:43;14458:6;14453:3;14446:5;14422:43;;;14487:29;14509:6;14487:29;;;14482:3;14478:39;14471:46;;14325:198;;;;;;14556:313;;14690:89;14772:6;14767:3;14690:89;;;14683:96;;14791:43;14827:6;14822:3;14815:5;14791:43;;;14856:6;14851:3;14847:16;14840:23;;14676:193;;;;;;14877:347;;14989:39;15022:5;14989:39;;;15040:71;15104:6;15099:3;15040:71;;;15033:78;;15116:52;15161:6;15156:3;15149:4;15142:5;15138:16;15116:52;;;15189:29;15211:6;15189:29;;;15184:3;15180:39;15173:46;;14969:255;;;;;;15232:501;;15410:85;15492:2;15487:3;15410:85;;;15403:92;;15528:66;15524:1;15519:3;15515:11;15508:87;15629:66;15624:2;15619:3;15615:12;15608:88;15724:2;15719:3;15715:12;15708:19;;15396:337;;;;15741:110;15822:23;15839:5;15822:23;;;15817:3;15810:36;15804:47;;;15858:113;15941:24;15959:5;15941:24;;;15936:3;15929:37;15923:48;;;15978:274;;16128:99;16223:3;16214:6;16206;16128:99;;;16121:106;;16244:3;16237:10;;16109:143;;;;;;16259:262;;16403:93;16492:3;16483:6;16403:93;;;16396:100;;16513:3;16506:10;;16384:137;;;;;16528:286;;16684:105;16785:3;16776:6;16768;16684:105;;;16677:112;;16806:3;16799:10;;16665:149;;;;;;16821:372;;17020:148;17164:3;17020:148;;;17013:155;;17185:3;17178:10;;17001:192;;;;17200:213;;17318:2;17307:9;17303:18;17295:26;;17332:71;17400:1;17389:9;17385:17;17376:6;17332:71;;;17289:124;;;;;17420:229;;17546:2;17535:9;17531:18;17523:26;;17560:79;17636:1;17625:9;17621:17;17612:6;17560:79;;;17517:132;;;;;17656:245;;17790:2;17779:9;17775:18;17767:26;;17804:87;17888:1;17877:9;17873:17;17864:6;17804:87;;;17761:140;;;;;17908:381;;18086:2;18075:9;18071:18;18063:26;;18136:9;18130:4;18126:20;18122:1;18111:9;18107:17;18100:47;18161:118;18274:4;18265:6;18161:118;;;18153:126;;18057:232;;;;;18296:201;;18408:2;18397:9;18393:18;18385:26;;18422:65;18484:1;18473:9;18469:17;18460:6;18422:65;;;18379:118;;;;;18504:213;;18622:2;18611:9;18607:18;18599:26;;18636:71;18704:1;18693:9;18689:17;18680:6;18636:71;;;18593:124;;;;;18724:324;;18870:2;18859:9;18855:18;18847:26;;18884:71;18952:1;18941:9;18937:17;18928:6;18884:71;;;18966:72;19034:2;19023:9;19019:18;19010:6;18966:72;;;18841:207;;;;;;19055:209;;19171:2;19160:9;19156:18;19148:26;;19185:69;19251:1;19240:9;19236:17;19227:6;19185:69;;;19142:122;;;;;19271:317;;19417:2;19406:9;19402:18;19394:26;;19467:9;19461:4;19457:20;19453:1;19442:9;19438:17;19431:47;19492:86;19573:4;19564:6;19556;19492:86;;;19484:94;;19388:200;;;;;;19595:297;;19731:2;19720:9;19716:18;19708:26;;19781:9;19775:4;19771:20;19767:1;19756:9;19752:17;19745:47;19806:76;19877:4;19868:6;19806:76;;;19798:84;;19702:190;;;;;19899:404;;20061:2;20050:9;20046:18;20038:26;;20111:9;20105:4;20101:20;20097:1;20086:9;20082:17;20075:47;20136:76;20207:4;20198:6;20136:76;;;20128:84;;20223:70;20289:2;20278:9;20274:18;20265:6;20223:70;;;20032:271;;;;;;20310:599;;20518:2;20507:9;20503:18;20495:26;;20568:9;20562:4;20558:20;20554:1;20543:9;20539:17;20532:47;20593:76;20664:4;20655:6;20593:76;;;20585:84;;20680:70;20746:2;20735:9;20731:18;20722:6;20680:70;;;20798:9;20792:4;20788:20;20783:2;20772:9;20768:18;20761:48;20823:76;20894:4;20885:6;20823:76;;;20815:84;;20489:420;;;;;;;20916:321;;21064:2;21053:9;21049:18;21041:26;;21114:9;21108:4;21104:20;21100:1;21089:9;21085:17;21078:47;21139:88;21222:4;21213:6;21205;21139:88;;;21131:96;;21035:202;;;;;;21244:301;;21382:2;21371:9;21367:18;21359:26;;21432:9;21426:4;21422:20;21418:1;21407:9;21403:17;21396:47;21457:78;21530:4;21521:6;21457:78;;;21449:86;;21353:192;;;;;21552:408;;21716:2;21705:9;21701:18;21693:26;;21730:71;21798:1;21787:9;21783:17;21774:6;21730:71;;;21849:9;21843:4;21839:20;21834:2;21823:9;21819:18;21812:48;21874:76;21945:4;21936:6;21874:76;;;21866:84;;21687:273;;;;;;21967:256;;22029:2;22023:9;22013:19;;22067:4;22059:6;22055:17;22166:6;22154:10;22151:22;22130:18;22118:10;22115:34;22112:62;22109:2;;;22187:1;22184;22177:12;22109:2;22207:10;22203:2;22196:22;22007:216;;;;;22230:258;;22373:18;22365:6;22362:30;22359:2;;;22405:1;22402;22395:12;22359:2;22449:4;22445:9;22438:4;22430:6;22426:17;22422:33;22414:41;;22478:4;22472;22468:15;22460:23;;22296:192;;;;22498:128;;22613:4;22605:6;22601:17;22590:28;;22581:45;;;;22636:112;;22737:5;22731:12;22721:22;;22715:33;;;;22755:87;;22831:5;22825:12;22815:22;;22809:33;;;;22849:91;;22929:5;22923:12;22913:22;;22907:33;;;;22947:92;;23028:5;23022:12;23012:22;;23006:33;;;;23048:129;;23165:4;23157:6;23153:17;23142:28;;23134:43;;;;23187:183;;23322:6;23317:3;23310:19;23359:4;23354:3;23350:14;23335:29;;23303:67;;;;;23379:152;;23483:6;23478:3;23471:19;23520:4;23515:3;23511:14;23496:29;;23464:67;;;;;23540:162;;23654:6;23649:3;23642:19;23691:4;23686:3;23682:14;23667:29;;23635:67;;;;;23711:144;;23846:3;23831:18;;23824:31;;;;;23864:163;;23979:6;23974:3;23967:19;24016:4;24011:3;24007:14;23992:29;;23960:67;;;;;24036:145;;24172:3;24157:18;;24150:31;;;;;24189:91;;24251:24;24269:5;24251:24;;;24240:35;;24234:46;;;;24287:99;;24357:24;24375:5;24357:24;;;24346:35;;24340:46;;;;24393:85;;24466:5;24459:13;24452:21;24441:32;;24435:43;;;;24485:72;;24547:5;24536:16;;24530:27;;;;24564:144;;24636:66;24629:5;24625:78;24614:89;;24608:100;;;;24715:84;;24787:6;24780:5;24776:18;24765:29;;24759:40;;;;24806:121;;24879:42;24872:5;24868:54;24857:65;;24851:76;;;;24934:72;;24996:5;24985:16;;24979:27;;;;25013:129;;25100:37;25131:5;25100:37;;;25087:50;;25081:61;;;;25149:121;;25228:37;25259:5;25228:37;;;25215:50;;25209:61;;;;25277:108;;25356:24;25374:5;25356:24;;;25343:37;;25337:48;;;;25393:145;25474:6;25469:3;25464;25451:30;25530:1;25521:6;25516:3;25512:16;25505:27;25444:94;;;;25547:268;25612:1;25619:101;25633:6;25630:1;25627:13;25619:101;;;25709:1;25704:3;25700:11;25694:18;25690:1;25685:3;25681:11;25674:39;25655:2;25652:1;25648:10;25643:15;;25619:101;;;25735:6;25732:1;25729:13;25726:2;;;25800:1;25791:6;25786:3;25782:16;25775:27;25726:2;25596:219;;;;;25823:97;;25911:2;25907:7;25902:2;25895:5;25891:14;25887:28;25877:38;;25871:49;;;;25928:117;25997:24;26015:5;25997:24;;;25990:5;25987:35;25977:2;;26036:1;26033;26026:12;25977:2;25971:74;;26052:111;26118:21;26133:5;26118:21;;;26111:5;26108:32;26098:2;;26154:1;26151;26144:12;26098:2;26092:71;;26170:117;26239:24;26257:5;26239:24;;;26232:5;26229:35;26219:2;;26278:1;26275;26268:12;26219:2;26213:74;;26294:115;26362:23;26379:5;26362:23;;;26355:5;26352:34;26342:2;;26400:1;26397;26390:12;26342:2;26336:73;;26416:115;26484:23;26501:5;26484:23;;;26477:5;26474:34;26464:2;;26522:1;26519;26512:12;26464:2;26458:73;;26538:117;26607:24;26625:5;26607:24;;;26600:5;26597:35;26587:2;;26646:1;26643;26636:12;26587:2;26581:74;","source":"pragma solidity ^0.5.0;\npragma experimental ABIEncoderV2;\n\nimport \"@ensdomains/ens/contracts/ENS.sol\";\nimport \"./profiles/ABIResolver.sol\";\nimport \"./profiles/AddrResolver.sol\";\nimport \"./profiles/ContentHashResolver.sol\";\nimport \"./profiles/DNSResolver.sol\";\nimport \"./profiles/InterfaceResolver.sol\";\nimport \"./profiles/NameResolver.sol\";\nimport \"./profiles/PubkeyResolver.sol\";\nimport \"./profiles/TextResolver.sol\";\n\n/**\n * A simple resolver anyone can use; only allows the owner of a node to set its\n * address.\n */\ncontract PublicResolver is ABIResolver, AddrResolver, ContentHashResolver, DNSResolver, InterfaceResolver, NameResolver, PubkeyResolver, TextResolver {\n ENS ens;\n\n /**\n * A mapping of authorisations. An address that is authorised for a name\n * may make any changes to the name that the owner could, but may not update\n * the set of authorisations.\n * (node, owner, caller) => isAuthorised\n */\n mapping(bytes32=>mapping(address=>mapping(address=>bool))) public authorisations;\n\n event AuthorisationChanged(bytes32 indexed node, address indexed owner, address indexed target, bool isAuthorised);\n\n constructor(ENS _ens) public {\n ens = _ens;\n }\n\n /**\n * @dev Sets or clears an authorisation.\n * Authorisations are specific to the caller. Any account can set an authorisation\n * for any name, but the authorisation that is checked will be that of the\n * current owner of a name. Thus, transferring a name effectively clears any\n * existing authorisations, and new authorisations can be set in advance of\n * an ownership transfer if desired.\n *\n * @param node The name to change the authorisation on.\n * @param target The address that is to be authorised or deauthorised.\n * @param isAuthorised True if the address should be authorised, or false if it should be deauthorised.\n */\n function setAuthorisation(bytes32 node, address target, bool isAuthorised) external {\n authorisations[node][msg.sender][target] = isAuthorised;\n emit AuthorisationChanged(node, msg.sender, target, isAuthorised);\n }\n\n function isAuthorised(bytes32 node) internal view returns(bool) {\n address owner = ens.owner(node);\n return owner == msg.sender || authorisations[node][owner][msg.sender];\n }\n\n function multicall(bytes[] calldata data) external returns(bytes[] memory results) {\n results = new bytes[](data.length);\n for(uint i = 0; i < data.length; i++) {\n (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n require(success);\n results[i] = result;\n }\n return results;\n }\n}\n","sourcePath":"/home/user/Dropbox/projects/resolvers/contracts/PublicResolver.sol","ast":{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/PublicResolver.sol","exportedSymbols":{"PublicResolver":[353]},"id":354,"nodeType":"SourceUnit","nodes":[{"id":181,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:3"},{"id":182,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"24:33:3"},{"absolutePath":"@ensdomains/ens/contracts/ENS.sol","file":"@ensdomains/ens/contracts/ENS.sol","id":183,"nodeType":"ImportDirective","scope":354,"sourceUnit":3783,"src":"59:43:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","id":184,"nodeType":"ImportDirective","scope":354,"sourceUnit":799,"src":"103:36:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","id":185,"nodeType":"ImportDirective","scope":354,"sourceUnit":958,"src":"140:37:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","id":186,"nodeType":"ImportDirective","scope":354,"sourceUnit":1028,"src":"178:44:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","id":187,"nodeType":"ImportDirective","scope":354,"sourceUnit":1459,"src":"223:36:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","id":188,"nodeType":"ImportDirective","scope":354,"sourceUnit":1646,"src":"260:42:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","id":189,"nodeType":"ImportDirective","scope":354,"sourceUnit":1716,"src":"303:37:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","id":190,"nodeType":"ImportDirective","scope":354,"sourceUnit":1807,"src":"341:39:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","id":191,"nodeType":"ImportDirective","scope":354,"sourceUnit":1890,"src":"381:37:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":192,"name":"ABIResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":798,"src":"547:11:3","typeDescriptions":{"typeIdentifier":"t_contract$_ABIResolver_$798","typeString":"contract ABIResolver"}},"id":193,"nodeType":"InheritanceSpecifier","src":"547:11:3"},{"arguments":null,"baseName":{"contractScope":null,"id":194,"name":"AddrResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":957,"src":"560:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_AddrResolver_$957","typeString":"contract AddrResolver"}},"id":195,"nodeType":"InheritanceSpecifier","src":"560:12:3"},{"arguments":null,"baseName":{"contractScope":null,"id":196,"name":"ContentHashResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1027,"src":"574:19:3","typeDescriptions":{"typeIdentifier":"t_contract$_ContentHashResolver_$1027","typeString":"contract ContentHashResolver"}},"id":197,"nodeType":"InheritanceSpecifier","src":"574:19:3"},{"arguments":null,"baseName":{"contractScope":null,"id":198,"name":"DNSResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1458,"src":"595:11:3","typeDescriptions":{"typeIdentifier":"t_contract$_DNSResolver_$1458","typeString":"contract DNSResolver"}},"id":199,"nodeType":"InheritanceSpecifier","src":"595:11:3"},{"arguments":null,"baseName":{"contractScope":null,"id":200,"name":"InterfaceResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1645,"src":"608:17:3","typeDescriptions":{"typeIdentifier":"t_contract$_InterfaceResolver_$1645","typeString":"contract InterfaceResolver"}},"id":201,"nodeType":"InheritanceSpecifier","src":"608:17:3"},{"arguments":null,"baseName":{"contractScope":null,"id":202,"name":"NameResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1715,"src":"627:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$1715","typeString":"contract NameResolver"}},"id":203,"nodeType":"InheritanceSpecifier","src":"627:12:3"},{"arguments":null,"baseName":{"contractScope":null,"id":204,"name":"PubkeyResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1806,"src":"641:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_PubkeyResolver_$1806","typeString":"contract PubkeyResolver"}},"id":205,"nodeType":"InheritanceSpecifier","src":"641:14:3"},{"arguments":null,"baseName":{"contractScope":null,"id":206,"name":"TextResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1889,"src":"657:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_TextResolver_$1889","typeString":"contract TextResolver"}},"id":207,"nodeType":"InheritanceSpecifier","src":"657:12:3"}],"contractDependencies":[662,798,957,1027,1458,1645,1715,1806,1889],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"id":353,"linearizedBaseContracts":[353,1889,1806,1715,1645,1458,1027,957,798,662],"name":"PublicResolver","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":209,"name":"ens","nodeType":"VariableDeclaration","scope":353,"src":"676:7:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":208,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":3782,"src":"676:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":217,"name":"authorisations","nodeType":"VariableDeclaration","scope":353,"src":"943:80:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"typeName":{"id":216,"keyType":{"id":210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"951:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"943:58:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"valueType":{"id":215,"keyType":{"id":211,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"960:40:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":214,"keyType":{"id":212,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"977:22:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":213,"name":"bool","nodeType":"ElementaryTypeName","src":"994:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":null,"id":227,"name":"AuthorisationChanged","nodeType":"EventDefinition","parameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":219,"indexed":true,"name":"node","nodeType":"VariableDeclaration","scope":227,"src":"1057:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1057:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":221,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":227,"src":"1079:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":220,"name":"address","nodeType":"ElementaryTypeName","src":"1079:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":223,"indexed":true,"name":"target","nodeType":"VariableDeclaration","scope":227,"src":"1102:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":225,"indexed":false,"name":"isAuthorised","nodeType":"VariableDeclaration","scope":227,"src":"1126:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"1126:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1056:88:3"},"src":"1030:115:3"},{"body":{"id":236,"nodeType":"Block","src":"1180:27:3","statements":[{"expression":{"argumentTypes":null,"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":232,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1190:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":233,"name":"_ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"1196:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"src":"1190:10:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"id":235,"nodeType":"ExpressionStatement","src":"1190:10:3"}]},"documentation":null,"id":237,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":229,"name":"_ens","nodeType":"VariableDeclaration","scope":237,"src":"1163:8:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":228,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":3782,"src":"1163:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"value":null,"visibility":"internal"}],"src":"1162:10:3"},"returnParameters":{"id":231,"nodeType":"ParameterList","parameters":[],"src":"1180:0:3"},"scope":353,"src":"1151:56:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":265,"nodeType":"Block","src":"1976:147:3","statements":[{"expression":{"argumentTypes":null,"id":255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":246,"name":"authorisations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"1986:14:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":251,"indexExpression":{"argumentTypes":null,"id":247,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"2001:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1986:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":252,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":248,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2007:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2007:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1986:32:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":253,"indexExpression":{"argumentTypes":null,"id":250,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"2019:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1986:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":254,"name":"isAuthorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2029:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1986:55:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":256,"nodeType":"ExpressionStatement","src":"1986:55:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":258,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"2077:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":259,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2083:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2083:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":261,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"2095:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":262,"name":"isAuthorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2103:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":257,"name":"AuthorisationChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"2056:20:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (bytes32,address,address,bool)"}},"id":263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2056:60:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":264,"nodeType":"EmitStatement","src":"2051:65:3"}]},"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","id":266,"implemented":true,"kind":"function","modifiers":[],"name":"setAuthorisation","nodeType":"FunctionDefinition","parameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"name":"node","nodeType":"VariableDeclaration","scope":266,"src":"1918:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1918:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":241,"name":"target","nodeType":"VariableDeclaration","scope":266,"src":"1932:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":240,"name":"address","nodeType":"ElementaryTypeName","src":"1932:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":243,"name":"isAuthorised","nodeType":"VariableDeclaration","scope":266,"src":"1948:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":242,"name":"bool","nodeType":"ElementaryTypeName","src":"1948:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1917:49:3"},"returnParameters":{"id":245,"nodeType":"ParameterList","parameters":[],"src":"1976:0:3"},"scope":353,"src":"1892:231:3","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":294,"nodeType":"Block","src":"2193:127:3","statements":[{"assignments":[274],"declarations":[{"constant":false,"id":274,"name":"owner","nodeType":"VariableDeclaration","scope":294,"src":"2203:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":273,"name":"address","nodeType":"ElementaryTypeName","src":"2203:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":279,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":277,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2229:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":275,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"2219:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3767,"src":"2219:9:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2219:15:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2203:31:3"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":280,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"2251:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":281,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2260:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2260:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2251:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":284,"name":"authorisations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"2274:14:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":286,"indexExpression":{"argumentTypes":null,"id":285,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2289:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":288,"indexExpression":{"argumentTypes":null,"id":287,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"2295:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":291,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":289,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2302:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2302:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:39:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2251:62:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":272,"id":293,"nodeType":"Return","src":"2244:69:3"}]},"documentation":null,"id":295,"implemented":true,"kind":"function","modifiers":[],"name":"isAuthorised","nodeType":"FunctionDefinition","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"name":"node","nodeType":"VariableDeclaration","scope":295,"src":"2151:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2151:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2150:14:3"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"name":"","nodeType":"VariableDeclaration","scope":295,"src":"2187:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":270,"name":"bool","nodeType":"ElementaryTypeName","src":"2187:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2186:6:3"},"scope":353,"src":"2129:191:3","stateMutability":"view","superFunction":617,"visibility":"internal"},{"body":{"id":351,"nodeType":"Block","src":"2409:283:3","statements":[{"expression":{"argumentTypes":null,"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":304,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2419:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":308,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2441:4:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2441:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2429:11:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":305,"name":"bytes","nodeType":"ElementaryTypeName","src":"2433:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":306,"length":null,"nodeType":"ArrayTypeName","src":"2433:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2429:24:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory","typeString":"bytes memory[] memory"}},"src":"2419:34:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":312,"nodeType":"ExpressionStatement","src":"2419:34:3"},{"body":{"id":347,"nodeType":"Block","src":"2501:161:3","statements":[{"assignments":[325,327],"declarations":[{"constant":false,"id":325,"name":"success","nodeType":"VariableDeclaration","scope":347,"src":"2516:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":324,"name":"bool","nodeType":"ElementaryTypeName","src":"2516:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":327,"name":"result","nodeType":"VariableDeclaration","scope":347,"src":"2530:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":326,"name":"bytes","nodeType":"ElementaryTypeName","src":"2530:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":336,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":332,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2580:4:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":334,"indexExpression":{"argumentTypes":null,"id":333,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2585:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2580:7:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":329,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4185,"src":"2561:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_PublicResolver_$353","typeString":"contract PublicResolver"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$353","typeString":"contract PublicResolver"}],"id":328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2553:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2553:26:3","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:35:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2515:73:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":338,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"2610:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":337,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4136,4137],"referencedDeclaration":4136,"src":"2602:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2602:16:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":340,"nodeType":"ExpressionStatement","src":"2602:16:3"},{"expression":{"argumentTypes":null,"id":345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":341,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2632:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":343,"indexExpression":{"argumentTypes":null,"id":342,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2640:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2632:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":344,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2645:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"2632:19:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}},"id":346,"nodeType":"ExpressionStatement","src":"2632:19:3"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2479:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":318,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2483:4:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2483:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2479:15:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":348,"initializationExpression":{"assignments":[314],"declarations":[{"constant":false,"id":314,"name":"i","nodeType":"VariableDeclaration","scope":348,"src":"2467:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":313,"name":"uint","nodeType":"ElementaryTypeName","src":"2467:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":316,"initialValue":{"argumentTypes":null,"hexValue":"30","id":315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2476:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2467:10:3"},"loopExpression":{"expression":{"argumentTypes":null,"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2496:3:3","subExpression":{"argumentTypes":null,"id":321,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2496:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":323,"nodeType":"ExpressionStatement","src":"2496:3:3"},"nodeType":"ForStatement","src":"2463:199:3"},{"expression":{"argumentTypes":null,"id":349,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2678:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":303,"id":350,"nodeType":"Return","src":"2671:14:3"}]},"documentation":null,"id":352,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"name":"data","nodeType":"VariableDeclaration","scope":352,"src":"2345:21:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":296,"name":"bytes","nodeType":"ElementaryTypeName","src":"2345:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":297,"length":null,"nodeType":"ArrayTypeName","src":"2345:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"2344:23:3"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"name":"results","nodeType":"VariableDeclaration","scope":352,"src":"2385:22:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":300,"name":"bytes","nodeType":"ElementaryTypeName","src":"2385:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":301,"length":null,"nodeType":"ArrayTypeName","src":"2385:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"2384:24:3"},"scope":353,"src":"2326:366:3","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":354,"src":"520:2174:3"}],"src":"0:2695:3"},"legacyAST":{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/PublicResolver.sol","exportedSymbols":{"PublicResolver":[353]},"id":354,"nodeType":"SourceUnit","nodes":[{"id":181,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:3"},{"id":182,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"24:33:3"},{"absolutePath":"@ensdomains/ens/contracts/ENS.sol","file":"@ensdomains/ens/contracts/ENS.sol","id":183,"nodeType":"ImportDirective","scope":354,"sourceUnit":3783,"src":"59:43:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","id":184,"nodeType":"ImportDirective","scope":354,"sourceUnit":799,"src":"103:36:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","id":185,"nodeType":"ImportDirective","scope":354,"sourceUnit":958,"src":"140:37:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","id":186,"nodeType":"ImportDirective","scope":354,"sourceUnit":1028,"src":"178:44:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","id":187,"nodeType":"ImportDirective","scope":354,"sourceUnit":1459,"src":"223:36:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","id":188,"nodeType":"ImportDirective","scope":354,"sourceUnit":1646,"src":"260:42:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","id":189,"nodeType":"ImportDirective","scope":354,"sourceUnit":1716,"src":"303:37:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","id":190,"nodeType":"ImportDirective","scope":354,"sourceUnit":1807,"src":"341:39:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"/home/user/Dropbox/projects/resolvers/contracts/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","id":191,"nodeType":"ImportDirective","scope":354,"sourceUnit":1890,"src":"381:37:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":192,"name":"ABIResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":798,"src":"547:11:3","typeDescriptions":{"typeIdentifier":"t_contract$_ABIResolver_$798","typeString":"contract ABIResolver"}},"id":193,"nodeType":"InheritanceSpecifier","src":"547:11:3"},{"arguments":null,"baseName":{"contractScope":null,"id":194,"name":"AddrResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":957,"src":"560:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_AddrResolver_$957","typeString":"contract AddrResolver"}},"id":195,"nodeType":"InheritanceSpecifier","src":"560:12:3"},{"arguments":null,"baseName":{"contractScope":null,"id":196,"name":"ContentHashResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1027,"src":"574:19:3","typeDescriptions":{"typeIdentifier":"t_contract$_ContentHashResolver_$1027","typeString":"contract ContentHashResolver"}},"id":197,"nodeType":"InheritanceSpecifier","src":"574:19:3"},{"arguments":null,"baseName":{"contractScope":null,"id":198,"name":"DNSResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1458,"src":"595:11:3","typeDescriptions":{"typeIdentifier":"t_contract$_DNSResolver_$1458","typeString":"contract DNSResolver"}},"id":199,"nodeType":"InheritanceSpecifier","src":"595:11:3"},{"arguments":null,"baseName":{"contractScope":null,"id":200,"name":"InterfaceResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1645,"src":"608:17:3","typeDescriptions":{"typeIdentifier":"t_contract$_InterfaceResolver_$1645","typeString":"contract InterfaceResolver"}},"id":201,"nodeType":"InheritanceSpecifier","src":"608:17:3"},{"arguments":null,"baseName":{"contractScope":null,"id":202,"name":"NameResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1715,"src":"627:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$1715","typeString":"contract NameResolver"}},"id":203,"nodeType":"InheritanceSpecifier","src":"627:12:3"},{"arguments":null,"baseName":{"contractScope":null,"id":204,"name":"PubkeyResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1806,"src":"641:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_PubkeyResolver_$1806","typeString":"contract PubkeyResolver"}},"id":205,"nodeType":"InheritanceSpecifier","src":"641:14:3"},{"arguments":null,"baseName":{"contractScope":null,"id":206,"name":"TextResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":1889,"src":"657:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_TextResolver_$1889","typeString":"contract TextResolver"}},"id":207,"nodeType":"InheritanceSpecifier","src":"657:12:3"}],"contractDependencies":[662,798,957,1027,1458,1645,1715,1806,1889],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"id":353,"linearizedBaseContracts":[353,1889,1806,1715,1645,1458,1027,957,798,662],"name":"PublicResolver","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":209,"name":"ens","nodeType":"VariableDeclaration","scope":353,"src":"676:7:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":208,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":3782,"src":"676:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":217,"name":"authorisations","nodeType":"VariableDeclaration","scope":353,"src":"943:80:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"typeName":{"id":216,"keyType":{"id":210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"951:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"943:58:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"valueType":{"id":215,"keyType":{"id":211,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"960:40:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":214,"keyType":{"id":212,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"977:22:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":213,"name":"bool","nodeType":"ElementaryTypeName","src":"994:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":null,"id":227,"name":"AuthorisationChanged","nodeType":"EventDefinition","parameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":219,"indexed":true,"name":"node","nodeType":"VariableDeclaration","scope":227,"src":"1057:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1057:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":221,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":227,"src":"1079:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":220,"name":"address","nodeType":"ElementaryTypeName","src":"1079:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":223,"indexed":true,"name":"target","nodeType":"VariableDeclaration","scope":227,"src":"1102:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":225,"indexed":false,"name":"isAuthorised","nodeType":"VariableDeclaration","scope":227,"src":"1126:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"1126:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1056:88:3"},"src":"1030:115:3"},{"body":{"id":236,"nodeType":"Block","src":"1180:27:3","statements":[{"expression":{"argumentTypes":null,"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":232,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1190:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":233,"name":"_ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"1196:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"src":"1190:10:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"id":235,"nodeType":"ExpressionStatement","src":"1190:10:3"}]},"documentation":null,"id":237,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":229,"name":"_ens","nodeType":"VariableDeclaration","scope":237,"src":"1163:8:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":228,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":3782,"src":"1163:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"value":null,"visibility":"internal"}],"src":"1162:10:3"},"returnParameters":{"id":231,"nodeType":"ParameterList","parameters":[],"src":"1180:0:3"},"scope":353,"src":"1151:56:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":265,"nodeType":"Block","src":"1976:147:3","statements":[{"expression":{"argumentTypes":null,"id":255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":246,"name":"authorisations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"1986:14:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":251,"indexExpression":{"argumentTypes":null,"id":247,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"2001:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1986:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":252,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":248,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2007:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2007:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1986:32:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":253,"indexExpression":{"argumentTypes":null,"id":250,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"2019:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1986:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":254,"name":"isAuthorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2029:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1986:55:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":256,"nodeType":"ExpressionStatement","src":"1986:55:3"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":258,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"2077:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":259,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2083:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2083:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":261,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"2095:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":262,"name":"isAuthorised","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2103:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":257,"name":"AuthorisationChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"2056:20:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (bytes32,address,address,bool)"}},"id":263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2056:60:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":264,"nodeType":"EmitStatement","src":"2051:65:3"}]},"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","id":266,"implemented":true,"kind":"function","modifiers":[],"name":"setAuthorisation","nodeType":"FunctionDefinition","parameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"name":"node","nodeType":"VariableDeclaration","scope":266,"src":"1918:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1918:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":241,"name":"target","nodeType":"VariableDeclaration","scope":266,"src":"1932:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":240,"name":"address","nodeType":"ElementaryTypeName","src":"1932:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":243,"name":"isAuthorised","nodeType":"VariableDeclaration","scope":266,"src":"1948:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":242,"name":"bool","nodeType":"ElementaryTypeName","src":"1948:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1917:49:3"},"returnParameters":{"id":245,"nodeType":"ParameterList","parameters":[],"src":"1976:0:3"},"scope":353,"src":"1892:231:3","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":294,"nodeType":"Block","src":"2193:127:3","statements":[{"assignments":[274],"declarations":[{"constant":false,"id":274,"name":"owner","nodeType":"VariableDeclaration","scope":294,"src":"2203:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":273,"name":"address","nodeType":"ElementaryTypeName","src":"2203:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":279,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":277,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2229:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":275,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"2219:3:3","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$3782","typeString":"contract ENS"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3767,"src":"2219:9:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2219:15:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2203:31:3"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":280,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"2251:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":281,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2260:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2260:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2251:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":284,"name":"authorisations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"2274:14:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":286,"indexExpression":{"argumentTypes":null,"id":285,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2289:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":288,"indexExpression":{"argumentTypes":null,"id":287,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"2295:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":291,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":289,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4133,"src":"2302:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2302:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:39:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2251:62:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":272,"id":293,"nodeType":"Return","src":"2244:69:3"}]},"documentation":null,"id":295,"implemented":true,"kind":"function","modifiers":[],"name":"isAuthorised","nodeType":"FunctionDefinition","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"name":"node","nodeType":"VariableDeclaration","scope":295,"src":"2151:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2151:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2150:14:3"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"name":"","nodeType":"VariableDeclaration","scope":295,"src":"2187:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":270,"name":"bool","nodeType":"ElementaryTypeName","src":"2187:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2186:6:3"},"scope":353,"src":"2129:191:3","stateMutability":"view","superFunction":617,"visibility":"internal"},{"body":{"id":351,"nodeType":"Block","src":"2409:283:3","statements":[{"expression":{"argumentTypes":null,"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":304,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2419:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":308,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2441:4:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2441:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2429:11:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_$dyn_memory_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":305,"name":"bytes","nodeType":"ElementaryTypeName","src":"2433:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":306,"length":null,"nodeType":"ArrayTypeName","src":"2433:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2429:24:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory","typeString":"bytes memory[] memory"}},"src":"2419:34:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":312,"nodeType":"ExpressionStatement","src":"2419:34:3"},{"body":{"id":347,"nodeType":"Block","src":"2501:161:3","statements":[{"assignments":[325,327],"declarations":[{"constant":false,"id":325,"name":"success","nodeType":"VariableDeclaration","scope":347,"src":"2516:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":324,"name":"bool","nodeType":"ElementaryTypeName","src":"2516:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":327,"name":"result","nodeType":"VariableDeclaration","scope":347,"src":"2530:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":326,"name":"bytes","nodeType":"ElementaryTypeName","src":"2530:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":336,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":332,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2580:4:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":334,"indexExpression":{"argumentTypes":null,"id":333,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2585:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2580:7:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":329,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4185,"src":"2561:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_PublicResolver_$353","typeString":"contract PublicResolver"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$353","typeString":"contract PublicResolver"}],"id":328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2553:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2553:26:3","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:35:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2515:73:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":338,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"2610:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":337,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4136,4137],"referencedDeclaration":4136,"src":"2602:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2602:16:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":340,"nodeType":"ExpressionStatement","src":"2602:16:3"},{"expression":{"argumentTypes":null,"id":345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":341,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2632:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":343,"indexExpression":{"argumentTypes":null,"id":342,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2640:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2632:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":344,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2645:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"2632:19:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}},"id":346,"nodeType":"ExpressionStatement","src":"2632:19:3"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2479:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":318,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2483:4:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2483:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2479:15:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":348,"initializationExpression":{"assignments":[314],"declarations":[{"constant":false,"id":314,"name":"i","nodeType":"VariableDeclaration","scope":348,"src":"2467:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":313,"name":"uint","nodeType":"ElementaryTypeName","src":"2467:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":316,"initialValue":{"argumentTypes":null,"hexValue":"30","id":315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2476:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2467:10:3"},"loopExpression":{"expression":{"argumentTypes":null,"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2496:3:3","subExpression":{"argumentTypes":null,"id":321,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"2496:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":323,"nodeType":"ExpressionStatement","src":"2496:3:3"},"nodeType":"ForStatement","src":"2463:199:3"},{"expression":{"argumentTypes":null,"id":349,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2678:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":303,"id":350,"nodeType":"Return","src":"2671:14:3"}]},"documentation":null,"id":352,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"name":"data","nodeType":"VariableDeclaration","scope":352,"src":"2345:21:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":296,"name":"bytes","nodeType":"ElementaryTypeName","src":"2345:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":297,"length":null,"nodeType":"ArrayTypeName","src":"2345:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"2344:23:3"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"name":"results","nodeType":"VariableDeclaration","scope":352,"src":"2385:22:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":300,"name":"bytes","nodeType":"ElementaryTypeName","src":"2385:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":301,"length":null,"nodeType":"ArrayTypeName","src":"2385:7:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"2384:24:3"},"scope":353,"src":"2326:366:3","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":354,"src":"520:2174:3"}],"src":"0:2695:3"},"compiler":{"name":"solc","version":"0.5.8+commit.23d335f2.Emscripten.clang"},"networks":{},"schemaVersion":"3.0.16","updatedAt":"2020-02-10T18:46:21.022Z","devdoc":{"methods":{"ABI(bytes32,uint256)":{"params":{"contentTypes":"A bitwise OR of the ABI formats accepted by the caller.","node":"The ENS node to query"},"return":"contentType The content type of the return valuedata The ABI data"},"addr(bytes32)":{"params":{"node":"The ENS node to query."},"return":"The associated address."},"clearDNSZone(bytes32)":{"params":{"node":"the namehash of the node for which to clear the zone"}},"contenthash(bytes32)":{"params":{"node":"The ENS node to query."},"return":"The associated contenthash."},"dnsRecord(bytes32,bytes32,uint16)":{"params":{"name":"the keccak-256 hash of the fully-qualified name for which to fetch the record","node":"the namehash of the node for which to fetch the record","resource":"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"},"return":"the DNS record in wire format if present, otherwise empty"},"hasDNSRecords(bytes32,bytes32)":{"params":{"name":"the namehash of the node for which to check the records","node":"the namehash of the node for which to check the records"}},"interfaceImplementer(bytes32,bytes4)":{"params":{"interfaceID":"The EIP 168 interface ID to check for.","node":"The ENS node to query."},"return":"The address that implements this interface, or 0 if the interface is unsupported."},"name(bytes32)":{"params":{"node":"The ENS node to query."},"return":"The associated name."},"pubkey(bytes32)":{"params":{"node":"The ENS node to query"},"return":"x, y the X and Y coordinates of the curve point for the public key."},"setABI(bytes32,uint256,bytes)":{"params":{"contentType":"The content type of the ABI","data":"The ABI data.","node":"The node to update."}},"setAddr(bytes32,address)":{"params":{"a":"The address to set.","node":"The node to update."}},"setAuthorisation(bytes32,address,bool)":{"details":"Sets or clears an authorisation. Authorisations are specific to the caller. Any account can set an authorisation for any name, but the authorisation that is checked will be that of the current owner of a name. Thus, transferring a name effectively clears any existing authorisations, and new authorisations can be set in advance of an ownership transfer if desired.","params":{"isAuthorised":"True if the address should be authorised, or false if it should be deauthorised.","node":"The name to change the authorisation on.","target":"The address that is to be authorised or deauthorised."}},"setContenthash(bytes32,bytes)":{"params":{"hash":"The contenthash to set","node":"The node to update."}},"setDNSRecords(bytes32,bytes)":{"params":{"data":"the DNS wire format records to set","node":"the namehash of the node for which to set the records"}},"setInterface(bytes32,bytes4,address)":{"params":{"implementer":"The address of a contract that implements this interface for this node.","interfaceID":"The EIP 168 interface ID.","node":"The node to update."}},"setName(bytes32,string)":{"params":{"name":"The name to set.","node":"The node to update."}},"setPubkey(bytes32,bytes32,bytes32)":{"params":{"node":"The ENS node to query","x":"the X coordinate of the curve point for the public key.","y":"the Y coordinate of the curve point for the public key."}},"setText(bytes32,string,string)":{"params":{"key":"The key to set.","node":"The node to update.","value":"The text data value to set."}},"text(bytes32,string)":{"params":{"key":"The text data key to query.","node":"The ENS node to query."},"return":"The associated text data."}}},"userdoc":{"methods":{"ABI(bytes32,uint256)":{"notice":"Returns the ABI associated with an ENS node. Defined in EIP205."},"addr(bytes32)":{"notice":"Returns the address associated with an ENS node."},"clearDNSZone(bytes32)":{"notice":"Clear all information for a DNS zone."},"contenthash(bytes32)":{"notice":"Returns the contenthash associated with an ENS node."},"dnsRecord(bytes32,bytes32,uint16)":{"notice":"Obtain a DNS record."},"hasDNSRecords(bytes32,bytes32)":{"notice":"Check if a given node has records."},"interfaceImplementer(bytes32,bytes4)":{"notice":"Returns the address of a contract that implements the specified interface for this name. If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`. If `addr()` is set, a contract exists at that address, and that contract implements EIP168 and returns `true` for the specified interfaceID, its address will be returned."},"name(bytes32)":{"notice":"Returns the name associated with an ENS node, for reverse records. Defined in EIP181."},"pubkey(bytes32)":{"notice":"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."},"setABI(bytes32,uint256,bytes)":{"notice":"Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string."},"setAddr(bytes32,address)":{"notice":"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."},"setContenthash(bytes32,bytes)":{"notice":"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry."},"setDNSRecords(bytes32,bytes)":{"notice":"Set one or more DNS records. Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied: a.example.com IN A 1.2.3.4 a.example.com IN A 5.6.7.8 www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied: a.example.com IN A 1.2.3.4 www.example.com IN CNAME a.example.com. a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first."},"setInterface(bytes32,bytes4,address)":{"notice":"Sets an interface associated with a name. Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support."},"setName(bytes32,string)":{"notice":"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."},"setPubkey(bytes32,bytes32,bytes32)":{"notice":"Sets the SECP256k1 public key associated with an ENS node."},"setText(bytes32,string,string)":{"notice":"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."},"text(bytes32,string)":{"notice":"Returns the text data associated with an ENS node and key."}},"notice":"A simple resolver anyone can use; only allows the owner of a node to set its address."}} \ No newline at end of file diff --git a/waffle-ens/src/abis/ReverseRegistrar.json b/waffle-ens/src/abis/ReverseRegistrar.json new file mode 100644 index 000000000..ef497c5d2 --- /dev/null +++ b/waffle-ens/src/abis/ReverseRegistrar.json @@ -0,0 +1 @@ +{"contractName":"ReverseRegistrar","abi":[{"inputs":[{"internalType":"contract ENS","name":"ensAddr","type":"address"},{"internalType":"contract NameResolver","name":"resolverAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"ADDR_REVERSE_NODE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultResolver","outputs":[{"internalType":"contract NameResolver","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"claim","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimWithResolver","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"setName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"},{\"internalType\":\"contract NameResolver\",\"name\":\"resolverAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"ADDR_REVERSE_NODE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimWithResolver\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"defaultResolver\",\"outputs\":[{\"internalType\":\"contract NameResolver\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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.\"},\"return\":\"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.\"},\"return\":\"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\"},\"return\":\"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.\"},\"return\":\"The ENS node hash of the reverse record.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/makoto/work/ens/ens/contracts/ReverseRegistrar.sol\":\"ReverseRegistrar\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/makoto/work/ens/ens/contracts/ENS.sol\":{\"keccak256\":\"0x10b88673d8c180cd62523be4fec7607c65594eb4f0c561fa0fbc0784422b4871\",\"urls\":[\"bzz-raw://b3de1882a4a1a1b13c27ee6dc04cc58c34ac392c80cad507de2cdfa8c02712fe\",\"dweb:/ipfs/QmeKcaBF8QdJjXiqFrPJkAtK3et5kUL8XJrnHjwhAThRMT\"]},\"/Users/makoto/work/ens/ens/contracts/ReverseRegistrar.sol\":{\"keccak256\":\"0x9c9d6e34ff144e8df8e7ae290a5c9a28437bf0f97f0fcf1cdce371260914c3ba\",\"urls\":[\"bzz-raw://433e7a35db75f7156263a40786522cf20ad374df6fd2ad8a872e62520334116e\",\"dweb:/ipfs/Qmf6TX1oXrAT8yUET77DbpWRM8jYxtr3NCCMypwVVZTfLW\"]}},\"version\":1}","bytecode":"0x608060405234801561001057600080fd5b50604051610e11380380610e118339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be37f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561016657600080fd5b505afa15801561017a573d6000803e3d6000fd5b505050506040513d602081101561019057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610293578073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561025657600080fd5b505af115801561026a573d6000803e3d6000fd5b505050506040513d602081101561028057600080fd5b8101908080519060200190929190505050505b505050610b6c806102a56000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637cf8a2eb1161005b5780637cf8a2eb1461019c578063828eab0e146101ba578063bffbe61c14610204578063c47f00271461025c5761007d565b80630f5a5466146100825780631e83409a146100fa5780633f15457f14610152575b600080fd5b6100e46004803603604081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061032b565b6040518082815260200191505060405180910390f35b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b0565b6040518082815260200191505060405180910390f35b61015a6108c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a46108e9565b6040518082815260200191505060405180910390f35b6101c2610910565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102466004803603602081101561021a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610936565b6040518082815260200191505060405180910390f35b6103156004803603602081101561027257600080fd5b810190808035906020019064010000000081111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111640100000000831117156102c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610999565b6040518082815260200191505060405180910390f35b60008061033733610acd565b905060007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b82604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561040357600080fd5b505afa158015610417573d6000803e3d6000fd5b505050506040513d602081101561042d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561055557506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104ea57600080fd5b505afa1580156104fe573d6000803e3d6000fd5b505050506040513d602081101561051457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610761573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a0576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85306040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561066057600080fd5b505af1158015610674573d6000803e3d6000fd5b505050506040513d602081101561068a57600080fd5b8101908080519060200190929190505050503090505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a83876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a4576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85896040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561086757600080fd5b505af115801561087b573d6000803e3d6000fd5b505050506040513d602081101561089157600080fd5b8101908080519060200190929190505050505b81935050505092915050565b60006108bd82600061032b565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b61096583610acd565b6040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000806109c830600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661032b565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637737221382856040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a5f578082015181840152602081019050610a44565b50505050905090810190601f168015610a8c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610aac57600080fd5b505af1158015610ac0573d6000803e3d6000fd5b5050505080915050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b6000811115610b295760018103905081600f85161a815360108404935060018103905081600f85161a8153601084049350610af3565b50602860002091505091905056fea265627a7a723158203c3a1e43dd29f27c43ee396cdbe4b2cee2e5b8b0cee99aecdde9c3342eea702264736f6c63430005100032","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637cf8a2eb1161005b5780637cf8a2eb1461019c578063828eab0e146101ba578063bffbe61c14610204578063c47f00271461025c5761007d565b80630f5a5466146100825780631e83409a146100fa5780633f15457f14610152575b600080fd5b6100e46004803603604081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061032b565b6040518082815260200191505060405180910390f35b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b0565b6040518082815260200191505060405180910390f35b61015a6108c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a46108e9565b6040518082815260200191505060405180910390f35b6101c2610910565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102466004803603602081101561021a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610936565b6040518082815260200191505060405180910390f35b6103156004803603602081101561027257600080fd5b810190808035906020019064010000000081111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111640100000000831117156102c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610999565b6040518082815260200191505060405180910390f35b60008061033733610acd565b905060007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b82604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561040357600080fd5b505afa158015610417573d6000803e3d6000fd5b505050506040513d602081101561042d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561055557506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104ea57600080fd5b505afa1580156104fe573d6000803e3d6000fd5b505050506040513d602081101561051457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610761573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a0576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85306040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561066057600080fd5b505af1158015610674573d6000803e3d6000fd5b505050506040513d602081101561068a57600080fd5b8101908080519060200190929190505050503090505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a83876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a4576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85896040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561086757600080fd5b505af115801561087b573d6000803e3d6000fd5b505050506040513d602081101561089157600080fd5b8101908080519060200190929190505050505b81935050505092915050565b60006108bd82600061032b565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b61096583610acd565b6040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000806109c830600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661032b565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637737221382856040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a5f578082015181840152602081019050610a44565b50505050905090810190601f168015610a8c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610aac57600080fd5b505af1158015610ac0573d6000803e3d6000fd5b5050505080915050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b6000811115610b295760018103905081600f85161a815360108404935060018103905081600f85161a8153601084049350610af3565b50602860002091505091905056fea265627a7a723158203c3a1e43dd29f27c43ee396cdbe4b2cee2e5b8b0cee99aecdde9c3342eea702264736f6c63430005100032","sourceMap":"136:4188:9:-;;;546:391;8:9:-1;5:2;;;30:1;27;20:12;5:2;546:391:9;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;546:391:9;;;;;;;;;;;;;;;;;;;;;;;;;621:7;615:3;;:13;;;;;;;;;;;;;;;;;;656:12;638:15;;:30;;;;;;;;;;;;;;;;;;745:29;794:3;;;;;;;;;;;:9;;;244:66;804:17;;794:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;794:28:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;794:28:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;794:28:9;;;;;;;;;;;;;;;;745:78;;870:3;837:37;;845:12;837:37;;;833:98;;890:12;:18;;;909:10;890:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;890:30:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;890:30:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;890:30:9;;;;;;;;;;;;;;;;;833:98;546:391;;;136:4188;;;;;;","deployedSourceMap":"136:4188:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;136:4188:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:871;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:871:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1204:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1204:117:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;317:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;200:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;337:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3245:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3245:150:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2859:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2859:218:9;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2859:218:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2859:218:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2859:218:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2859:218:9;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1669:871;1745:7;1764:13;1780:26;1795:10;1780:14;:26::i;:::-;1764:42;;1816:12;244:66;1858:17;;1877:5;1841:42;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1841:42:9;;;1831:53;;;;;;1816:68;;1894:20;1917:3;;;;;;;;;;;:9;;;1927:4;1917:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1917:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1917:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1917:15:9;;;;;;;;;;;;;;;;1894:38;;2010:3;1990:24;;:8;:24;;;;:58;;;;;2030:3;;;;;;;;;;;:12;;;2043:4;2030:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2030:18:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2030:18:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2030:18:9;;;;;;;;;;;;;;;;2018:30;;:8;:30;;;;1990:58;1986:372;;;2157:4;2133:29;;:12;:29;;;2129:174;;2182:3;;;;;;;;;;;:19;;;244:66;2202:17;;2221:5;2236:4;2182:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2182:60:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2182:60:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2182:60:9;;;;;;;;;;;;;;;;;2283:4;2260:28;;2129:174;2316:3;;;;;;;;;;;:15;;;2332:4;2338:8;2316:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2316:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2316:31:9;;;;1986:372;2428:5;2412:21;;:12;:21;;;2408:104;;2449:3;;;;;;;;;;;:19;;;244:66;2469:17;;2488:5;2495;2449:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2449:52:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2449:52:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2449:52:9;;;;;;;;;;;;;;;;;2408:104;2529:4;2522:11;;;;;1669:871;;;;:::o;1204:117::-;1250:7;1276:38;1294:5;1309:3;1276:17;:38::i;:::-;1269:45;;1204:117;;;:::o;317:14::-;;;;;;;;;;;;;:::o;200:110::-;244:66;200:110;;;:::o;337:35::-;;;;;;;;;;;;;:::o;3245:150::-;3294:7;244:66;3347:17;;3366:20;3381:4;3366:14;:20::i;:::-;3330:57;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3330:57:9;;;3320:68;;;;;;3313:75;;3245:150;;;:::o;2859:218::-;2912:7;2931:12;2946:58;2972:4;2987:15;;;;;;;;;;;2946:17;:58::i;:::-;2931:73;;3014:15;;;;;;;;;;;:23;;;3038:4;3044;3014:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3014:35:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3014:35:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3014:35:9;;;;3066:4;3059:11;;;2859:218;;;:::o;3696:626::-;3756:11;3885:66;3980:2;3965:304;3991:1;3988;3985:8;3965:304;;;4028:1;4025;4021:9;4016:14;;4079:6;4073:3;4067:4;4063:14;4058:28;4055:1;4047:40;4122:4;4116;4112:15;4104:23;;4156:1;4153;4149:9;4144:14;;4207:6;4201:3;4195:4;4191:14;4186:28;4183:1;4175:40;4250:4;4244;4240:15;4232:23;;3965:304;;;3969:15;4303:2;4300:1;4290:16;4283:23;;3857:459;;;;:::o","source":"pragma solidity ^0.5.0;\n\nimport \"./ENS.sol\";\n\ncontract NameResolver {\n function setName(bytes32 node, string memory name) public;\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 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":"/Users/makoto/work/ens/ens/contracts/ReverseRegistrar.sol","ast":{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ReverseRegistrar.sol","exportedSymbols":{"NameResolver":[2738],"ReverseRegistrar":[2954]},"id":2955,"nodeType":"SourceUnit","nodes":[{"id":2729,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:9"},{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENS.sol","file":"./ENS.sol","id":2730,"nodeType":"ImportDirective","scope":2955,"sourceUnit":437,"src":"25:19:9","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":2738,"linearizedBaseContracts":[2738],"name":"NameResolver","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":2737,"implemented":false,"kind":"function","modifiers":[],"name":"setName","nodeType":"FunctionDefinition","parameters":{"id":2735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"name":"node","nodeType":"VariableDeclaration","scope":2737,"src":"91:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"91:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":2734,"name":"name","nodeType":"VariableDeclaration","scope":2737,"src":"105:18:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2733,"name":"string","nodeType":"ElementaryTypeName","src":"105:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"90:34:9"},"returnParameters":{"id":2736,"nodeType":"ParameterList","parameters":[],"src":"131:0:9"},"scope":2738,"src":"74:58:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":2955,"src":"46:88:9"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":2954,"linearizedBaseContracts":[2954],"name":"ReverseRegistrar","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2741,"name":"ADDR_REVERSE_NODE","nodeType":"VariableDeclaration","scope":2954,"src":"200:110:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"200:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"hexValue":"307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532","id":2740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"244:66:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1","typeString":"int_const 6595...(69 digits omitted)...3154"},"value":"0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"},"visibility":"public"},{"constant":false,"id":2743,"name":"ens","nodeType":"VariableDeclaration","scope":2954,"src":"317:14:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":2742,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"317:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"public"},{"constant":false,"id":2745,"name":"defaultResolver","nodeType":"VariableDeclaration","scope":2954,"src":"337:35:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"},"typeName":{"contractScope":null,"id":2744,"name":"NameResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":2738,"src":"337:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"value":null,"visibility":"public"},{"body":{"id":2785,"nodeType":"Block","src":"605:332:9","statements":[{"expression":{"argumentTypes":null,"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2752,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"615:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2753,"name":"ensAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"621:7:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"src":"615:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2755,"nodeType":"ExpressionStatement","src":"615:13:9"},{"expression":{"argumentTypes":null,"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2756,"name":"defaultResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"638:15:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2757,"name":"resolverAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"656:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"src":"638:30:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"id":2759,"nodeType":"ExpressionStatement","src":"638:30:9"},{"assignments":[2761],"declarations":[{"constant":false,"id":2761,"name":"oldRegistrar","nodeType":"VariableDeclaration","scope":2785,"src":"745:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"},"typeName":{"contractScope":null,"id":2760,"name":"ReverseRegistrar","nodeType":"UserDefinedTypeName","referencedDeclaration":2954,"src":"745:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}},"value":null,"visibility":"internal"}],"id":2768,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2765,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"804:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2763,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"794:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":405,"src":"794:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:28:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2762,"name":"ReverseRegistrar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"777:16:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ReverseRegistrar_$2954_$","typeString":"type(contract ReverseRegistrar)"}},"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"777:46:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}},"nodeType":"VariableDeclarationStatement","src":"745:78:9"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2770,"name":"oldRegistrar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"845:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"837:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"837:21:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"870:3:9","subdenomination":null,"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":2772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"862:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"862:12:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"837:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2784,"nodeType":"IfStatement","src":"833:98:9","trueBody":{"id":2783,"nodeType":"Block","src":"876:55:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2779,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"909:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"909:10:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":2776,"name":"oldRegistrar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"890:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":2801,"src":"890:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$","typeString":"function (address) external returns (bytes32)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"890:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2782,"nodeType":"ExpressionStatement","src":"890:30:9"}]}}]},"documentation":"@dev Constructor\n@param ensAddr The address of the ENS registry.\n@param resolverAddr The address of the default reverse resolver.","id":2786,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2747,"name":"ensAddr","nodeType":"VariableDeclaration","scope":2786,"src":"558:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":2746,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"558:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":2749,"name":"resolverAddr","nodeType":"VariableDeclaration","scope":2786,"src":"571:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"},"typeName":{"contractScope":null,"id":2748,"name":"NameResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":2738,"src":"571:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"value":null,"visibility":"internal"}],"src":"557:40:9"},"returnParameters":{"id":2751,"nodeType":"ParameterList","parameters":[],"src":"605:0:9"},"scope":2954,"src":"546:391:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2800,"nodeType":"Block","src":"1259:62:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2794,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"1294:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:3:9","subdenomination":null,"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":2795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1301:12:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2793,"name":"claimWithResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"1276:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$","typeString":"function (address,address) returns (bytes32)"}},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1276:38:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2792,"id":2799,"nodeType":"Return","src":"1269:45:9"}]},"documentation":"@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":2801,"implemented":true,"kind":"function","modifiers":[],"name":"claim","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"name":"owner","nodeType":"VariableDeclaration","scope":2801,"src":"1219:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2787,"name":"address","nodeType":"ElementaryTypeName","src":"1219:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1218:15:9"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"name":"","nodeType":"VariableDeclaration","scope":2801,"src":"1250:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1250:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1249:9:9"},"scope":2954,"src":"1204:117:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2893,"nodeType":"Block","src":"1754:786:9","statements":[{"assignments":[2811],"declarations":[{"constant":false,"id":2811,"name":"label","nodeType":"VariableDeclaration","scope":2893,"src":"1764:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1764:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":2816,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2813,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"1795:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1795:10:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2812,"name":"sha3HexAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"1780:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1780:26:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1764:42:9"},{"assignments":[2818],"declarations":[{"constant":false,"id":2818,"name":"node","nodeType":"VariableDeclaration","scope":2893,"src":"1816:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1816:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":2826,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2822,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"1858:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2823,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"1877:5:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2820,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"1841:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1841:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1841:42:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2819,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"1831:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1831:53:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1816:68:9"},{"assignments":[2828],"declarations":[{"constant":false,"id":2828,"name":"currentOwner","nodeType":"VariableDeclaration","scope":2893,"src":"1894:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2827,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2833,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2831,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"1927:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2829,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"1917:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":405,"src":"1917:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1917:15:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1894:38:9"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2834,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"1990:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2010:3:9","subdenomination":null,"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":2835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2002:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2002:12:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1990:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2839,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"2018:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2842,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2043:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2840,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2030:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":412,"src":"2030:12:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":2843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2030:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2018:30:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1990:58:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2877,"nodeType":"IfStatement","src":"1986:372:9","trueBody":{"id":2876,"nodeType":"Block","src":"2050:308:9","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2846,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"2133:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2848,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2157:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2149:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2149:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2133:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2868,"nodeType":"IfStatement","src":"2129:174:9","trueBody":{"id":2867,"nodeType":"Block","src":"2164:139:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2854,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"2202:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2855,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"2221:5:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2857,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2236:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2228:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2228:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2851,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2182:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":370,"src":"2182:19:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) external returns (bytes32)"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2182:60:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2860,"nodeType":"ExpressionStatement","src":"2182:60:9"},{"expression":{"argumentTypes":null,"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2861,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"2260:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2863,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2283:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2275:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2275:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2260:28:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2866,"nodeType":"ExpressionStatement","src":"2260:28:9"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2872,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2332:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2873,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"2338:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2869,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2316:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setResolver","nodeType":"MemberAccess","referencedDeclaration":377,"src":"2316:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:31:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2875,"nodeType":"ExpressionStatement","src":"2316:31:9"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2878,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"2412:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":2879,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"2428:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2412:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2890,"nodeType":"IfStatement","src":"2408:104:9","trueBody":{"id":2889,"nodeType":"Block","src":"2435:77:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2884,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"2469:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2885,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"2488:5:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2886,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"2495:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2881,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2449:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":370,"src":"2449:19:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) external returns (bytes32)"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2449:52:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2888,"nodeType":"ExpressionStatement","src":"2449:52:9"}]}},{"expression":{"argumentTypes":null,"id":2891,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2529:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2809,"id":2892,"nodeType":"Return","src":"2522:11:9"}]},"documentation":"@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":2894,"implemented":true,"kind":"function","modifiers":[],"name":"claimWithResolver","nodeType":"FunctionDefinition","parameters":{"id":2806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"name":"owner","nodeType":"VariableDeclaration","scope":2894,"src":"1696:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2802,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2805,"name":"resolver","nodeType":"VariableDeclaration","scope":2894,"src":"1711:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2804,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1695:33:9"},"returnParameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2808,"name":"","nodeType":"VariableDeclaration","scope":2894,"src":"1745:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1745:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1744:9:9"},"scope":2954,"src":"1669:871:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2921,"nodeType":"Block","src":"2921:156:9","statements":[{"assignments":[2902],"declarations":[{"constant":false,"id":2902,"name":"node","nodeType":"VariableDeclaration","scope":2921,"src":"2931:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2931:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":2911,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2905,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2972:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2964:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2964:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2908,"name":"defaultResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"2987:15:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}],"id":2907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2979:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2903,"name":"claimWithResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2946:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$","typeString":"function (address,address) returns (bytes32)"}},"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2946:58:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2931:73:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2915,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"3038:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2916,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"3044:4:9","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":{"argumentTypes":null,"id":2912,"name":"defaultResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"3014:15:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"id":2914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setName","nodeType":"MemberAccess","referencedDeclaration":2737,"src":"3014:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes32,string memory) external"}},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3014:35:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2918,"nodeType":"ExpressionStatement","src":"3014:35:9"},{"expression":{"argumentTypes":null,"id":2919,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"3066:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2900,"id":2920,"nodeType":"Return","src":"3059:11:9"}]},"documentation":"@dev Sets the `name()` record for the reverse ENS record associated with\nthe calling account. First updates the resolver to the default reverse\nresolver if necessary.\n@param name The name to set for this address.\n@return The ENS node hash of the reverse record.","id":2922,"implemented":true,"kind":"function","modifiers":[],"name":"setName","nodeType":"FunctionDefinition","parameters":{"id":2897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2896,"name":"name","nodeType":"VariableDeclaration","scope":2922,"src":"2876:18:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2895,"name":"string","nodeType":"ElementaryTypeName","src":"2876:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2875:20:9"},"returnParameters":{"id":2900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2899,"name":"","nodeType":"VariableDeclaration","scope":2922,"src":"2912:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2912:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2911:9:9"},"scope":2954,"src":"2859:218:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2939,"nodeType":"Block","src":"3303:92:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2932,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"3347:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2934,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2924,"src":"3381:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2933,"name":"sha3HexAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"3366:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3366:20:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2930,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"3330:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3330:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3330:57:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2929,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"3320:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3320:68:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2928,"id":2938,"nodeType":"Return","src":"3313:75:9"}]},"documentation":"@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":2940,"implemented":true,"kind":"function","modifiers":[],"name":"node","nodeType":"FunctionDefinition","parameters":{"id":2925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2924,"name":"addr","nodeType":"VariableDeclaration","scope":2940,"src":"3259:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2923,"name":"address","nodeType":"ElementaryTypeName","src":"3259:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3258:14:9"},"returnParameters":{"id":2928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2927,"name":"","nodeType":"VariableDeclaration","scope":2940,"src":"3294:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3294:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3293:9:9"},"scope":2954,"src":"3245:150:9","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":2952,"nodeType":"Block","src":"3769:553:9","statements":[{"expression":{"argumentTypes":null,"id":2947,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3779:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2948,"nodeType":"ExpressionStatement","src":"3779:4:9"},{"expression":{"argumentTypes":null,"id":2949,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2945,"src":"3793:3:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2950,"nodeType":"ExpressionStatement","src":"3793:3:9"},{"externalReferences":[{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4116:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4104:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4232:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4067:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4244:4:9","valueSize":1}},{"ret":{"declaration":2945,"isOffset":false,"isSlot":false,"src":"4283:3:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4195:4:9","valueSize":1}}],"id":2951,"nodeType":"InlineAssembly","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}","src":"3848:468:9"}]},"documentation":"@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 The SHA3 hash of the lower-case hexadecimal encoding of the\n input address.","id":2953,"implemented":true,"kind":"function","modifiers":[],"name":"sha3HexAddress","nodeType":"FunctionDefinition","parameters":{"id":2943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2942,"name":"addr","nodeType":"VariableDeclaration","scope":2953,"src":"3720:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2941,"name":"address","nodeType":"ElementaryTypeName","src":"3720:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3719:14:9"},"returnParameters":{"id":2946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2945,"name":"ret","nodeType":"VariableDeclaration","scope":2953,"src":"3756:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3756:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3755:13:9"},"scope":2954,"src":"3696:626:9","stateMutability":"pure","superFunction":null,"visibility":"private"}],"scope":2955,"src":"136:4188:9"}],"src":"0:4325:9"},"legacyAST":{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ReverseRegistrar.sol","exportedSymbols":{"NameResolver":[2738],"ReverseRegistrar":[2954]},"id":2955,"nodeType":"SourceUnit","nodes":[{"id":2729,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:9"},{"absolutePath":"/Users/makoto/work/ens/ens/contracts/ENS.sol","file":"./ENS.sol","id":2730,"nodeType":"ImportDirective","scope":2955,"sourceUnit":437,"src":"25:19:9","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":false,"id":2738,"linearizedBaseContracts":[2738],"name":"NameResolver","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"id":2737,"implemented":false,"kind":"function","modifiers":[],"name":"setName","nodeType":"FunctionDefinition","parameters":{"id":2735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"name":"node","nodeType":"VariableDeclaration","scope":2737,"src":"91:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"91:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":2734,"name":"name","nodeType":"VariableDeclaration","scope":2737,"src":"105:18:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2733,"name":"string","nodeType":"ElementaryTypeName","src":"105:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"90:34:9"},"returnParameters":{"id":2736,"nodeType":"ParameterList","parameters":[],"src":"131:0:9"},"scope":2738,"src":"74:58:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":2955,"src":"46:88:9"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":2954,"linearizedBaseContracts":[2954],"name":"ReverseRegistrar","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2741,"name":"ADDR_REVERSE_NODE","nodeType":"VariableDeclaration","scope":2954,"src":"200:110:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"200:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"hexValue":"307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532","id":2740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"244:66:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1","typeString":"int_const 6595...(69 digits omitted)...3154"},"value":"0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"},"visibility":"public"},{"constant":false,"id":2743,"name":"ens","nodeType":"VariableDeclaration","scope":2954,"src":"317:14:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":2742,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"317:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"public"},{"constant":false,"id":2745,"name":"defaultResolver","nodeType":"VariableDeclaration","scope":2954,"src":"337:35:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"},"typeName":{"contractScope":null,"id":2744,"name":"NameResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":2738,"src":"337:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"value":null,"visibility":"public"},{"body":{"id":2785,"nodeType":"Block","src":"605:332:9","statements":[{"expression":{"argumentTypes":null,"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2752,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"615:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2753,"name":"ensAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"621:7:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"src":"615:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2755,"nodeType":"ExpressionStatement","src":"615:13:9"},{"expression":{"argumentTypes":null,"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2756,"name":"defaultResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"638:15:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2757,"name":"resolverAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"656:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"src":"638:30:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"id":2759,"nodeType":"ExpressionStatement","src":"638:30:9"},{"assignments":[2761],"declarations":[{"constant":false,"id":2761,"name":"oldRegistrar","nodeType":"VariableDeclaration","scope":2785,"src":"745:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"},"typeName":{"contractScope":null,"id":2760,"name":"ReverseRegistrar","nodeType":"UserDefinedTypeName","referencedDeclaration":2954,"src":"745:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}},"value":null,"visibility":"internal"}],"id":2768,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2765,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"804:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2763,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"794:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":405,"src":"794:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:28:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2762,"name":"ReverseRegistrar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"777:16:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ReverseRegistrar_$2954_$","typeString":"type(contract ReverseRegistrar)"}},"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"777:46:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}},"nodeType":"VariableDeclarationStatement","src":"745:78:9"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2770,"name":"oldRegistrar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"845:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"837:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"837:21:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"870:3:9","subdenomination":null,"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":2772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"862:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"862:12:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"837:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2784,"nodeType":"IfStatement","src":"833:98:9","trueBody":{"id":2783,"nodeType":"Block","src":"876:55:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2779,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"909:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"909:10:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":2776,"name":"oldRegistrar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"890:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":2801,"src":"890:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$","typeString":"function (address) external returns (bytes32)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"890:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2782,"nodeType":"ExpressionStatement","src":"890:30:9"}]}}]},"documentation":"@dev Constructor\n@param ensAddr The address of the ENS registry.\n@param resolverAddr The address of the default reverse resolver.","id":2786,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2747,"name":"ensAddr","nodeType":"VariableDeclaration","scope":2786,"src":"558:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"},"typeName":{"contractScope":null,"id":2746,"name":"ENS","nodeType":"UserDefinedTypeName","referencedDeclaration":436,"src":"558:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"value":null,"visibility":"internal"},{"constant":false,"id":2749,"name":"resolverAddr","nodeType":"VariableDeclaration","scope":2786,"src":"571:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"},"typeName":{"contractScope":null,"id":2748,"name":"NameResolver","nodeType":"UserDefinedTypeName","referencedDeclaration":2738,"src":"571:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"value":null,"visibility":"internal"}],"src":"557:40:9"},"returnParameters":{"id":2751,"nodeType":"ParameterList","parameters":[],"src":"605:0:9"},"scope":2954,"src":"546:391:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2800,"nodeType":"Block","src":"1259:62:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2794,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"1294:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:3:9","subdenomination":null,"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":2795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1301:12:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2793,"name":"claimWithResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"1276:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$","typeString":"function (address,address) returns (bytes32)"}},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1276:38:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2792,"id":2799,"nodeType":"Return","src":"1269:45:9"}]},"documentation":"@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":2801,"implemented":true,"kind":"function","modifiers":[],"name":"claim","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"name":"owner","nodeType":"VariableDeclaration","scope":2801,"src":"1219:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2787,"name":"address","nodeType":"ElementaryTypeName","src":"1219:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1218:15:9"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"name":"","nodeType":"VariableDeclaration","scope":2801,"src":"1250:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1250:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1249:9:9"},"scope":2954,"src":"1204:117:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2893,"nodeType":"Block","src":"1754:786:9","statements":[{"assignments":[2811],"declarations":[{"constant":false,"id":2811,"name":"label","nodeType":"VariableDeclaration","scope":2893,"src":"1764:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1764:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":2816,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2813,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"1795:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1795:10:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":2812,"name":"sha3HexAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"1780:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1780:26:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1764:42:9"},{"assignments":[2818],"declarations":[{"constant":false,"id":2818,"name":"node","nodeType":"VariableDeclaration","scope":2893,"src":"1816:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1816:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":2826,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2822,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"1858:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2823,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"1877:5:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2820,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"1841:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1841:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1841:42:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2819,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"1831:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1831:53:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1816:68:9"},{"assignments":[2828],"declarations":[{"constant":false,"id":2828,"name":"currentOwner","nodeType":"VariableDeclaration","scope":2893,"src":"1894:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2827,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2833,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2831,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"1927:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2829,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"1917:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":405,"src":"1917:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1917:15:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1894:38:9"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2834,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"1990:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2010:3:9","subdenomination":null,"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":2835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2002:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2002:12:9","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1990:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2839,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"2018:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2842,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2043:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2840,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2030:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":412,"src":"2030:12:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":2843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2030:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2018:30:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1990:58:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2877,"nodeType":"IfStatement","src":"1986:372:9","trueBody":{"id":2876,"nodeType":"Block","src":"2050:308:9","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2846,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"2133:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2848,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2157:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2149:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2149:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2133:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2868,"nodeType":"IfStatement","src":"2129:174:9","trueBody":{"id":2867,"nodeType":"Block","src":"2164:139:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2854,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"2202:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2855,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"2221:5:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2857,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2236:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2228:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2228:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2851,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2182:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":370,"src":"2182:19:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) external returns (bytes32)"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2182:60:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2860,"nodeType":"ExpressionStatement","src":"2182:60:9"},{"expression":{"argumentTypes":null,"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2861,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"2260:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2863,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2283:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2275:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2275:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2260:28:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2866,"nodeType":"ExpressionStatement","src":"2260:28:9"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2872,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2332:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2873,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"2338:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2869,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2316:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setResolver","nodeType":"MemberAccess","referencedDeclaration":377,"src":"2316:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:31:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2875,"nodeType":"ExpressionStatement","src":"2316:31:9"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2878,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"2412:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":2879,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"2428:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2412:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2890,"nodeType":"IfStatement","src":"2408:104:9","trueBody":{"id":2889,"nodeType":"Block","src":"2435:77:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2884,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"2469:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2885,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"2488:5:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2886,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"2495:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2881,"name":"ens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2743,"src":"2449:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_ENS_$436","typeString":"contract ENS"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":370,"src":"2449:19:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) external returns (bytes32)"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2449:52:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2888,"nodeType":"ExpressionStatement","src":"2449:52:9"}]}},{"expression":{"argumentTypes":null,"id":2891,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2818,"src":"2529:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2809,"id":2892,"nodeType":"Return","src":"2522:11:9"}]},"documentation":"@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":2894,"implemented":true,"kind":"function","modifiers":[],"name":"claimWithResolver","nodeType":"FunctionDefinition","parameters":{"id":2806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"name":"owner","nodeType":"VariableDeclaration","scope":2894,"src":"1696:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2802,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2805,"name":"resolver","nodeType":"VariableDeclaration","scope":2894,"src":"1711:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2804,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1695:33:9"},"returnParameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2808,"name":"","nodeType":"VariableDeclaration","scope":2894,"src":"1745:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1745:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1744:9:9"},"scope":2954,"src":"1669:871:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2921,"nodeType":"Block","src":"2921:156:9","statements":[{"assignments":[2902],"declarations":[{"constant":false,"id":2902,"name":"node","nodeType":"VariableDeclaration","scope":2921,"src":"2931:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2931:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":2911,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2905,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"2972:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReverseRegistrar_$2954","typeString":"contract ReverseRegistrar"}],"id":2904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2964:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2964:13:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2908,"name":"defaultResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"2987:15:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}],"id":2907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2979:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2903,"name":"claimWithResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2946:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$","typeString":"function (address,address) returns (bytes32)"}},"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2946:58:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2931:73:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2915,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"3038:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2916,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"3044:4:9","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":{"argumentTypes":null,"id":2912,"name":"defaultResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"3014:15:9","typeDescriptions":{"typeIdentifier":"t_contract$_NameResolver_$2738","typeString":"contract NameResolver"}},"id":2914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setName","nodeType":"MemberAccess","referencedDeclaration":2737,"src":"3014:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes32,string memory) external"}},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3014:35:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2918,"nodeType":"ExpressionStatement","src":"3014:35:9"},{"expression":{"argumentTypes":null,"id":2919,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"3066:4:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2900,"id":2920,"nodeType":"Return","src":"3059:11:9"}]},"documentation":"@dev Sets the `name()` record for the reverse ENS record associated with\nthe calling account. First updates the resolver to the default reverse\nresolver if necessary.\n@param name The name to set for this address.\n@return The ENS node hash of the reverse record.","id":2922,"implemented":true,"kind":"function","modifiers":[],"name":"setName","nodeType":"FunctionDefinition","parameters":{"id":2897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2896,"name":"name","nodeType":"VariableDeclaration","scope":2922,"src":"2876:18:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2895,"name":"string","nodeType":"ElementaryTypeName","src":"2876:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2875:20:9"},"returnParameters":{"id":2900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2899,"name":"","nodeType":"VariableDeclaration","scope":2922,"src":"2912:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2912:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2911:9:9"},"scope":2954,"src":"2859:218:9","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":2939,"nodeType":"Block","src":"3303:92:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2932,"name":"ADDR_REVERSE_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"3347:17:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2934,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2924,"src":"3381:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2933,"name":"sha3HexAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"3366:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3366:20:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":2930,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"3330:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3330:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3330:57:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2929,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3026,"src":"3320:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3320:68:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2928,"id":2938,"nodeType":"Return","src":"3313:75:9"}]},"documentation":"@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":2940,"implemented":true,"kind":"function","modifiers":[],"name":"node","nodeType":"FunctionDefinition","parameters":{"id":2925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2924,"name":"addr","nodeType":"VariableDeclaration","scope":2940,"src":"3259:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2923,"name":"address","nodeType":"ElementaryTypeName","src":"3259:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3258:14:9"},"returnParameters":{"id":2928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2927,"name":"","nodeType":"VariableDeclaration","scope":2940,"src":"3294:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3294:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3293:9:9"},"scope":2954,"src":"3245:150:9","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":2952,"nodeType":"Block","src":"3769:553:9","statements":[{"expression":{"argumentTypes":null,"id":2947,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3779:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2948,"nodeType":"ExpressionStatement","src":"3779:4:9"},{"expression":{"argumentTypes":null,"id":2949,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2945,"src":"3793:3:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2950,"nodeType":"ExpressionStatement","src":"3793:3:9"},{"externalReferences":[{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4116:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4104:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4232:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4067:4:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4244:4:9","valueSize":1}},{"ret":{"declaration":2945,"isOffset":false,"isSlot":false,"src":"4283:3:9","valueSize":1}},{"addr":{"declaration":2942,"isOffset":false,"isSlot":false,"src":"4195:4:9","valueSize":1}}],"id":2951,"nodeType":"InlineAssembly","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}","src":"3848:468:9"}]},"documentation":"@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 The SHA3 hash of the lower-case hexadecimal encoding of the\n input address.","id":2953,"implemented":true,"kind":"function","modifiers":[],"name":"sha3HexAddress","nodeType":"FunctionDefinition","parameters":{"id":2943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2942,"name":"addr","nodeType":"VariableDeclaration","scope":2953,"src":"3720:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2941,"name":"address","nodeType":"ElementaryTypeName","src":"3720:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3719:14:9"},"returnParameters":{"id":2946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2945,"name":"ret","nodeType":"VariableDeclaration","scope":2953,"src":"3756:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3756:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3755:13:9"},"scope":2954,"src":"3696:626:9","stateMutability":"pure","superFunction":null,"visibility":"private"}],"scope":2955,"src":"136:4188:9"}],"src":"0:4325:9"},"compiler":{"name":"solc","version":"0.5.16+commit.9c3226ce.Emscripten.clang"},"networks":{},"schemaVersion":"3.2.0","updatedAt":"2020-06-23T14:47:43.713Z","devdoc":{"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."},"return":"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."},"return":"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"},"return":"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."},"return":"The ENS node hash of the reverse record."}}},"userdoc":{"methods":{}}} \ No newline at end of file diff --git a/waffle-ens/src/contracts.js b/waffle-ens/src/contracts.js deleted file mode 100644 index ad334c17d..000000000 --- a/waffle-ens/src/contracts.js +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ - -const contracts = [ - 'DNSResolver', - 'Deed', - 'DeedImplementation', - 'DefaultReverseResolver', - 'ENS', - 'ENSRegistry', - 'FIFSRegistrar', - 'HashRegistrar', - 'Migrations', - 'OwnedResolver', - 'PublicResolver', - 'Registrar', - 'Resolver', - 'ReverseRegistrar', - 'TestRegistrar' -]; - -try { - for (const contract of contracts) { - exports[contract] = require(`../contracts/${contract}.json`); - } -} catch (contractsRequireError) { - try { - module.exports = { - ...require('@ensdomains/ens'), - ...require('@ensdomains/resolver') - }; - } catch { - // If the dependencies are missing, a descriptive error is thrown - // when trying to use one of the ENS functions. - } -} diff --git a/waffle-ens/src/contracts.ts b/waffle-ens/src/contracts.ts new file mode 100644 index 000000000..3641500da --- /dev/null +++ b/waffle-ens/src/contracts.ts @@ -0,0 +1,6 @@ +import ENSRegistry from './abis/ENSRegistry.json'; +import FIFSRegistrar from './abis/FIFSRegistrar.json'; +import ReverseRegistrar from './abis/ReverseRegistrar.json'; +import PublicResolver from './abis/PublicResolver.json'; + +export {ENSRegistry, FIFSRegistrar, ReverseRegistrar, PublicResolver}; diff --git a/waffle-ens/tsconfig.build.json b/waffle-ens/tsconfig.build.json index f6f9dda24..4597cd96d 100644 --- a/waffle-ens/tsconfig.build.json +++ b/waffle-ens/tsconfig.build.json @@ -1,6 +1,7 @@ { "extends": "./tsconfig.json", "include": [ - "src" + "src", + "src/**/*.json" ] } diff --git a/waffle-ens/tsconfig.json b/waffle-ens/tsconfig.json index 5806bc376..0a12aa8d2 100644 --- a/waffle-ens/tsconfig.json +++ b/waffle-ens/tsconfig.json @@ -3,5 +3,9 @@ "compilerOptions": { "allowJs": true, "outDir": "dist" - } + }, + "include": [ + "src", + "src/**/*.json" + ] }