{
  "contractName": "ShortNameAuctionController",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract BaseRegistrar",
          "name": "_base",
          "type": "address"
        },
        {
          "internalType": "contract ProxyRegistry",
          "name": "_proxies",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_opensea",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "NameRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRATION_PERIOD",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "contract BaseRegistrar",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "opensea",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proxies",
      "outputs": [
        {
          "internalType": "contract ProxyRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "valid",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "available",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "register",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_opensea",
          "type": "address"
        }
      ],
      "name": "setOpensea",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract BaseRegistrar\",\"name\":\"_base\",\"type\":\"address\"},{\"internalType\":\"contract ProxyRegistry\",\"name\":\"_proxies\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_opensea\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NameRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"REGISTRATION_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"contract BaseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"opensea\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"contract ProxyRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_opensea\",\"type\":\"address\"}],\"name\":\"setOpensea\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"valid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}}}},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/makoto/work/ens/ethregistrar/contracts/ShortNameAuctionController.sol\":\"ShortNameAuctionController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrar.sol\":{\"keccak256\":\"0x8f8f496603d868fdf3ddf31c54fb6eed6a865f2adbf568fe0b3d999d4fa667f4\",\"urls\":[\"bzz-raw://40c16e89553e4af1dad651bdb63208f5e20429e0e5dbd716eb0cad14eafb96be\",\"dweb:/ipfs/QmYdCBZHRwRgKPRmCvghw7hbdvqqcJJCKg5JTtzWWwoSQP\"]},\"/Users/makoto/work/ens/ethregistrar/contracts/ShortNameAuctionController.sol\":{\"keccak256\":\"0xfd051d5e89f64f8f98738b827a76374ec857df980444962b454ab5fbd8be271d\",\"urls\":[\"bzz-raw://c1d8b5d969aded0e04d11c9c92700b62aca935b1a2fbfd1bf8b57b1fc590f615\",\"dweb:/ipfs/QmSmE2nHd8RZYRXFaUaCw5wS8jMehHQvkiich9vj1nJQKX\"]},\"/Users/makoto/work/ens/ethregistrar/contracts/StringUtils.sol\":{\"keccak256\":\"0xb995b040adc3f1f27173ecf389bf69360e45989e2b4d8a503dec8ac0cc10cad3\",\"urls\":[\"bzz-raw://4c7f31b51771c63b0a81b5622abd4f5e2414e74e22ee94eb106564b725f420ab\",\"dweb:/ipfs/QmRcUEFRi2X7SyxAURDngiCxQQ8LENHdBbgFGXzAqXJZ1c\"]},\"@ensdomains/ens/contracts/ENS.sol\":{\"keccak256\":\"0x10b88673d8c180cd62523be4fec7607c65594eb4f0c561fa0fbc0784422b4871\",\"urls\":[\"bzz-raw://b3de1882a4a1a1b13c27ee6dc04cc58c34ac392c80cad507de2cdfa8c02712fe\",\"dweb:/ipfs/QmeKcaBF8QdJjXiqFrPJkAtK3et5kUL8XJrnHjwhAThRMT\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xbbb6159006ae3639daea09f7d63987816d6cf3a99f52af919363e025d3abf3b8\",\"urls\":[\"bzz-raw://35e7d742ee71461779df12a0ab1ad4701144d98eb6401182838c8daf40b008dd\",\"dweb:/ipfs/QmY4t7pxcX2cfk6VsGJWZLBgoKMpRctY8X1HPxykLjptSi\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x1f059ee943273719130df645fa38069b792988e8b732585528d5b1265f5aa046\",\"urls\":[\"bzz-raw://31e4d99091a83a42a6ea14d74ceae2ec3ffb2905c7ee07358875af72ea188333\",\"dweb:/ipfs/Qmf7nHc6BwhbyawapCVRZHzhBHNoA8ftpQWmGSyToVKVzN\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506040516110803803806110808339818101604052606081101561003357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a382600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610e97806101e96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639791c097116100715780639791c0971461025c578063aeb8ce9b1461032f578063b776c8a614610402578063bcc38d5914610446578063e0f5409714610490578063f2fde38b146104ae576100b4565b80631e59c529146100b95780635001f3b514610152578063511ed3821461019c578063715018a6146101e65780638da5cb5b146101f05780638f32d59b1461023a575b600080fd5b610150600480360360408110156100cf57600080fd5b81019080803590602001906401000000008111156100ec57600080fd5b8201836020820111156100fe57600080fd5b8035906020019184600183028401116401000000008311171561012057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f2565b005b61015a6108ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a46108d2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ee6108f8565b005b6101f86109c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102426109f1565b604051808215151515815260200191505060405180910390f35b6103156004803603602081101561027257600080fd5b810190808035906020019064010000000081111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111640100000000831117156102c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a48565b604051808215151515815260200191505060405180910390f35b6103e86004803603602081101561034557600080fd5b810190808035906020019064010000000081111561036257600080fd5b82018360208201111561037457600080fd5b8035906020019184600183028401116401000000008311171561039657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a70565b604051808215151515815260200191505060405180910390f35b6104446004803603602081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b40565b005b61044e610b95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610498610bbb565b6040518082815260200191505060405180910390f35b6104f0600480360360208110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bc3565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106745750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4552791600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561060a57600080fd5b505afa15801561061e573d6000803e3d6000fd5b505050506040513d602081101561063457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61067d57600080fd5b6106ca83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610a70565b6106d357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca247ac61075e85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610be0565b836301e133806040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b505050506040513d60208110156107fe57600080fd5b8101908080519060200190929190505050507f1c6eac0e720ec22bb0653aec9c19985633a4fb07971cf973096c2f8e3c37c17f83838360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109006109f1565b61090957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600080610a5483610bf4565b905060038110158015610a68575060068111155b915050919050565b6000610a7b82610a48565b8015610b395750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166396e494e8610ac984610be0565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610afd57600080fd5b505afa158015610b11573d6000803e3d6000fd5b505050506040513d6020811015610b2757600080fd5b81019080805190602001909291905050505b9050919050565b610b486109f1565b610b5157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610bcb6109f1565b610bd457600080fd5b610bdd81610d6a565b50565b6000818051906020012060001c9050919050565b6000806000809050600084519050600092505b80821015610d5f576000858381518110610c1d57fe5b602001015160f81c60f81b9050608060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610c6357600183019250610d51565b60e060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610c9c57600283019250610d50565b60f060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610cd557600383019250610d4f565b60f8801b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610d0d57600483019250610d4e565b60fc60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610d4657600583019250610d4d565b6006830192505b5b5b5b5b508280600101935050610c07565b829350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a72315820b47693b546f6406d9e6b95282276f328cee1a8cb965531e1c11b164477dd774d64736f6c63430005100032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80639791c097116100715780639791c0971461025c578063aeb8ce9b1461032f578063b776c8a614610402578063bcc38d5914610446578063e0f5409714610490578063f2fde38b146104ae576100b4565b80631e59c529146100b95780635001f3b514610152578063511ed3821461019c578063715018a6146101e65780638da5cb5b146101f05780638f32d59b1461023a575b600080fd5b610150600480360360408110156100cf57600080fd5b81019080803590602001906401000000008111156100ec57600080fd5b8201836020820111156100fe57600080fd5b8035906020019184600183028401116401000000008311171561012057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f2565b005b61015a6108ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a46108d2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ee6108f8565b005b6101f86109c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102426109f1565b604051808215151515815260200191505060405180910390f35b6103156004803603602081101561027257600080fd5b810190808035906020019064010000000081111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111640100000000831117156102c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a48565b604051808215151515815260200191505060405180910390f35b6103e86004803603602081101561034557600080fd5b810190808035906020019064010000000081111561036257600080fd5b82018360208201111561037457600080fd5b8035906020019184600183028401116401000000008311171561039657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a70565b604051808215151515815260200191505060405180910390f35b6104446004803603602081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b40565b005b61044e610b95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610498610bbb565b6040518082815260200191505060405180910390f35b6104f0600480360360208110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bc3565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106745750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4552791600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561060a57600080fd5b505afa15801561061e573d6000803e3d6000fd5b505050506040513d602081101561063457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61067d57600080fd5b6106ca83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610a70565b6106d357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca247ac61075e85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610be0565b836301e133806040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b505050506040513d60208110156107fe57600080fd5b8101908080519060200190929190505050507f1c6eac0e720ec22bb0653aec9c19985633a4fb07971cf973096c2f8e3c37c17f83838360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109006109f1565b61090957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600080610a5483610bf4565b905060038110158015610a68575060068111155b915050919050565b6000610a7b82610a48565b8015610b395750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166396e494e8610ac984610be0565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610afd57600080fd5b505afa158015610b11573d6000803e3d6000fd5b505050506040513d6020811015610b2757600080fd5b81019080805190602001909291905050505b9050919050565b610b486109f1565b610b5157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610bcb6109f1565b610bd457600080fd5b610bdd81610d6a565b50565b6000818051906020012060001c9050919050565b6000806000809050600084519050600092505b80821015610d5f576000858381518110610c1d57fe5b602001015160f81c60f81b9050608060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610c6357600183019250610d51565b60e060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610c9c57600283019250610d50565b60f060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610cd557600383019250610d4f565b60f8801b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610d0d57600483019250610d4e565b60fc60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015610d4657600583019250610d4d565b6006830192505b5b5b5b5b508280600101935050610c07565b829350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a72315820b47693b546f6406d9e6b95282276f328cee1a8cb965531e1c11b164477dd774d64736f6c63430005100032",
  "sourceMap": "245:1337:11:-;;;662:167;8:9:-1;5:2;;;30:1;27;20:12;5:2;662:167:11;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;662:167:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:10:51;515:6;;:19;;;;;;;;;;;;;;;;;;582:6;;;;;;;;;;;549:40;;578:1;549:40;;;;;;;;;;;;761:5:11;754:4;;:12;;;;;;;;;;;;;;;;;;786:8;776:7;;:18;;;;;;;;;;;;;;;;;;814:8;804:7;;:18;;;;;;;;;;;;;;;;;;662:167;;;245:1337;;;;;;",
  "deployedSourceMap": "245:1337:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1337:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:228;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1122:228:11;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1122:228:11;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1122:228:11;;;;;;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;1122:228:11;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;441:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;506:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1347:137:51;;;:::i;:::-;;659:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;979:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;835:139:11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;835:139:11;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;835:139:11;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;835:139:11;;;;;;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;835:139:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;835:139:11;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;980:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;980:136:11;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;980:136:11;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;980:136:11;;;;;;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;980:136:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;980:136:11;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1356:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1356:92:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;472:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;328:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1655:107:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1655:107:51;;;;;;;;;;;;;;;;;;;:::i;:::-;;1122:228:11;588:7;;;;;;;;;;;574:21;;:10;:21;;;:63;;;;613:7;;;;;;;;;;;:15;;;629:7;;;;;;;;;;;613:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;613:24:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;613:24:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;613:24:11;;;;;;;;;;;;;;;;599:38;;:10;:38;;;574:63;566:72;;;;;;1216:15;1226:4;;1216: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;;1216:15:11;;;;;;:9;:15::i;:::-;1208:24;;;;;;1242:4;;;;;;;;;;;:13;;;1256:16;1267:4;;1256:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;1256:16:11;;;;;;:10;:16::i;:::-;1274:5;371:8;1242:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1242:59:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1242:59:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1242:59:11;;;;;;;;;;;;;;;;;1316:27;1331:4;;1337:5;1316:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;1316:27:11;;;;;;;;;;;;;;;1122:228;;;:::o;441:25::-;;;;;;;;;;;;;:::o;506:22::-;;;;;;;;;;;;;:::o;1347:137:51:-;863:9;:7;:9::i;:::-;855:18;;;;;;1445:1;1408:40;;1429:6;;;;;;;;;;;1408:40;;;;;;;;;;;;1475:1;1458:6;;:19;;;;;;;;;;;;;;;;;;1347:137::o;659:77::-;697:7;723:6;;;;;;;;;;;716:13;;659:77;:::o;979:90::-;1019:4;1056:6;;;;;;;;;;;1042:20;;:10;:20;;;1035:27;;979:90;:::o;835:139:11:-;890:4;906:8;917:13;:4;:11;:13::i;:::-;906:24;;954:1;947:3;:8;;:20;;;;;966:1;959:3;:8;;947:20;940:27;;;835:139;;;:::o;980:136::-;1039:4;1062:11;1068:4;1062:5;:11::i;:::-;:47;;;;;1077:4;;;;;;;;;;;:14;;;1092:16;1103:4;1092:10;:16::i;:::-;1077:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1077:32:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1077:32:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1077:32:11;;;;;;;;;;;;;;;;1062:47;1055:54;;980:136;;;:::o;1356:92::-;863:9:51;:7;:9::i;:::-;855:18;;;;;;1433:8:11;1423:7;;:18;;;;;;;;;;;;;;;;;;1356:92;:::o;472:28::-;;;;;;;;;;;;;:::o;328:51::-;371:8;328:51;:::o;1655:107:51:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;1454:126:11:-;1516:7;1566:4;1550:22;;;;;;1542:31;;1535:38;;1454:126;;;:::o;223:606:14:-;279:4;295:8;313:6;322:1;313:10;;333:15;357:1;351:15;333:33;;386:1;380:7;;376:427;393:10;389:1;:14;376:427;;;426:6;441:1;444;435:11;;;;;;;;;;;;;;;;426:20;;467:4;463:8;;:1;:8;;;;460:333;;;496:1;491:6;;;;460:333;;;526:4;522:8;;:1;:8;;;;518:275;;;555:1;550:6;;;;518:275;;;585:4;581:8;;:1;:8;;;;577:216;;;614:1;609:6;;;;577:216;;;644:4;640:8;;:1;:8;;;;636:157;;;673:1;668:6;;;;636:157;;;703:4;699:8;;:1;:8;;;;695:98;;;732:1;727:6;;;;695:98;;;777:1;772:6;;;;695:98;636:157;577:216;518:275;460:333;376:427;405:5;;;;;;;376:427;;;819:3;812:10;;;;;223:606;;;:::o;1906:183:51:-;1999:1;1979:22;;:8;:22;;;;1971:31;;;;;;2046:8;2017:38;;2038:6;;;;;;;;;;;2017:38;;;;;;;;;;;;2074:8;2065:6;;:17;;;;;;;;;;;;;;;;;;1906:183;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"./BaseRegistrar.sol\";\nimport \"./StringUtils.sol\";\n\ninterface ProxyRegistry {\n    function proxies(address owner) external view returns(address);\n}\n\ncontract ShortNameAuctionController is Ownable {\n    using StringUtils for *;\n\n    uint constant public REGISTRATION_PERIOD = 31536000;\n\n    event NameRegistered(string name, address owner);\n\n    BaseRegistrar public base;\n    ProxyRegistry public proxies;\n    address public opensea;\n\n    modifier onlyOpensea {\n        require(msg.sender == opensea || msg.sender == proxies.proxies(opensea));\n        _;\n    }\n\n    constructor(BaseRegistrar _base, ProxyRegistry _proxies, address _opensea) public {\n        base = _base;\n        proxies = _proxies;\n        opensea = _opensea;\n    }\n\n    function valid(string memory name) public view returns(bool) {\n        uint len = name.strlen();\n        return len >= 3 && len <= 6;\n    }\n\n    function available(string memory name) public view returns(bool) {\n        return valid(name) && base.available(getTokenId(name));\n    }\n\n    function register(string calldata name, address owner) external onlyOpensea {\n        require(available(name));\n        base.register(getTokenId(name), owner, REGISTRATION_PERIOD);\n        emit NameRegistered(name, owner);\n    }\n\n    function setOpensea(address _opensea) external onlyOwner {\n        opensea = _opensea;\n    }\n\n    function getTokenId(string memory name) internal pure returns(uint256) {\n        return uint256(keccak256(bytes(name)));\n    }\n}\n",
  "sourcePath": "/Users/makoto/work/ens/ethregistrar/contracts/ShortNameAuctionController.sol",
  "ast": {
    "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/ShortNameAuctionController.sol",
    "exportedSymbols": {
      "ProxyRegistry": [
        2914
      ],
      "ShortNameAuctionController": [
        3075
      ]
    },
    "id": 3076,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2903,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:11"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 2904,
        "nodeType": "ImportDirective",
        "scope": 3076,
        "sourceUnit": 12299,
        "src": "25:63:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrar.sol",
        "file": "./BaseRegistrar.sol",
        "id": 2905,
        "nodeType": "ImportDirective",
        "scope": 3076,
        "sourceUnit": 107,
        "src": "89:29:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/StringUtils.sol",
        "file": "./StringUtils.sol",
        "id": 2906,
        "nodeType": "ImportDirective",
        "scope": 3076,
        "sourceUnit": 4415,
        "src": "119:27:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 2914,
        "linearizedBaseContracts": [
          2914
        ],
        "name": "ProxyRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 2913,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "proxies",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2908,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2913,
                  "src": "195:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "195:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "194:15:11"
            },
            "returnParameters": {
              "id": 2912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2911,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2913,
                  "src": "232:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "232:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "231:9:11"
            },
            "scope": 2914,
            "src": "178:63:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 3076,
        "src": "148:95:11"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2915,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12298,
              "src": "284:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$12298",
                "typeString": "contract Ownable"
              }
            },
            "id": 2916,
            "nodeType": "InheritanceSpecifier",
            "src": "284:7:11"
          }
        ],
        "contractDependencies": [
          12298
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3075,
        "linearizedBaseContracts": [
          3075,
          12298
        ],
        "name": "ShortNameAuctionController",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2918,
            "libraryName": {
              "contractScope": null,
              "id": 2917,
              "name": "StringUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4414,
              "src": "304:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StringUtils_$4414",
                "typeString": "library StringUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "298:24:11",
            "typeName": null
          },
          {
            "constant": true,
            "id": 2921,
            "name": "REGISTRATION_PERIOD",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "328:51:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2919,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "328:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3331353336303030",
              "id": 2920,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "371:8:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_31536000_by_1",
                "typeString": "int_const 31536000"
              },
              "value": "31536000"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2927,
            "name": "NameRegistered",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2923,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2927,
                  "src": "407:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2922,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "407:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2925,
                  "indexed": false,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2927,
                  "src": "420:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "420:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "406:28:11"
            },
            "src": "386:49:11"
          },
          {
            "constant": false,
            "id": 2929,
            "name": "base",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "441:25:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_BaseRegistrar_$106",
              "typeString": "contract BaseRegistrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2928,
              "name": "BaseRegistrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 106,
              "src": "441:13:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                "typeString": "contract BaseRegistrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2931,
            "name": "proxies",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "472:28:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
              "typeString": "contract ProxyRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 2930,
              "name": "ProxyRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2914,
              "src": "472:13:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                "typeString": "contract ProxyRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2933,
            "name": "opensea",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "506:22:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2932,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "506:7:11",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2951,
              "nodeType": "Block",
              "src": "556:100:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2936,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13010,
                              "src": "574:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "574:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2938,
                            "name": "opensea",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2933,
                            "src": "588:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "574:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2940,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13010,
                              "src": "599:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "599:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2944,
                                "name": "opensea",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2933,
                                "src": "629:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2942,
                                "name": "proxies",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2931,
                                "src": "613:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                                  "typeString": "contract ProxyRegistry"
                                }
                              },
                              "id": 2943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proxies",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2913,
                              "src": "613:15:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view external returns (address)"
                              }
                            },
                            "id": 2945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "613:24:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "599:38:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "574:63:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2935,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "566:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "566:72:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2949,
                  "nodeType": "ExpressionStatement",
                  "src": "566:72:11"
                },
                {
                  "id": 2950,
                  "nodeType": "PlaceholderStatement",
                  "src": "648:1:11"
                }
              ]
            },
            "documentation": null,
            "id": 2952,
            "name": "onlyOpensea",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2934,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "556:0:11"
            },
            "src": "535:121:11",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2973,
              "nodeType": "Block",
              "src": "744:85:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2961,
                      "name": "base",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2929,
                      "src": "754:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                        "typeString": "contract BaseRegistrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2962,
                      "name": "_base",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2954,
                      "src": "761:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                        "typeString": "contract BaseRegistrar"
                      }
                    },
                    "src": "754:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                      "typeString": "contract BaseRegistrar"
                    }
                  },
                  "id": 2964,
                  "nodeType": "ExpressionStatement",
                  "src": "754:12:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2965,
                      "name": "proxies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2931,
                      "src": "776:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                        "typeString": "contract ProxyRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2966,
                      "name": "_proxies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2956,
                      "src": "786:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                        "typeString": "contract ProxyRegistry"
                      }
                    },
                    "src": "776:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                      "typeString": "contract ProxyRegistry"
                    }
                  },
                  "id": 2968,
                  "nodeType": "ExpressionStatement",
                  "src": "776:18:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2969,
                      "name": "opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2933,
                      "src": "804:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2970,
                      "name": "_opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2958,
                      "src": "814:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "804:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2972,
                  "nodeType": "ExpressionStatement",
                  "src": "804:18:11"
                }
              ]
            },
            "documentation": null,
            "id": 2974,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2954,
                  "name": "_base",
                  "nodeType": "VariableDeclaration",
                  "scope": 2974,
                  "src": "674:19:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                    "typeString": "contract BaseRegistrar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2953,
                    "name": "BaseRegistrar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 106,
                    "src": "674:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                      "typeString": "contract BaseRegistrar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2956,
                  "name": "_proxies",
                  "nodeType": "VariableDeclaration",
                  "scope": 2974,
                  "src": "695:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                    "typeString": "contract ProxyRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2955,
                    "name": "ProxyRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2914,
                    "src": "695:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                      "typeString": "contract ProxyRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2958,
                  "name": "_opensea",
                  "nodeType": "VariableDeclaration",
                  "scope": 2974,
                  "src": "719:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2957,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "719:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "673:63:11"
            },
            "returnParameters": {
              "id": 2960,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "744:0:11"
            },
            "scope": 3075,
            "src": "662:167:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2995,
              "nodeType": "Block",
              "src": "896:78:11",
              "statements": [
                {
                  "assignments": [
                    2982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2982,
                      "name": "len",
                      "nodeType": "VariableDeclaration",
                      "scope": 2995,
                      "src": "906:8:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2981,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "906:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2986,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2983,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2976,
                        "src": "917:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "id": 2984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "strlen",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4413,
                      "src": "917:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_string_memory_ptr_$",
                        "typeString": "function (string memory) pure returns (uint256)"
                      }
                    },
                    "id": 2985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "917:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "906:24:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2987,
                        "name": "len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2982,
                        "src": "947:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "954:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "src": "947:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2990,
                        "name": "len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2982,
                        "src": "959:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "36",
                        "id": 2991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "966:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_6_by_1",
                          "typeString": "int_const 6"
                        },
                        "value": "6"
                      },
                      "src": "959:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "947:20:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2980,
                  "id": 2994,
                  "nodeType": "Return",
                  "src": "940:27:11"
                }
              ]
            },
            "documentation": null,
            "id": 2996,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "valid",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2976,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2996,
                  "src": "850:18:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2975,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "850:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "849:20:11"
            },
            "returnParameters": {
              "id": 2980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2979,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2996,
                  "src": "890:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2978,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "890:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "889:6:11"
            },
            "scope": 3075,
            "src": "835:139:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3014,
              "nodeType": "Block",
              "src": "1045:71:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3004,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2998,
                          "src": "1068:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3003,
                        "name": "valid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2996,
                        "src": "1062:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1062:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3009,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2998,
                              "src": "1103:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3008,
                            "name": "getTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3074,
                            "src": "1092:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (string memory) pure returns (uint256)"
                            }
                          },
                          "id": 3010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1092:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3006,
                          "name": "base",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2929,
                          "src": "1077:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                            "typeString": "contract BaseRegistrar"
                          }
                        },
                        "id": 3007,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "available",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 78,
                        "src": "1077:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view external returns (bool)"
                        }
                      },
                      "id": 3011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1077:32:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1062:47:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3002,
                  "id": 3013,
                  "nodeType": "Return",
                  "src": "1055:54:11"
                }
              ]
            },
            "documentation": null,
            "id": 3015,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "available",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2998,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3015,
                  "src": "999:18:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2997,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "999:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "998:20:11"
            },
            "returnParameters": {
              "id": 3002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3001,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3015,
                  "src": "1039:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3000,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1038:6:11"
            },
            "scope": 3075,
            "src": "980:136:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3045,
              "nodeType": "Block",
              "src": "1198:152:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3026,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3017,
                            "src": "1226:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          ],
                          "id": 3025,
                          "name": "available",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3015,
                          "src": "1216:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (string memory) view returns (bool)"
                          }
                        },
                        "id": 3027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1216:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3024,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "1208:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1208:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3029,
                  "nodeType": "ExpressionStatement",
                  "src": "1208:24:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3034,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3017,
                            "src": "1267:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          ],
                          "id": 3033,
                          "name": "getTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3074,
                          "src": "1256:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (string memory) pure returns (uint256)"
                          }
                        },
                        "id": 3035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1256:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3036,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3019,
                        "src": "1274:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3037,
                        "name": "REGISTRATION_PERIOD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2921,
                        "src": "1281:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3030,
                        "name": "base",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2929,
                        "src": "1242:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                          "typeString": "contract BaseRegistrar"
                        }
                      },
                      "id": 3032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "register",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 89,
                      "src": "1242:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address,uint256) external returns (uint256)"
                      }
                    },
                    "id": 3038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1242:59:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3039,
                  "nodeType": "ExpressionStatement",
                  "src": "1242:59:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3041,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3017,
                        "src": "1331:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3042,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3019,
                        "src": "1337:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3040,
                      "name": "NameRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2927,
                      "src": "1316:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,address)"
                      }
                    },
                    "id": 3043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1316:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3044,
                  "nodeType": "EmitStatement",
                  "src": "1311:32:11"
                }
              ]
            },
            "documentation": null,
            "id": 3046,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3022,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3021,
                  "name": "onlyOpensea",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2952,
                  "src": "1186:11:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1186:11:11"
              }
            ],
            "name": "register",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3017,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3046,
                  "src": "1140:20:11",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3016,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3019,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3046,
                  "src": "1162:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3018,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1162:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1139:37:11"
            },
            "returnParameters": {
              "id": 3023,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1198:0:11"
            },
            "scope": 3075,
            "src": "1122:228:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3057,
              "nodeType": "Block",
              "src": "1413:35:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3053,
                      "name": "opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2933,
                      "src": "1423:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3054,
                      "name": "_opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3048,
                      "src": "1433:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1423:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3056,
                  "nodeType": "ExpressionStatement",
                  "src": "1423:18:11"
                }
              ]
            },
            "documentation": null,
            "id": 3058,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3051,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3050,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12232,
                  "src": "1403:9:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1403:9:11"
              }
            ],
            "name": "setOpensea",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3048,
                  "name": "_opensea",
                  "nodeType": "VariableDeclaration",
                  "scope": 3058,
                  "src": "1376:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3047,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1376:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1375:18:11"
            },
            "returnParameters": {
              "id": 3052,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1413:0:11"
            },
            "scope": 3075,
            "src": "1356:92:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3073,
              "nodeType": "Block",
              "src": "1525:55:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3068,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3060,
                                "src": "1566:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 3067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1560:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1560:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3066,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13004,
                          "src": "1550:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1550:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1542:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": "uint256"
                    },
                    "id": 3071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1542:31:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3064,
                  "id": 3072,
                  "nodeType": "Return",
                  "src": "1535:38:11"
                }
              ]
            },
            "documentation": null,
            "id": 3074,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3060,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3074,
                  "src": "1474:18:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3059,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1474:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1473:20:11"
            },
            "returnParameters": {
              "id": 3064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3063,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3074,
                  "src": "1516:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1516:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1515:9:11"
            },
            "scope": 3075,
            "src": "1454:126:11",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 3076,
        "src": "245:1337:11"
      }
    ],
    "src": "0:1583:11"
  },
  "legacyAST": {
    "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/ShortNameAuctionController.sol",
    "exportedSymbols": {
      "ProxyRegistry": [
        2914
      ],
      "ShortNameAuctionController": [
        3075
      ]
    },
    "id": 3076,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2903,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:11"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 2904,
        "nodeType": "ImportDirective",
        "scope": 3076,
        "sourceUnit": 12299,
        "src": "25:63:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrar.sol",
        "file": "./BaseRegistrar.sol",
        "id": 2905,
        "nodeType": "ImportDirective",
        "scope": 3076,
        "sourceUnit": 107,
        "src": "89:29:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/StringUtils.sol",
        "file": "./StringUtils.sol",
        "id": 2906,
        "nodeType": "ImportDirective",
        "scope": 3076,
        "sourceUnit": 4415,
        "src": "119:27:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 2914,
        "linearizedBaseContracts": [
          2914
        ],
        "name": "ProxyRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 2913,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "proxies",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2908,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2913,
                  "src": "195:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "195:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "194:15:11"
            },
            "returnParameters": {
              "id": 2912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2911,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2913,
                  "src": "232:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "232:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "231:9:11"
            },
            "scope": 2914,
            "src": "178:63:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 3076,
        "src": "148:95:11"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2915,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12298,
              "src": "284:7:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$12298",
                "typeString": "contract Ownable"
              }
            },
            "id": 2916,
            "nodeType": "InheritanceSpecifier",
            "src": "284:7:11"
          }
        ],
        "contractDependencies": [
          12298
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3075,
        "linearizedBaseContracts": [
          3075,
          12298
        ],
        "name": "ShortNameAuctionController",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2918,
            "libraryName": {
              "contractScope": null,
              "id": 2917,
              "name": "StringUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4414,
              "src": "304:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StringUtils_$4414",
                "typeString": "library StringUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "298:24:11",
            "typeName": null
          },
          {
            "constant": true,
            "id": 2921,
            "name": "REGISTRATION_PERIOD",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "328:51:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2919,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "328:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3331353336303030",
              "id": 2920,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "371:8:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_31536000_by_1",
                "typeString": "int_const 31536000"
              },
              "value": "31536000"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2927,
            "name": "NameRegistered",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2923,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2927,
                  "src": "407:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2922,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "407:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2925,
                  "indexed": false,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2927,
                  "src": "420:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "420:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "406:28:11"
            },
            "src": "386:49:11"
          },
          {
            "constant": false,
            "id": 2929,
            "name": "base",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "441:25:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_BaseRegistrar_$106",
              "typeString": "contract BaseRegistrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2928,
              "name": "BaseRegistrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 106,
              "src": "441:13:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                "typeString": "contract BaseRegistrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2931,
            "name": "proxies",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "472:28:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
              "typeString": "contract ProxyRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 2930,
              "name": "ProxyRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2914,
              "src": "472:13:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                "typeString": "contract ProxyRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2933,
            "name": "opensea",
            "nodeType": "VariableDeclaration",
            "scope": 3075,
            "src": "506:22:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2932,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "506:7:11",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2951,
              "nodeType": "Block",
              "src": "556:100:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2936,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13010,
                              "src": "574:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "574:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2938,
                            "name": "opensea",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2933,
                            "src": "588:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "574:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2940,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13010,
                              "src": "599:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "599:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2944,
                                "name": "opensea",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2933,
                                "src": "629:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2942,
                                "name": "proxies",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2931,
                                "src": "613:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                                  "typeString": "contract ProxyRegistry"
                                }
                              },
                              "id": 2943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proxies",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2913,
                              "src": "613:15:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view external returns (address)"
                              }
                            },
                            "id": 2945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "613:24:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "599:38:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "574:63:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2935,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "566:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "566:72:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2949,
                  "nodeType": "ExpressionStatement",
                  "src": "566:72:11"
                },
                {
                  "id": 2950,
                  "nodeType": "PlaceholderStatement",
                  "src": "648:1:11"
                }
              ]
            },
            "documentation": null,
            "id": 2952,
            "name": "onlyOpensea",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2934,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "556:0:11"
            },
            "src": "535:121:11",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2973,
              "nodeType": "Block",
              "src": "744:85:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2961,
                      "name": "base",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2929,
                      "src": "754:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                        "typeString": "contract BaseRegistrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2962,
                      "name": "_base",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2954,
                      "src": "761:5:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                        "typeString": "contract BaseRegistrar"
                      }
                    },
                    "src": "754:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                      "typeString": "contract BaseRegistrar"
                    }
                  },
                  "id": 2964,
                  "nodeType": "ExpressionStatement",
                  "src": "754:12:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2965,
                      "name": "proxies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2931,
                      "src": "776:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                        "typeString": "contract ProxyRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2966,
                      "name": "_proxies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2956,
                      "src": "786:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                        "typeString": "contract ProxyRegistry"
                      }
                    },
                    "src": "776:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                      "typeString": "contract ProxyRegistry"
                    }
                  },
                  "id": 2968,
                  "nodeType": "ExpressionStatement",
                  "src": "776:18:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2969,
                      "name": "opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2933,
                      "src": "804:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2970,
                      "name": "_opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2958,
                      "src": "814:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "804:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2972,
                  "nodeType": "ExpressionStatement",
                  "src": "804:18:11"
                }
              ]
            },
            "documentation": null,
            "id": 2974,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2954,
                  "name": "_base",
                  "nodeType": "VariableDeclaration",
                  "scope": 2974,
                  "src": "674:19:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                    "typeString": "contract BaseRegistrar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2953,
                    "name": "BaseRegistrar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 106,
                    "src": "674:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                      "typeString": "contract BaseRegistrar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2956,
                  "name": "_proxies",
                  "nodeType": "VariableDeclaration",
                  "scope": 2974,
                  "src": "695:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                    "typeString": "contract ProxyRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2955,
                    "name": "ProxyRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2914,
                    "src": "695:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProxyRegistry_$2914",
                      "typeString": "contract ProxyRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2958,
                  "name": "_opensea",
                  "nodeType": "VariableDeclaration",
                  "scope": 2974,
                  "src": "719:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2957,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "719:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "673:63:11"
            },
            "returnParameters": {
              "id": 2960,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "744:0:11"
            },
            "scope": 3075,
            "src": "662:167:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2995,
              "nodeType": "Block",
              "src": "896:78:11",
              "statements": [
                {
                  "assignments": [
                    2982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2982,
                      "name": "len",
                      "nodeType": "VariableDeclaration",
                      "scope": 2995,
                      "src": "906:8:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2981,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "906:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2986,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2983,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2976,
                        "src": "917:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "id": 2984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "strlen",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4413,
                      "src": "917:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_string_memory_ptr_$",
                        "typeString": "function (string memory) pure returns (uint256)"
                      }
                    },
                    "id": 2985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "917:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "906:24:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2987,
                        "name": "len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2982,
                        "src": "947:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "954:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "src": "947:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2990,
                        "name": "len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2982,
                        "src": "959:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "36",
                        "id": 2991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "966:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_6_by_1",
                          "typeString": "int_const 6"
                        },
                        "value": "6"
                      },
                      "src": "959:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "947:20:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2980,
                  "id": 2994,
                  "nodeType": "Return",
                  "src": "940:27:11"
                }
              ]
            },
            "documentation": null,
            "id": 2996,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "valid",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2976,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2996,
                  "src": "850:18:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2975,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "850:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "849:20:11"
            },
            "returnParameters": {
              "id": 2980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2979,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2996,
                  "src": "890:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2978,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "890:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "889:6:11"
            },
            "scope": 3075,
            "src": "835:139:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3014,
              "nodeType": "Block",
              "src": "1045:71:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3004,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2998,
                          "src": "1068:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 3003,
                        "name": "valid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2996,
                        "src": "1062:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory) view returns (bool)"
                        }
                      },
                      "id": 3005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1062:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3009,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2998,
                              "src": "1103:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3008,
                            "name": "getTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3074,
                            "src": "1092:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (string memory) pure returns (uint256)"
                            }
                          },
                          "id": 3010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1092:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3006,
                          "name": "base",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2929,
                          "src": "1077:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                            "typeString": "contract BaseRegistrar"
                          }
                        },
                        "id": 3007,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "available",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 78,
                        "src": "1077:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view external returns (bool)"
                        }
                      },
                      "id": 3011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1077:32:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1062:47:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3002,
                  "id": 3013,
                  "nodeType": "Return",
                  "src": "1055:54:11"
                }
              ]
            },
            "documentation": null,
            "id": 3015,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "available",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2998,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3015,
                  "src": "999:18:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2997,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "999:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "998:20:11"
            },
            "returnParameters": {
              "id": 3002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3001,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3015,
                  "src": "1039:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3000,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1038:6:11"
            },
            "scope": 3075,
            "src": "980:136:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3045,
              "nodeType": "Block",
              "src": "1198:152:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3026,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3017,
                            "src": "1226:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          ],
                          "id": 3025,
                          "name": "available",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3015,
                          "src": "1216:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (string memory) view returns (bool)"
                          }
                        },
                        "id": 3027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1216:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3024,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "1208:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1208:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3029,
                  "nodeType": "ExpressionStatement",
                  "src": "1208:24:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3034,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3017,
                            "src": "1267:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          ],
                          "id": 3033,
                          "name": "getTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3074,
                          "src": "1256:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (string memory) pure returns (uint256)"
                          }
                        },
                        "id": 3035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1256:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3036,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3019,
                        "src": "1274:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3037,
                        "name": "REGISTRATION_PERIOD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2921,
                        "src": "1281:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3030,
                        "name": "base",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2929,
                        "src": "1242:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseRegistrar_$106",
                          "typeString": "contract BaseRegistrar"
                        }
                      },
                      "id": 3032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "register",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 89,
                      "src": "1242:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address,uint256) external returns (uint256)"
                      }
                    },
                    "id": 3038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1242:59:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3039,
                  "nodeType": "ExpressionStatement",
                  "src": "1242:59:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3041,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3017,
                        "src": "1331:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3042,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3019,
                        "src": "1337:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3040,
                      "name": "NameRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2927,
                      "src": "1316:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,address)"
                      }
                    },
                    "id": 3043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1316:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3044,
                  "nodeType": "EmitStatement",
                  "src": "1311:32:11"
                }
              ]
            },
            "documentation": null,
            "id": 3046,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3022,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3021,
                  "name": "onlyOpensea",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2952,
                  "src": "1186:11:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1186:11:11"
              }
            ],
            "name": "register",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3017,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3046,
                  "src": "1140:20:11",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3016,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3019,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3046,
                  "src": "1162:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3018,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1162:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1139:37:11"
            },
            "returnParameters": {
              "id": 3023,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1198:0:11"
            },
            "scope": 3075,
            "src": "1122:228:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3057,
              "nodeType": "Block",
              "src": "1413:35:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3053,
                      "name": "opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2933,
                      "src": "1423:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3054,
                      "name": "_opensea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3048,
                      "src": "1433:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1423:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3056,
                  "nodeType": "ExpressionStatement",
                  "src": "1423:18:11"
                }
              ]
            },
            "documentation": null,
            "id": 3058,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3051,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3050,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12232,
                  "src": "1403:9:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1403:9:11"
              }
            ],
            "name": "setOpensea",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3048,
                  "name": "_opensea",
                  "nodeType": "VariableDeclaration",
                  "scope": 3058,
                  "src": "1376:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3047,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1376:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1375:18:11"
            },
            "returnParameters": {
              "id": 3052,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1413:0:11"
            },
            "scope": 3075,
            "src": "1356:92:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3073,
              "nodeType": "Block",
              "src": "1525:55:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3068,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3060,
                                "src": "1566:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 3067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1560:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 3069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1560:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3066,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13004,
                          "src": "1550:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1550:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1542:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": "uint256"
                    },
                    "id": 3071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1542:31:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3064,
                  "id": 3072,
                  "nodeType": "Return",
                  "src": "1535:38:11"
                }
              ]
            },
            "documentation": null,
            "id": 3074,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3060,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3074,
                  "src": "1474:18:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3059,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1474:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1473:20:11"
            },
            "returnParameters": {
              "id": 3064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3063,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3074,
                  "src": "1516:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1516:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1515:9:11"
            },
            "scope": 3075,
            "src": "1454:126:11",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 3076,
        "src": "245:1337:11"
      }
    ],
    "src": "0:1583:11"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-17T16:01:00.530Z",
  "devdoc": {
    "methods": {
      "isOwner()": {
        "return": "true if `msg.sender` is the owner of the contract."
      },
      "owner()": {
        "return": "the address of the owner."
      },
      "renounceOwnership()": {
        "details": "Allows the current owner to relinquish control of the contract."
      },
      "transferOwnership(address)": {
        "details": "Allows the current owner to transfer control of the contract to a newOwner.",
        "params": {
          "newOwner": "The address to transfer ownership to."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "renounceOwnership()": {
        "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
      }
    }
  }
}