{
  "contractName": "Controllable",
  "sourceName": "@ensdomains/ens-contracts/contracts/root/Controllable.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "controller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "ControllerChanged",
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "controllers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "controller",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6103778061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063715018a61461005c5780638da5cb5b14610066578063da8c229e14610086578063e0dba60f146100b9578063f2fde38b146100cc575b600080fd5b6100646100df565b005b6000546040516001600160a01b0390911681526020015b60405180910390f35b6100a96100943660046102ae565b60016020526000908152604090205460ff1681565b604051901515815260200161007d565b6100646100c73660046102d0565b61011e565b6100646100da3660046102ae565b6101a7565b6000546001600160a01b031633146101125760405162461bcd60e51b81526004016101099061030c565b60405180910390fd5b61011c6000610242565b565b6000546001600160a01b031633146101485760405162461bcd60e51b81526004016101099061030c565b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b6000546001600160a01b031633146101d15760405162461bcd60e51b81526004016101099061030c565b6001600160a01b0381166102365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610109565b61023f81610242565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146102a957600080fd5b919050565b6000602082840312156102c057600080fd5b6102c982610292565b9392505050565b600080604083850312156102e357600080fd5b6102ec83610292565b91506020830135801515811461030157600080fd5b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220b670a023693bbb6ffb81ea4cc46cba9ed65bc6c9e813c1d602d7c0130a2dd7ae64736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063715018a61461005c5780638da5cb5b14610066578063da8c229e14610086578063e0dba60f146100b9578063f2fde38b146100cc575b600080fd5b6100646100df565b005b6000546040516001600160a01b0390911681526020015b60405180910390f35b6100a96100943660046102ae565b60016020526000908152604090205460ff1681565b604051901515815260200161007d565b6100646100c73660046102d0565b61011e565b6100646100da3660046102ae565b6101a7565b6000546001600160a01b031633146101125760405162461bcd60e51b81526004016101099061030c565b60405180910390fd5b61011c6000610242565b565b6000546001600160a01b031633146101485760405162461bcd60e51b81526004016101099061030c565b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b6000546001600160a01b031633146101d15760405162461bcd60e51b81526004016101099061030c565b6001600160a01b0381166102365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610109565b61023f81610242565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146102a957600080fd5b919050565b6000602082840312156102c057600080fd5b6102c982610292565b9392505050565b600080604083850312156102e357600080fd5b6102ec83610292565b91506020830135801515811461030157600080fd5b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220b670a023693bbb6ffb81ea4cc46cba9ed65bc6c9e813c1d602d7c0130a2dd7ae64736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  },
  "evm": {
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "177400",
        "executionCost": "26061",
        "totalCost": "203461"
      },
      "external": {
        "controllers(address)": "2553",
        "owner()": "2290",
        "renounceOwnership()": "28092",
        "setController(address,bool)": "28317",
        "transferOwnership(address)": "28375"
      }
    },
    "methodIdentifiers": {
      "controllers(address)": "da8c229e",
      "owner()": "8da5cb5b",
      "renounceOwnership()": "715018a6",
      "setController(address,bool)": "e0dba60f",
      "transferOwnership(address)": "f2fde38b"
    }
  }
}