{
  "_format": "hh3-artifact-1",
  "contractName": "OwnedResolver",
  "sourceName": "contracts/resolvers/OwnedResolver.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "addressBytes",
          "type": "bytes"
        }
      ],
      "name": "InvalidEVMAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "OffsetOutOfBoundsError",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "contentType",
          "type": "uint256"
        }
      ],
      "name": "ABIChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "a",
          "type": "address"
        }
      ],
      "name": "AddrChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "newAddress",
          "type": "bytes"
        }
      ],
      "name": "AddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "ContenthashChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "record",
          "type": "bytes"
        }
      ],
      "name": "DNSRecordChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "DNSRecordDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "lastzonehash",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "zonehash",
          "type": "bytes"
        }
      ],
      "name": "DNSZonehashChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "implementer",
          "type": "address"
        }
      ],
      "name": "InterfaceChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "NameChanged",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "PubkeyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "indexedKey",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        }
      ],
      "name": "TextChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "newVersion",
          "type": "uint64"
        }
      ],
      "name": "VersionChanged",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "contentTypes",
          "type": "uint256"
        }
      ],
      "name": "ABI",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "addressBytes",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "clearRecords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "contenthash",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        },
        {
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "dnsRecord",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        }
      ],
      "name": "hasAddr",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        }
      ],
      "name": "hasDNSRecords",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "interfaceImplementer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "pubkey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "y",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "recordVersions",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "resolve",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "contentType",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setABI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "addressBytes",
          "type": "bytes"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "setContenthash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setDNSRecords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "implementer",
          "type": "address"
        }
      ],
      "name": "setInterface",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "newName",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "setPubkey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setText",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "setZonehash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "key",
          "type": "string"
        }
      ],
      "name": "text",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "zonehash",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6131528061007a6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063691f343111610104578063bc1c58d1116100a2578063d700ff3311610071578063d700ff3314610488578063e59d895d146104cb578063f1cb7e06146104de578063f2fde38b146104f157600080fd5b8063bc1c58d1146103f5578063c869023314610408578063ce3decdc14610462578063d5fa2b001461047557600080fd5b80638b95dd71116100de5780638b95dd711461039e5780638da5cb5b146103b15780639061b923146103cf578063a8fa5682146103e257600080fd5b8063691f343114610370578063715018a614610383578063773722131461038b57600080fd5b806332f111d7116101715780634cbf6ba41161014b5780634cbf6ba4146102dc57806359d1d43c1461032a5780635c98042b1461034a578063623195b01461035d57600080fd5b806332f111d7146102a35780633603d758146102b65780633b3b57de146102c957600080fd5b8063124a319c116101ad578063124a319c146102245780632203ab561461025c57806329cd62ea1461027d578063304e6ade1461029057600080fd5b806301ffc9a7146101d45780630af179d7146101fc57806310f13a8c14610211575b600080fd5b6101e76101e2366004612635565b610504565b60405190151581526020015b60405180910390f35b61020f61020a366004612692565b610515565b005b61020f61021f3660046126de565b610734565b61023761023236600461275d565b610816565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b61026f61026a366004612789565b610baf565b6040516101f3929190612819565b61020f61028b366004612832565b610cf5565b61020f61029e366004612692565b610daa565b6101e76102b1366004612789565b610e3b565b61020f6102c436600461285e565b610e89565b6102376102d736600461285e565b610f41565b6101e76102ea366004612789565b60008281526001602090815260408083205467ffffffffffffffff1683526007825280832094835293815283822092825291909152205461ffff16151590565b61033d610338366004612692565b610f60565b6040516101f39190612877565b61033d61035836600461285e565b611043565b61020f61036b36600461288a565b611104565b61033d61037e36600461285e565b6111b6565b61020f6111f2565b61020f610399366004612692565b611206565b61020f6103ac3660046129d8565b611297565b60005473ffffffffffffffffffffffffffffffffffffffff16610237565b61033d6103dd366004612a28565b6113eb565b61033d6103f0366004612a91565b611471565b61033d61040336600461285e565b6114c1565b61044d61041636600461285e565b60008181526001602081815260408084205467ffffffffffffffff168452600a825280842094845293905291902080549101549091565b604080519283526020830191909152016101f3565b61020f610470366004612692565b6114fd565b61020f610483366004612af5565b611655565b6104b261049636600461285e565b60016020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f3565b61020f6104d9366004612b18565b6116cf565b61033d6104ec366004612789565b6117c8565b61020f6104ff366004612b54565b611959565b600061050f82611a10565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461053b57600080fd5b6000848152600160209081526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105a39183918d908d90819084018382808284376000920191909152509293925050611a669050565b90505b805151602082015110156106cd578661ffff1660000361060b57806040015196506105d081611ac7565b9450846040516020016105e39190612b6f565b60405160208183030381529060405280519060200120925061060481611ae8565b93506106bf565b600061061682611ac7565b9050816040015161ffff168861ffff1614158061063a57506106388682611b04565b155b156106bd576106968c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d915061068d908290612bba565b8b51158a611b2a565b8160400151975081602001519650809550858051906020012093506106ba82611ae8565b94505b505b6106c881611d97565b6105a6565b50835115610728576107288a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061071f91508290508f612bba565b89511588611b2a565b50505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461075a57600080fd5b60008681526001602090815260408083205467ffffffffffffffff168352600b82528083208984529091529081902090518491849161079c9089908990612bcd565b908152602001604051809103902091826107b7929190612c77565b5084846040516107c8929190612bcd565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516108069493929190612dda565b60405180910390a3505050505050565b60008281526001602090815260408083205467ffffffffffffffff1683526008825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff16801561089157905061050f565b600061089c85610f41565b905073ffffffffffffffffffffffffffffffffffffffff81166108c45760009250505061050f565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161098e9190612b6f565b600060405180830381855afa9150503d80600081146109c9576040519150601f19603f3d011682016040523d82523d6000602084013e6109ce565b606091505b50915091508115806109e1575060208151105b80610a23575080601f815181106109fa576109fa612e0c565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610a3557600094505050505061050f565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610afc9190612b6f565b600060405180830381855afa9150503d8060008114610b37576040519150601f19603f3d011682016040523d82523d6000602084013e610b3c565b606091505b509092509050811580610b50575060208151105b80610b92575080601f81518110610b6957610b69612e0c565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610ba457600094505050505061050f565b509095945050505050565b60008281526001602081815260408084205467ffffffffffffffff1684526002825280842086855290915282206060915b600081118015610bf05750848111155b15610cd55780851615801590610c1e575060008181526020839052604081208054610c1a90612bdd565b9050115b15610ccd5780826000838152602001908152602001600020808054610c4290612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6e90612bdd565b8015610cbb5780601f10610c9057610100808354040283529160200191610cbb565b820191906000526020600020905b815481529060010190602001808311610c9e57829003601f168201915b50505050509050935093505050610cee565b60011b610be0565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610d1b57600080fd5b6040805180820182528481526020808201858152600088815260018084528582205467ffffffffffffffff168252600a84528582208a835290935284902092518355519101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610d9c9086908690918252602082015260400190565b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610dd057600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600482528083208784529091529020610e08838583612c77565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d9c929190612e3b565b60008281526001602090815260408083205467ffffffffffffffff16835260038252808320858452825280832084845290915281208054829190610e7e90612bdd565b905011905092915050565b600054819073ffffffffffffffffffffffffffffffffffffffff163314610eaf57600080fd5b6000828152600160205260408120805467ffffffffffffffff1691610ed383612e4f565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556000848152600160209081526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b6000610f4e82603c6117c8565b610f5790612e7c565b60601c92915050565b60008381526001602090815260408083205467ffffffffffffffff168352600b825280832086845290915290819020905160609190610fa29085908590612bcd565b90815260200160405180910390208054610fbb90612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe790612bdd565b80156110345780601f1061100957610100808354040283529160200191611034565b820191906000526020600020905b81548152906001019060200180831161101757829003601f168201915b505050505090505b9392505050565b60008181526001602090815260408083205467ffffffffffffffff16835260058252808320848452909152902080546060919061107f90612bdd565b80601f01602080910402602001604051908101604052809291908181526020018280546110ab90612bdd565b80156110f85780601f106110cd576101008083540402835291602001916110f8565b820191906000526020600020905b8154815290600101906020018083116110db57829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff16331461112a57600080fd5b83611136600182612bba565b161561114157600080fd5b60008581526001602090815260408083205467ffffffffffffffff1683526002825280832088845282528083208784529091529020611181838583612c77565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526001602090815260408083205467ffffffffffffffff16835260098252808320848452909152902080546060919061107f90612bdd565b6111fa611e7f565b6112046000611f00565b565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461122c57600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600982528083208784529091529020611264838583612c77565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d9c929190612e3b565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146112bd57600080fd5b8151158015906112cf57508151601414155b80156112df57506112df83611f75565b1561132157816040517f8d666f600000000000000000000000000000000000000000000000000000000081526004016113189190612877565b60405180910390fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051611353929190612819565b60405180910390a2603c83036113a557837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd261138e84612e7c565b60405160609190911c815260200160405180910390a25b60008481526001602090815260408083205467ffffffffffffffff16835260038252808320878452825280832086845290915290206113e48382612ee8565b5050505050565b60606000803073ffffffffffffffffffffffffffffffffffffffff16846040516114159190612b6f565b600060405180830381855afa9150503d8060008114611450576040519150601f19603f3d011682016040523d82523d6000602084013e611455565b606091505b5091509150811561146957915061050f9050565b805160208201fd5b60008381526001602090815260408083205467ffffffffffffffff168352600682528083208684528252808320858452825280832061ffff851684529091529020805460609190610fbb90612bdd565b60008181526001602090815260408083205467ffffffffffffffff16835260048252808320848452909152902080546060919061107f90612bdd565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461152357600080fd5b60008481526001602090815260408083205467ffffffffffffffff16808452600583528184208885529092528220805491929161155f90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461158b90612bdd565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b5050505067ffffffffffffffff841660009081526005602090815260408083208b845290915290209192506116109050858783612c77565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582878760405161164593929190613001565b60405180910390a2505050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461167b57600080fd5b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526116ca908490603c90603401604051602081830303815290604052611297565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146116f557600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526008825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b60008281526001602090815260408083205467ffffffffffffffff168352600382528083208584528252808320848452918290529091208054606092919061180f90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461183b90612bdd565b80156118885780601f1061185d57610100808354040283529160200191611888565b820191906000526020600020905b81548152906001019060200180831161186b57829003601f168201915b50505050509150815160001480156118ae575060006118a684611f9c565b63ffffffff16115b15611952576380000000600090815260208290526040902080546118d190612bdd565b80601f01602080910402602001604051908101604052809291908181526020018280546118fd90612bdd565b801561194a5780601f1061191f5761010080835404028352916020019161194a565b820191906000526020600020905b81548152906001019060200180831161192d57829003601f168201915b505050505091505b5092915050565b611961611e7f565b73ffffffffffffffffffffffffffffffffffffffff8116611a04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611318565b611a0d81611f00565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000148061050f575061050f82611fc8565b611ab46040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261050f81611d97565b6020810151815160609161050f91611adf908261201e565b84519190612080565b60a081015160c082015160609161050f91611adf908290612bba565b60008151835114801561103c575081805190602001208380519060200120149392505050565b865160208801206000611b3e878787612080565b90508315611c685767ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611b8990612bdd565b159050611be85767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611bcc83613031565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611c29916125b6565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611c5b92919061306d565b60405180910390a2610728565b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611cab90612bdd565b9050600003611d0c5767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611cf083613093565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611d4e8282612ee8565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611d83939291906130ab565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611dae5750565b6000611dc28260000151836020015161201e565b8260200151611dd191906130da565b8251909150611de090826120d6565b61ffff166040830152611df46002826130da565b8251909150611e0390826120d6565b61ffff166060830152611e176002826130da565b8251909150611e2690826120f8565b63ffffffff166080830152611e3c6004826130da565b8251909150600090611e4e90836120d6565b61ffff169050611e5f6002836130da565b60a084018190529150611e7281836130da565b60c0909301929092525050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611318565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000638000000082148061050f57506000611f8f83611f9c565b63ffffffff161192915050565b6000603c8203611fae57506001919050565b6380000000918218918210611fc457600061050f565b5090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000148061050f575061050f82612115565b6000815b83518110612032576120326130ed565b600061203e858361216b565b60ff16905061204e8160016130da565b61205890836130da565b915080600003612068575061206e565b50612022565b6120788382612bba565b949350505050565b60608167ffffffffffffffff81111561209b5761209b6128dd565b6040519080825280601f01601f1916602001820160405280156120c5576020820181803683370190505b50905061103c84848360008661219e565b60006120ec836120e78460026130da565b6121cf565b50016020015160f01c90565b6000612109836120e78460046130da565b50016020015160e01c90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000148061050f575061050f8261221b565b600061217c836120e78460016130da565b82828151811061218e5761218e612e0c565b016020015160f81c905092915050565b6121ac856120e783876130da565b6121ba836120e783856130da565b6113e482602085010185602088010183612271565b81518111156122175781516040517f8a3c1cfb000000000000000000000000000000000000000000000000000000008152611318918391600401918252602082015260400190565b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c00000000000000000000000000000000000000000000000000000000148061050f575061050f826122f7565b5b601f8111156122b05781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001612272565b80156116ca5790518251600160209390930360031b9290921b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061238a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b8061050f575061050f8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d100000000000000000000000000000000000000000000000000000000148061050f575061050f8260007f3b3b57de000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061247857507ff1cb7e06000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806124c457507f32f111d7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061050f575061050f8260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000148061050f575061050f8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff3300000000000000000000000000000000000000000000000000000000148061050f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461050f565b5080546125c290612bdd565b6000825580601f106125d2575050565b601f016020900490600052602060002090810190611a0d91905b80821115611fc457600081556001016125ec565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461263057600080fd5b919050565b60006020828403121561264757600080fd5b61103c82612600565b60008083601f84011261266257600080fd5b50813567ffffffffffffffff81111561267a57600080fd5b602083019150836020828501011115610cee57600080fd5b6000806000604084860312156126a757600080fd5b83359250602084013567ffffffffffffffff8111156126c557600080fd5b6126d186828701612650565b9497909650939450505050565b6000806000806000606086880312156126f657600080fd5b85359450602086013567ffffffffffffffff81111561271457600080fd5b61272088828901612650565b909550935050604086013567ffffffffffffffff81111561274057600080fd5b61274c88828901612650565b969995985093965092949392505050565b6000806040838503121561277057600080fd5b8235915061278060208401612600565b90509250929050565b6000806040838503121561279c57600080fd5b50508035926020909101359150565b60005b838110156127c65781810151838201526020016127ae565b50506000910152565b600081518084526127e78160208601602086016127ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b82815260406020820152600061207860408301846127cf565b60008060006060848603121561284757600080fd5b505081359360208301359350604090920135919050565b60006020828403121561287057600080fd5b5035919050565b60208152600061103c60208301846127cf565b600080600080606085870312156128a057600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156128c557600080fd5b6128d187828801612650565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261291d57600080fd5b813567ffffffffffffffff811115612937576129376128dd565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156129a3576129a36128dd565b6040528181528382016020018510156129bb57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156129ed57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612a1257600080fd5b612a1e8682870161290c565b9150509250925092565b60008060408385031215612a3b57600080fd5b823567ffffffffffffffff811115612a5257600080fd5b612a5e8582860161290c565b925050602083013567ffffffffffffffff811115612a7b57600080fd5b612a878582860161290c565b9150509250929050565b600080600060608486031215612aa657600080fd5b8335925060208401359150604084013561ffff81168114612ac657600080fd5b809150509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461263057600080fd5b60008060408385031215612b0857600080fd5b8235915061278060208401612ad1565b600080600060608486031215612b2d57600080fd5b83359250612b3d60208501612600565b9150612b4b60408501612ad1565b90509250925092565b600060208284031215612b6657600080fd5b61103c82612ad1565b60008251612b818184602087016127ab565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561050f5761050f612b8b565b8183823760009101908152919050565b600181811c90821680612bf157607f821691505b602082108103612c2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156116ca57806000526020600020601f840160051c81016020851015612c575750805b601f840160051c820191505b818110156113e45760008155600101612c63565b67ffffffffffffffff831115612c8f57612c8f6128dd565b612ca383612c9d8354612bdd565b83612c30565b6000601f841160018114612cf55760008515612cbf5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556113e4565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612d445786850135825560209485019460019092019101612d24565b5086821015612d7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612dee604083018688612d91565b8281036020840152612e01818587612d91565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602081526000612078602083018486612d91565b600067ffffffffffffffff821667ffffffffffffffff8103612e7357612e73612b8b565b60010192915050565b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015612ee1577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b815167ffffffffffffffff811115612f0257612f026128dd565b612f1681612f108454612bdd565b84612c30565b6020601f821160018114612f685760008315612f325750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556113e4565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015612fb65787850151825560209485019460019092019101612f96565b5084821015612ff257868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60408152600061301460408301866127cf565b8281036020840152613027818587612d91565b9695505050505050565b600061ffff82168061304557613045612b8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60408152600061308060408301856127cf565b905061ffff831660208301529392505050565b600061ffff821661ffff8103612e7357612e73612b8b565b6060815260006130be60608301866127cf565b61ffff85166020840152828103604084015261302781856127cf565b8082018082111561050f5761050f612b8b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea26469706673582212205b490ad3adf402de833fef83024fca3b5b8168beab0671d986f5b7b5f1ab0bb264736f6c634300081a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063691f343111610104578063bc1c58d1116100a2578063d700ff3311610071578063d700ff3314610488578063e59d895d146104cb578063f1cb7e06146104de578063f2fde38b146104f157600080fd5b8063bc1c58d1146103f5578063c869023314610408578063ce3decdc14610462578063d5fa2b001461047557600080fd5b80638b95dd71116100de5780638b95dd711461039e5780638da5cb5b146103b15780639061b923146103cf578063a8fa5682146103e257600080fd5b8063691f343114610370578063715018a614610383578063773722131461038b57600080fd5b806332f111d7116101715780634cbf6ba41161014b5780634cbf6ba4146102dc57806359d1d43c1461032a5780635c98042b1461034a578063623195b01461035d57600080fd5b806332f111d7146102a35780633603d758146102b65780633b3b57de146102c957600080fd5b8063124a319c116101ad578063124a319c146102245780632203ab561461025c57806329cd62ea1461027d578063304e6ade1461029057600080fd5b806301ffc9a7146101d45780630af179d7146101fc57806310f13a8c14610211575b600080fd5b6101e76101e2366004612635565b610504565b60405190151581526020015b60405180910390f35b61020f61020a366004612692565b610515565b005b61020f61021f3660046126de565b610734565b61023761023236600461275d565b610816565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b61026f61026a366004612789565b610baf565b6040516101f3929190612819565b61020f61028b366004612832565b610cf5565b61020f61029e366004612692565b610daa565b6101e76102b1366004612789565b610e3b565b61020f6102c436600461285e565b610e89565b6102376102d736600461285e565b610f41565b6101e76102ea366004612789565b60008281526001602090815260408083205467ffffffffffffffff1683526007825280832094835293815283822092825291909152205461ffff16151590565b61033d610338366004612692565b610f60565b6040516101f39190612877565b61033d61035836600461285e565b611043565b61020f61036b36600461288a565b611104565b61033d61037e36600461285e565b6111b6565b61020f6111f2565b61020f610399366004612692565b611206565b61020f6103ac3660046129d8565b611297565b60005473ffffffffffffffffffffffffffffffffffffffff16610237565b61033d6103dd366004612a28565b6113eb565b61033d6103f0366004612a91565b611471565b61033d61040336600461285e565b6114c1565b61044d61041636600461285e565b60008181526001602081815260408084205467ffffffffffffffff168452600a825280842094845293905291902080549101549091565b604080519283526020830191909152016101f3565b61020f610470366004612692565b6114fd565b61020f610483366004612af5565b611655565b6104b261049636600461285e565b60016020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f3565b61020f6104d9366004612b18565b6116cf565b61033d6104ec366004612789565b6117c8565b61020f6104ff366004612b54565b611959565b600061050f82611a10565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461053b57600080fd5b6000848152600160209081526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105a39183918d908d90819084018382808284376000920191909152509293925050611a669050565b90505b805151602082015110156106cd578661ffff1660000361060b57806040015196506105d081611ac7565b9450846040516020016105e39190612b6f565b60405160208183030381529060405280519060200120925061060481611ae8565b93506106bf565b600061061682611ac7565b9050816040015161ffff168861ffff1614158061063a57506106388682611b04565b155b156106bd576106968c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d915061068d908290612bba565b8b51158a611b2a565b8160400151975081602001519650809550858051906020012093506106ba82611ae8565b94505b505b6106c881611d97565b6105a6565b50835115610728576107288a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c925061071f91508290508f612bba565b89511588611b2a565b50505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461075a57600080fd5b60008681526001602090815260408083205467ffffffffffffffff168352600b82528083208984529091529081902090518491849161079c9089908990612bcd565b908152602001604051809103902091826107b7929190612c77565b5084846040516107c8929190612bcd565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516108069493929190612dda565b60405180910390a3505050505050565b60008281526001602090815260408083205467ffffffffffffffff1683526008825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff16801561089157905061050f565b600061089c85610f41565b905073ffffffffffffffffffffffffffffffffffffffff81166108c45760009250505061050f565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161098e9190612b6f565b600060405180830381855afa9150503d80600081146109c9576040519150601f19603f3d011682016040523d82523d6000602084013e6109ce565b606091505b50915091508115806109e1575060208151105b80610a23575080601f815181106109fa576109fa612e0c565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610a3557600094505050505061050f565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610afc9190612b6f565b600060405180830381855afa9150503d8060008114610b37576040519150601f19603f3d011682016040523d82523d6000602084013e610b3c565b606091505b509092509050811580610b50575060208151105b80610b92575080601f81518110610b6957610b69612e0c565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610ba457600094505050505061050f565b509095945050505050565b60008281526001602081815260408084205467ffffffffffffffff1684526002825280842086855290915282206060915b600081118015610bf05750848111155b15610cd55780851615801590610c1e575060008181526020839052604081208054610c1a90612bdd565b9050115b15610ccd5780826000838152602001908152602001600020808054610c4290612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6e90612bdd565b8015610cbb5780601f10610c9057610100808354040283529160200191610cbb565b820191906000526020600020905b815481529060010190602001808311610c9e57829003601f168201915b50505050509050935093505050610cee565b60011b610be0565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610d1b57600080fd5b6040805180820182528481526020808201858152600088815260018084528582205467ffffffffffffffff168252600a84528582208a835290935284902092518355519101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610d9c9086908690918252602082015260400190565b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610dd057600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600482528083208784529091529020610e08838583612c77565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d9c929190612e3b565b60008281526001602090815260408083205467ffffffffffffffff16835260038252808320858452825280832084845290915281208054829190610e7e90612bdd565b905011905092915050565b600054819073ffffffffffffffffffffffffffffffffffffffff163314610eaf57600080fd5b6000828152600160205260408120805467ffffffffffffffff1691610ed383612e4f565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556000848152600160209081526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b6000610f4e82603c6117c8565b610f5790612e7c565b60601c92915050565b60008381526001602090815260408083205467ffffffffffffffff168352600b825280832086845290915290819020905160609190610fa29085908590612bcd565b90815260200160405180910390208054610fbb90612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe790612bdd565b80156110345780601f1061100957610100808354040283529160200191611034565b820191906000526020600020905b81548152906001019060200180831161101757829003601f168201915b505050505090505b9392505050565b60008181526001602090815260408083205467ffffffffffffffff16835260058252808320848452909152902080546060919061107f90612bdd565b80601f01602080910402602001604051908101604052809291908181526020018280546110ab90612bdd565b80156110f85780601f106110cd576101008083540402835291602001916110f8565b820191906000526020600020905b8154815290600101906020018083116110db57829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff16331461112a57600080fd5b83611136600182612bba565b161561114157600080fd5b60008581526001602090815260408083205467ffffffffffffffff1683526002825280832088845282528083208784529091529020611181838583612c77565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526001602090815260408083205467ffffffffffffffff16835260098252808320848452909152902080546060919061107f90612bdd565b6111fa611e7f565b6112046000611f00565b565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461122c57600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600982528083208784529091529020611264838583612c77565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d9c929190612e3b565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146112bd57600080fd5b8151158015906112cf57508151601414155b80156112df57506112df83611f75565b1561132157816040517f8d666f600000000000000000000000000000000000000000000000000000000081526004016113189190612877565b60405180910390fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051611353929190612819565b60405180910390a2603c83036113a557837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd261138e84612e7c565b60405160609190911c815260200160405180910390a25b60008481526001602090815260408083205467ffffffffffffffff16835260038252808320878452825280832086845290915290206113e48382612ee8565b5050505050565b60606000803073ffffffffffffffffffffffffffffffffffffffff16846040516114159190612b6f565b600060405180830381855afa9150503d8060008114611450576040519150601f19603f3d011682016040523d82523d6000602084013e611455565b606091505b5091509150811561146957915061050f9050565b805160208201fd5b60008381526001602090815260408083205467ffffffffffffffff168352600682528083208684528252808320858452825280832061ffff851684529091529020805460609190610fbb90612bdd565b60008181526001602090815260408083205467ffffffffffffffff16835260048252808320848452909152902080546060919061107f90612bdd565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461152357600080fd5b60008481526001602090815260408083205467ffffffffffffffff16808452600583528184208885529092528220805491929161155f90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461158b90612bdd565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b5050505067ffffffffffffffff841660009081526005602090815260408083208b845290915290209192506116109050858783612c77565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582878760405161164593929190613001565b60405180910390a2505050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461167b57600080fd5b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526116ca908490603c90603401604051602081830303815290604052611297565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146116f557600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526008825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b60008281526001602090815260408083205467ffffffffffffffff168352600382528083208584528252808320848452918290529091208054606092919061180f90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461183b90612bdd565b80156118885780601f1061185d57610100808354040283529160200191611888565b820191906000526020600020905b81548152906001019060200180831161186b57829003601f168201915b50505050509150815160001480156118ae575060006118a684611f9c565b63ffffffff16115b15611952576380000000600090815260208290526040902080546118d190612bdd565b80601f01602080910402602001604051908101604052809291908181526020018280546118fd90612bdd565b801561194a5780601f1061191f5761010080835404028352916020019161194a565b820191906000526020600020905b81548152906001019060200180831161192d57829003601f168201915b505050505091505b5092915050565b611961611e7f565b73ffffffffffffffffffffffffffffffffffffffff8116611a04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611318565b611a0d81611f00565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000148061050f575061050f82611fc8565b611ab46040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261050f81611d97565b6020810151815160609161050f91611adf908261201e565b84519190612080565b60a081015160c082015160609161050f91611adf908290612bba565b60008151835114801561103c575081805190602001208380519060200120149392505050565b865160208801206000611b3e878787612080565b90508315611c685767ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611b8990612bdd565b159050611be85767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611bcc83613031565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611c29916125b6565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611c5b92919061306d565b60405180910390a2610728565b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611cab90612bdd565b9050600003611d0c5767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611cf083613093565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611d4e8282612ee8565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611d83939291906130ab565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611dae5750565b6000611dc28260000151836020015161201e565b8260200151611dd191906130da565b8251909150611de090826120d6565b61ffff166040830152611df46002826130da565b8251909150611e0390826120d6565b61ffff166060830152611e176002826130da565b8251909150611e2690826120f8565b63ffffffff166080830152611e3c6004826130da565b8251909150600090611e4e90836120d6565b61ffff169050611e5f6002836130da565b60a084018190529150611e7281836130da565b60c0909301929092525050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611318565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000638000000082148061050f57506000611f8f83611f9c565b63ffffffff161192915050565b6000603c8203611fae57506001919050565b6380000000918218918210611fc457600061050f565b5090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000148061050f575061050f82612115565b6000815b83518110612032576120326130ed565b600061203e858361216b565b60ff16905061204e8160016130da565b61205890836130da565b915080600003612068575061206e565b50612022565b6120788382612bba565b949350505050565b60608167ffffffffffffffff81111561209b5761209b6128dd565b6040519080825280601f01601f1916602001820160405280156120c5576020820181803683370190505b50905061103c84848360008661219e565b60006120ec836120e78460026130da565b6121cf565b50016020015160f01c90565b6000612109836120e78460046130da565b50016020015160e01c90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000148061050f575061050f8261221b565b600061217c836120e78460016130da565b82828151811061218e5761218e612e0c565b016020015160f81c905092915050565b6121ac856120e783876130da565b6121ba836120e783856130da565b6113e482602085010185602088010183612271565b81518111156122175781516040517f8a3c1cfb000000000000000000000000000000000000000000000000000000008152611318918391600401918252602082015260400190565b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c00000000000000000000000000000000000000000000000000000000148061050f575061050f826122f7565b5b601f8111156122b05781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001612272565b80156116ca5790518251600160209390930360031b9290921b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061238a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b8061050f575061050f8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d100000000000000000000000000000000000000000000000000000000148061050f575061050f8260007f3b3b57de000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061247857507ff1cb7e06000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806124c457507f32f111d7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061050f575061050f8260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000148061050f575061050f8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff3300000000000000000000000000000000000000000000000000000000148061050f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461050f565b5080546125c290612bdd565b6000825580601f106125d2575050565b601f016020900490600052602060002090810190611a0d91905b80821115611fc457600081556001016125ec565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461263057600080fd5b919050565b60006020828403121561264757600080fd5b61103c82612600565b60008083601f84011261266257600080fd5b50813567ffffffffffffffff81111561267a57600080fd5b602083019150836020828501011115610cee57600080fd5b6000806000604084860312156126a757600080fd5b83359250602084013567ffffffffffffffff8111156126c557600080fd5b6126d186828701612650565b9497909650939450505050565b6000806000806000606086880312156126f657600080fd5b85359450602086013567ffffffffffffffff81111561271457600080fd5b61272088828901612650565b909550935050604086013567ffffffffffffffff81111561274057600080fd5b61274c88828901612650565b969995985093965092949392505050565b6000806040838503121561277057600080fd5b8235915061278060208401612600565b90509250929050565b6000806040838503121561279c57600080fd5b50508035926020909101359150565b60005b838110156127c65781810151838201526020016127ae565b50506000910152565b600081518084526127e78160208601602086016127ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b82815260406020820152600061207860408301846127cf565b60008060006060848603121561284757600080fd5b505081359360208301359350604090920135919050565b60006020828403121561287057600080fd5b5035919050565b60208152600061103c60208301846127cf565b600080600080606085870312156128a057600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156128c557600080fd5b6128d187828801612650565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261291d57600080fd5b813567ffffffffffffffff811115612937576129376128dd565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156129a3576129a36128dd565b6040528181528382016020018510156129bb57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156129ed57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612a1257600080fd5b612a1e8682870161290c565b9150509250925092565b60008060408385031215612a3b57600080fd5b823567ffffffffffffffff811115612a5257600080fd5b612a5e8582860161290c565b925050602083013567ffffffffffffffff811115612a7b57600080fd5b612a878582860161290c565b9150509250929050565b600080600060608486031215612aa657600080fd5b8335925060208401359150604084013561ffff81168114612ac657600080fd5b809150509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461263057600080fd5b60008060408385031215612b0857600080fd5b8235915061278060208401612ad1565b600080600060608486031215612b2d57600080fd5b83359250612b3d60208501612600565b9150612b4b60408501612ad1565b90509250925092565b600060208284031215612b6657600080fd5b61103c82612ad1565b60008251612b818184602087016127ab565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561050f5761050f612b8b565b8183823760009101908152919050565b600181811c90821680612bf157607f821691505b602082108103612c2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156116ca57806000526020600020601f840160051c81016020851015612c575750805b601f840160051c820191505b818110156113e45760008155600101612c63565b67ffffffffffffffff831115612c8f57612c8f6128dd565b612ca383612c9d8354612bdd565b83612c30565b6000601f841160018114612cf55760008515612cbf5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556113e4565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612d445786850135825560209485019460019092019101612d24565b5086821015612d7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612dee604083018688612d91565b8281036020840152612e01818587612d91565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602081526000612078602083018486612d91565b600067ffffffffffffffff821667ffffffffffffffff8103612e7357612e73612b8b565b60010192915050565b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015612ee1577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b815167ffffffffffffffff811115612f0257612f026128dd565b612f1681612f108454612bdd565b84612c30565b6020601f821160018114612f685760008315612f325750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556113e4565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015612fb65787850151825560209485019460019092019101612f96565b5084821015612ff257868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60408152600061301460408301866127cf565b8281036020840152613027818587612d91565b9695505050505050565b600061ffff82168061304557613045612b8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60408152600061308060408301856127cf565b905061ffff831660208301529392505050565b600061ffff821661ffff8103612e7357612e73612b8b565b6060815260006130be60608301866127cf565b61ffff85166020840152828103604084015261302781856127cf565b8082018082111561050f5761050f612b8b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea26469706673582212205b490ad3adf402de833fef83024fca3b5b8168beab0671d986f5b7b5f1ab0bb264736f6c634300081a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {},
  "inputSourceName": "project/contracts/resolvers/OwnedResolver.sol",
  "buildInfoId": "solc-0_8_26-f05bdccb11f2cf6df865fc6a27a95b5ace6017ea"
}