{
  "_format": "hh-sol-artifact-1",
  "contractName": "OwnedResolver",
  "sourceName": "contracts/resolvers/OwnedResolver.sol",
  "abi": [
    {
      "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"
        }
      ],
      "name": "DNSZoneCleared",
      "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"
        }
      ],
      "name": "TextChanged",
      "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": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "clearDNSZone",
      "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": "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": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "a",
          "type": "bytes"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "a",
          "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": "pure",
      "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": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6129828061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063715018a6116100ee578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610403578063e59d895d14610416578063f1cb7e0614610429578063f2fde38b1461043c57600080fd5b8063bc1c58d1146103a0578063c8690233146103b3578063ce3decdc146103f057600080fd5b80638da5cb5b116100c85780638da5cb5b1461035c578063a8fa56821461037a578063ad5780af1461038d57600080fd5b8063715018a61461032e57806377372213146103365780638b95dd711461034957600080fd5b8063304e6ade1161015b57806359d1d43c1161013557806359d1d43c146102d55780635c98042b146102f5578063623195b014610308578063691f34311461031b57600080fd5b8063304e6ade1461026f5780633b3b57de146102825780634cbf6ba41461029557600080fd5b8063124a319c1161018c578063124a319c146102035780632203ab561461023b57806329cd62ea1461025c57600080fd5b806301ffc9a7146101b35780630af179d7146101db57806310f13a8c146101f0575b600080fd5b6101c66101c1366004612607565b61044f565b60405190151581526020015b60405180910390f35b6101ee6101e9366004612418565b610460565b005b6101ee6101fe366004612462565b61065e565b6102166102113660046123bb565b61071e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61024e610249366004612331565b610ae9565b6040516101d292919061278b565b6101ee61026a366004612352565b610c04565b6101ee61027d366004612418565b610c97565b6102166102903660046122ee565b610d09565b6101c66102a3366004612331565b600091825260076020908152604080842060058352818520548552825280842092845291905290205461ffff16151590565b6102e86102e3366004612418565b610d3c565b6040516101d291906126f3565b6102e86103033660046122ee565b610e01565b6101ee6103163660046124d9565b610ea3565b6102e86103293660046122ee565b610f39565b6101ee610f56565b6101ee610344366004612418565b610fe8565b6101ee61035736600461252a565b61105a565b60005473ffffffffffffffffffffffffffffffffffffffff16610216565b6102e861038836600461237d565b611145565b6101ee61039b3660046122ee565b611188565b6102e86103ae3660046122ee565b6111fc565b6103db6103c13660046122ee565b6000908152600a6020526040902080546001909101549091565b604080519283526020830191909152016101d2565b6101ee6103fe366004612418565b611219565b6101ee610411366004612306565b611338565b6101ee6104243660046123dd565b611372565b6102e8610437366004612331565b61144f565b6101ee61044a3660046122d4565b6114fd565b600061045a8261162d565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461048657600080fd5b6000806060806000806104d360008a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116839050565b90505b805151602082015110156105f95761ffff861661053857806040015195506104fd816116e4565b93508360405160200161051091906126b3565b60405160208183030381529060405280519060200120915061053181611705565b92506105eb565b6000610543826116e4565b9050816040015161ffff168761ffff1614158061056757506105658582611721565b155b156105e9576105c28b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518c91506105ba9082906127bc565b8a511561173f565b8160400151965081602001519550809450848051906020012092506105e682611705565b93505b505b6105f481611981565b6104d6565b50825115610653576106538984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925061064b91508290508e6127bc565b88511561173f565b505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461068457600080fd5b8282600b600089815260200190815260200160002087876040516106a99291906126cf565b9081526040519081900360200190206106c39290916120da565b5084846040516106d49291906126cf565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550878760405161070e9291906126df565b60405180910390a3505050505050565b60008281526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff16801561077d57905061045a565b600061078885610d09565b905073ffffffffffffffffffffffffffffffffffffffff81166107b05760009250505061045a565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161087a91906126b3565b600060405180830381855afa9150503d80600081146108b5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ba565b606091505b50915091508115806108cd575060208151105b80610936575080601f8151811061090d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b1561094857600094505050505061045a565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610a0f91906126b3565b600060405180830381855afa9150503d8060008114610a4a576040519150601f19603f3d011682016040523d82523d6000602084013e610a4f565b606091505b509092509050811580610a63575060208151105b80610acc575080601f81518110610aa3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610ade57600094505050505061045a565b509095945050505050565b600082815260016020819052604082206060915b848111610be45780851615801590610b2d575060008181526020839052604081208054610b299061283f565b9050115b15610bdc5780826000838152602001908152602001600020808054610b519061283f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7d9061283f565b8015610bca5780601f10610b9f57610100808354040283529160200191610bca565b820191906000526020600020905b815481529060010190602001808311610bad57829003601f168201915b50505050509050935093505050610bfd565b60011b610afd565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610c2a57600080fd5b60408051808201825284815260208082018581526000888152600a83528490209251835551600190920191909155815185815290810184905285917f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4691015b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610cbd57600080fd5b6000848152600360205260409020610cd69084846120da565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610c899291906126df565b600080610d1783603c61144f565b9050805160001415610d2c5750600092915050565b610d3581611a69565b9392505050565b6060600b60008581526020019081526020016000208383604051610d619291906126cf565b90815260200160405180910390208054610d7a9061283f565b80601f0160208091040260200160405190810160405280929190818152602001828054610da69061283f565b8015610df35780601f10610dc857610100808354040283529160200191610df3565b820191906000526020600020905b815481529060010190602001808311610dd657829003601f168201915b505050505090509392505050565b6000818152600460205260409020805460609190610e1e9061283f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4a9061283f565b8015610e975780601f10610e6c57610100808354040283529160200191610e97565b820191906000526020600020905b815481529060010190602001808311610e7a57829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff163314610ec957600080fd5b83610ed56001826127bc565b1615610ee057600080fd5b60008581526001602090815260408083208784529091529020610f049084846120da565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b6000818152600960205260409020805460609190610e1e9061283f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610fe66000611a91565b565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461100e57600080fd5b60008481526009602052604090206110279084846120da565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610c899291906126df565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461108057600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516110b292919061278b565b60405180910390a2603c83141561111757837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26110ee84611a69565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b60008481526002602090815260408083208684528252909120835161113e9285019061217c565b5050505050565b6000838152600660209081526040808320600583528184205484528252808320858452825280832061ffff851684529091529020805460609190610d7a9061283f565b600054819073ffffffffffffffffffffffffffffffffffffffff1633146111ae57600080fd5b60008281526005602052604081208054916111c8836128b5565b909155505060405182907fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198390600090a25050565b6000818152600360205260409020805460609190610e1e9061283f565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461123f57600080fd5b600084815260046020526040812080546112589061283f565b80601f01602080910402602001604051908101604052809291908181526020018280546112849061283f565b80156112d15780601f106112a6576101008083540402835291602001916112d1565b820191906000526020600020905b8154815290600101906020018083116112b457829003601f168201915b50505060008881526004602052604090209293506112f4929150869050856120da565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582868660405161132993929190612706565b60405180910390a25050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461135e57600080fd5b61136d83603c61035785611b06565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461139857600080fd5b60008481526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b600082815260026020908152604080832084845290915290208054606091906114779061283f565b80601f01602080910402602001604051908101604052809291908181526020018280546114a39061283f565b80156114f05780601f106114c5576101008083540402835291602001916114f0565b820191906000526020600020905b8154815290600101906020018083116114d357829003601f168201915b5050505050905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fd3565b73ffffffffffffffffffffffffffffffffffffffff8116611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610fd3565b61162a81611a91565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000148061045a575061045a82611b3f565b6116d16040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261045a81611981565b6020810151815160609161045a916116fc9082611b95565b84519190611c1b565b60a081015160c082015160609161045a916116fc9082906127bc565b600081518351148015610d355750610d358360008460008751611cb9565b60008781526005602090815260408220548851918901919091209091611766878787611c1b565b9050831561186f5760008a81526006602090815260408083208684528252808320858452825280832061ffff8c168452909152902080546117a69061283f565b1590506117fa5760008a815260076020908152604080832086845282528083208584529091528120805461ffff16916117de83612803565b91906101000a81548161ffff021916908361ffff160217905550505b60008a81526006602090815260408083208684528252808320858452825280832061ffff8c1684529091528120611830916121f0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611862929190612736565b60405180910390a2611975565b60008a81526006602090815260408083208684528252808320858452825280832061ffff8c168452909152902080546118a79061283f565b151590506118fc5760008a815260076020908152604080832086845282528083208584529091528120805461ffff16916118e083612893565b91906101000a81548161ffff021916908361ffff160217905550505b60008a81526006602090815260408083208684528252808320858452825280832061ffff8c168452825290912082516119379284019061217c565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a8460405161196c9392919061275c565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116119985750565b60006119ac82600001518360200151611b95565b82602001516119bb91906127a4565b82519091506119ca9082611cdc565b61ffff1660408301526119de6002826127a4565b82519091506119ed9082611cdc565b61ffff166060830152611a016002826127a4565b8251909150611a109082611d04565b63ffffffff166080830152611a266004826127a4565b8251909150600090611a389083611cdc565b61ffff169050611a496002836127a4565b60a084018190529150611a5c81836127a4565b60c0909301929092525050565b60008151601414611a7957600080fd5b50602001516c01000000000000000000000000900490565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000148061045a575061045a82611d2e565b6000815b83518110611bd0577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000611bdc8583611d84565b60ff169050611bec8160016127a4565b611bf690836127a4565b915080611c035750611c09565b50611b99565b611c1383826127bc565b949350505050565b8251606090611c2a83856127a4565b1115611c3557600080fd5b60008267ffffffffffffffff811115611c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ca1576020820181803683370190505b50905060208082019086860101610ade828287611dcf565b6000611cc6848484611e43565b611cd1878785611e43565b149695505050505050565b8151600090611cec8360026127a4565b1115611cf757600080fd5b50016002015161ffff1690565b8151600090611d148360046127a4565b1115611d1f57600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000148061045a575061045a82611e67565b6000828281518110611dbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b016020015160f81c905092915050565b60208110611e075781518352611de66020846127a4565b9250611df36020836127a4565b9150611e006020826127bc565b9050611dcf565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b8251600090611e5283856127a4565b1115611e5d57600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c00000000000000000000000000000000000000000000000000000000148061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa5682000000000000000000000000000000000000000000000000000000001480611f4b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b8061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d100000000000000000000000000000000000000000000000000000000148061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061203957507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b8061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000148061045a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461045a565b8280546120e69061283f565b90600052602060002090601f016020900481019282612108576000855561216c565b82601f1061213f578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082351617855561216c565b8280016001018555821561216c579182015b8281111561216c578235825591602001919060010190612151565b50612178929150612226565b5090565b8280546121889061283f565b90600052602060002090601f0160209004810192826121aa576000855561216c565b82601f106121c357805160ff191683800117855561216c565b8280016001018555821561216c579182015b8281111561216c5782518255916020019190600101906121d5565b5080546121fc9061283f565b6000825580601f1061220c575050565b601f01602090049060005260206000209081019061162a91905b5b808211156121785760008155600101612227565b803573ffffffffffffffffffffffffffffffffffffffff8116811461225f57600080fd5b919050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461225f57600080fd5b60008083601f8401126122a5578182fd5b50813567ffffffffffffffff8111156122bc578182fd5b602083019150836020828501011115610bfd57600080fd5b6000602082840312156122e5578081fd5b610d358261223b565b6000602082840312156122ff578081fd5b5035919050565b60008060408385031215612318578081fd5b823591506123286020840161223b565b90509250929050565b60008060408385031215612343578182fd5b50508035926020909101359150565b600080600060608486031215612366578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215612391578283fd5b8335925060208401359150604084013561ffff811681146123b0578182fd5b809150509250925092565b600080604083850312156123cd578182fd5b8235915061232860208401612264565b6000806000606084860312156123f1578283fd5b8335925061240160208501612264565b915061240f6040850161223b565b90509250925092565b60008060006040848603121561242c578283fd5b83359250602084013567ffffffffffffffff811115612449578283fd5b61245586828701612294565b9497909650939450505050565b600080600080600060608688031215612479578081fd5b85359450602086013567ffffffffffffffff80821115612497578283fd5b6124a389838a01612294565b909650945060408801359150808211156124bb578283fd5b506124c888828901612294565b969995985093965092949392505050565b600080600080606085870312156124ee578182fd5b8435935060208501359250604085013567ffffffffffffffff811115612512578283fd5b61251e87828801612294565b95989497509550505050565b60008060006060848603121561253e578081fd5b8335925060208401359150604084013567ffffffffffffffff80821115612563578283fd5b818601915086601f830112612576578283fd5b8135818111156125885761258861291d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156125ce576125ce61291d565b816040528281528960208487010111156125e6578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060208284031215612618578081fd5b610d3582612264565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526126818160208601602086016127d3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516126c58184602087016127d3565b9190910192915050565b8183823760009101908152919050565b602081526000611c13602083018486612621565b602081526000610d356020830184612669565b6040815260006127196040830186612669565b828103602084015261272c818587612621565b9695505050505050565b6040815260006127496040830185612669565b905061ffff831660208301529392505050565b60608152600061276f6060830186612669565b61ffff85166020840152828103604084015261272c8185612669565b828152604060208201526000611c136040830184612669565b600082198211156127b7576127b76128ee565b500190565b6000828210156127ce576127ce6128ee565b500390565b60005b838110156127ee5781810151838201526020016127d6565b838111156127fd576000848401525b50505050565b600061ffff821680612817576128176128ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600181811c9082168061285357607f821691505b6020821081141561288d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600061ffff808316818114156128ab576128ab6128ee565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128e7576128e76128ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220970a65d1e688aa80c12b597f4d8f744b204ac0e9c852a9c0950a0b72c8771e5464736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063715018a6116100ee578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610403578063e59d895d14610416578063f1cb7e0614610429578063f2fde38b1461043c57600080fd5b8063bc1c58d1146103a0578063c8690233146103b3578063ce3decdc146103f057600080fd5b80638da5cb5b116100c85780638da5cb5b1461035c578063a8fa56821461037a578063ad5780af1461038d57600080fd5b8063715018a61461032e57806377372213146103365780638b95dd711461034957600080fd5b8063304e6ade1161015b57806359d1d43c1161013557806359d1d43c146102d55780635c98042b146102f5578063623195b014610308578063691f34311461031b57600080fd5b8063304e6ade1461026f5780633b3b57de146102825780634cbf6ba41461029557600080fd5b8063124a319c1161018c578063124a319c146102035780632203ab561461023b57806329cd62ea1461025c57600080fd5b806301ffc9a7146101b35780630af179d7146101db57806310f13a8c146101f0575b600080fd5b6101c66101c1366004612607565b61044f565b60405190151581526020015b60405180910390f35b6101ee6101e9366004612418565b610460565b005b6101ee6101fe366004612462565b61065e565b6102166102113660046123bb565b61071e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61024e610249366004612331565b610ae9565b6040516101d292919061278b565b6101ee61026a366004612352565b610c04565b6101ee61027d366004612418565b610c97565b6102166102903660046122ee565b610d09565b6101c66102a3366004612331565b600091825260076020908152604080842060058352818520548552825280842092845291905290205461ffff16151590565b6102e86102e3366004612418565b610d3c565b6040516101d291906126f3565b6102e86103033660046122ee565b610e01565b6101ee6103163660046124d9565b610ea3565b6102e86103293660046122ee565b610f39565b6101ee610f56565b6101ee610344366004612418565b610fe8565b6101ee61035736600461252a565b61105a565b60005473ffffffffffffffffffffffffffffffffffffffff16610216565b6102e861038836600461237d565b611145565b6101ee61039b3660046122ee565b611188565b6102e86103ae3660046122ee565b6111fc565b6103db6103c13660046122ee565b6000908152600a6020526040902080546001909101549091565b604080519283526020830191909152016101d2565b6101ee6103fe366004612418565b611219565b6101ee610411366004612306565b611338565b6101ee6104243660046123dd565b611372565b6102e8610437366004612331565b61144f565b6101ee61044a3660046122d4565b6114fd565b600061045a8261162d565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461048657600080fd5b6000806060806000806104d360008a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116839050565b90505b805151602082015110156105f95761ffff861661053857806040015195506104fd816116e4565b93508360405160200161051091906126b3565b60405160208183030381529060405280519060200120915061053181611705565b92506105eb565b6000610543826116e4565b9050816040015161ffff168761ffff1614158061056757506105658582611721565b155b156105e9576105c28b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518c91506105ba9082906127bc565b8a511561173f565b8160400151965081602001519550809450848051906020012092506105e682611705565b93505b505b6105f481611981565b6104d6565b50825115610653576106538984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925061064b91508290508e6127bc565b88511561173f565b505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461068457600080fd5b8282600b600089815260200190815260200160002087876040516106a99291906126cf565b9081526040519081900360200190206106c39290916120da565b5084846040516106d49291906126cf565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550878760405161070e9291906126df565b60405180910390a3505050505050565b60008281526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff16801561077d57905061045a565b600061078885610d09565b905073ffffffffffffffffffffffffffffffffffffffff81166107b05760009250505061045a565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161087a91906126b3565b600060405180830381855afa9150503d80600081146108b5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ba565b606091505b50915091508115806108cd575060208151105b80610936575080601f8151811061090d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b1561094857600094505050505061045a565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff841690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610a0f91906126b3565b600060405180830381855afa9150503d8060008114610a4a576040519150601f19603f3d011682016040523d82523d6000602084013e610a4f565b606091505b509092509050811580610a63575060208151105b80610acc575080601f81518110610aa3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610ade57600094505050505061045a565b509095945050505050565b600082815260016020819052604082206060915b848111610be45780851615801590610b2d575060008181526020839052604081208054610b299061283f565b9050115b15610bdc5780826000838152602001908152602001600020808054610b519061283f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7d9061283f565b8015610bca5780601f10610b9f57610100808354040283529160200191610bca565b820191906000526020600020905b815481529060010190602001808311610bad57829003601f168201915b50505050509050935093505050610bfd565b60011b610afd565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610c2a57600080fd5b60408051808201825284815260208082018581526000888152600a83528490209251835551600190920191909155815185815290810184905285917f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4691015b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610cbd57600080fd5b6000848152600360205260409020610cd69084846120da565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610c899291906126df565b600080610d1783603c61144f565b9050805160001415610d2c5750600092915050565b610d3581611a69565b9392505050565b6060600b60008581526020019081526020016000208383604051610d619291906126cf565b90815260200160405180910390208054610d7a9061283f565b80601f0160208091040260200160405190810160405280929190818152602001828054610da69061283f565b8015610df35780601f10610dc857610100808354040283529160200191610df3565b820191906000526020600020905b815481529060010190602001808311610dd657829003601f168201915b505050505090509392505050565b6000818152600460205260409020805460609190610e1e9061283f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4a9061283f565b8015610e975780601f10610e6c57610100808354040283529160200191610e97565b820191906000526020600020905b815481529060010190602001808311610e7a57829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff163314610ec957600080fd5b83610ed56001826127bc565b1615610ee057600080fd5b60008581526001602090815260408083208784529091529020610f049084846120da565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b6000818152600960205260409020805460609190610e1e9061283f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610fe66000611a91565b565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461100e57600080fd5b60008481526009602052604090206110279084846120da565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610c899291906126df565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461108057600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516110b292919061278b565b60405180910390a2603c83141561111757837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26110ee84611a69565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b60008481526002602090815260408083208684528252909120835161113e9285019061217c565b5050505050565b6000838152600660209081526040808320600583528184205484528252808320858452825280832061ffff851684529091529020805460609190610d7a9061283f565b600054819073ffffffffffffffffffffffffffffffffffffffff1633146111ae57600080fd5b60008281526005602052604081208054916111c8836128b5565b909155505060405182907fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198390600090a25050565b6000818152600360205260409020805460609190610e1e9061283f565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461123f57600080fd5b600084815260046020526040812080546112589061283f565b80601f01602080910402602001604051908101604052809291908181526020018280546112849061283f565b80156112d15780601f106112a6576101008083540402835291602001916112d1565b820191906000526020600020905b8154815290600101906020018083116112b457829003601f168201915b50505060008881526004602052604090209293506112f4929150869050856120da565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582868660405161132993929190612706565b60405180910390a25050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461135e57600080fd5b61136d83603c61035785611b06565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461139857600080fd5b60008481526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b600082815260026020908152604080832084845290915290208054606091906114779061283f565b80601f01602080910402602001604051908101604052809291908181526020018280546114a39061283f565b80156114f05780601f106114c5576101008083540402835291602001916114f0565b820191906000526020600020905b8154815290600101906020018083116114d357829003601f168201915b5050505050905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fd3565b73ffffffffffffffffffffffffffffffffffffffff8116611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610fd3565b61162a81611a91565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000148061045a575061045a82611b3f565b6116d16040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c0810182905261045a81611981565b6020810151815160609161045a916116fc9082611b95565b84519190611c1b565b60a081015160c082015160609161045a916116fc9082906127bc565b600081518351148015610d355750610d358360008460008751611cb9565b60008781526005602090815260408220548851918901919091209091611766878787611c1b565b9050831561186f5760008a81526006602090815260408083208684528252808320858452825280832061ffff8c168452909152902080546117a69061283f565b1590506117fa5760008a815260076020908152604080832086845282528083208584529091528120805461ffff16916117de83612803565b91906101000a81548161ffff021916908361ffff160217905550505b60008a81526006602090815260408083208684528252808320858452825280832061ffff8c1684529091528120611830916121f0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611862929190612736565b60405180910390a2611975565b60008a81526006602090815260408083208684528252808320858452825280832061ffff8c168452909152902080546118a79061283f565b151590506118fc5760008a815260076020908152604080832086845282528083208584529091528120805461ffff16916118e083612893565b91906101000a81548161ffff021916908361ffff160217905550505b60008a81526006602090815260408083208684528252808320858452825280832061ffff8c168452825290912082516119379284019061217c565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a8460405161196c9392919061275c565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116119985750565b60006119ac82600001518360200151611b95565b82602001516119bb91906127a4565b82519091506119ca9082611cdc565b61ffff1660408301526119de6002826127a4565b82519091506119ed9082611cdc565b61ffff166060830152611a016002826127a4565b8251909150611a109082611d04565b63ffffffff166080830152611a266004826127a4565b8251909150600090611a389083611cdc565b61ffff169050611a496002836127a4565b60a084018190529150611a5c81836127a4565b60c0909301929092525050565b60008151601414611a7957600080fd5b50602001516c01000000000000000000000000900490565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000148061045a575061045a82611d2e565b6000815b83518110611bd0577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000611bdc8583611d84565b60ff169050611bec8160016127a4565b611bf690836127a4565b915080611c035750611c09565b50611b99565b611c1383826127bc565b949350505050565b8251606090611c2a83856127a4565b1115611c3557600080fd5b60008267ffffffffffffffff811115611c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ca1576020820181803683370190505b50905060208082019086860101610ade828287611dcf565b6000611cc6848484611e43565b611cd1878785611e43565b149695505050505050565b8151600090611cec8360026127a4565b1115611cf757600080fd5b50016002015161ffff1690565b8151600090611d148360046127a4565b1115611d1f57600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000148061045a575061045a82611e67565b6000828281518110611dbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b016020015160f81c905092915050565b60208110611e075781518352611de66020846127a4565b9250611df36020836127a4565b9150611e006020826127bc565b9050611dcf565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b8251600090611e5283856127a4565b1115611e5d57600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c00000000000000000000000000000000000000000000000000000000148061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa5682000000000000000000000000000000000000000000000000000000001480611f4b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b8061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d100000000000000000000000000000000000000000000000000000000148061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061203957507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b8061045a575061045a8260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000148061045a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461045a565b8280546120e69061283f565b90600052602060002090601f016020900481019282612108576000855561216c565b82601f1061213f578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082351617855561216c565b8280016001018555821561216c579182015b8281111561216c578235825591602001919060010190612151565b50612178929150612226565b5090565b8280546121889061283f565b90600052602060002090601f0160209004810192826121aa576000855561216c565b82601f106121c357805160ff191683800117855561216c565b8280016001018555821561216c579182015b8281111561216c5782518255916020019190600101906121d5565b5080546121fc9061283f565b6000825580601f1061220c575050565b601f01602090049060005260206000209081019061162a91905b5b808211156121785760008155600101612227565b803573ffffffffffffffffffffffffffffffffffffffff8116811461225f57600080fd5b919050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461225f57600080fd5b60008083601f8401126122a5578182fd5b50813567ffffffffffffffff8111156122bc578182fd5b602083019150836020828501011115610bfd57600080fd5b6000602082840312156122e5578081fd5b610d358261223b565b6000602082840312156122ff578081fd5b5035919050565b60008060408385031215612318578081fd5b823591506123286020840161223b565b90509250929050565b60008060408385031215612343578182fd5b50508035926020909101359150565b600080600060608486031215612366578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215612391578283fd5b8335925060208401359150604084013561ffff811681146123b0578182fd5b809150509250925092565b600080604083850312156123cd578182fd5b8235915061232860208401612264565b6000806000606084860312156123f1578283fd5b8335925061240160208501612264565b915061240f6040850161223b565b90509250925092565b60008060006040848603121561242c578283fd5b83359250602084013567ffffffffffffffff811115612449578283fd5b61245586828701612294565b9497909650939450505050565b600080600080600060608688031215612479578081fd5b85359450602086013567ffffffffffffffff80821115612497578283fd5b6124a389838a01612294565b909650945060408801359150808211156124bb578283fd5b506124c888828901612294565b969995985093965092949392505050565b600080600080606085870312156124ee578182fd5b8435935060208501359250604085013567ffffffffffffffff811115612512578283fd5b61251e87828801612294565b95989497509550505050565b60008060006060848603121561253e578081fd5b8335925060208401359150604084013567ffffffffffffffff80821115612563578283fd5b818601915086601f830112612576578283fd5b8135818111156125885761258861291d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156125ce576125ce61291d565b816040528281528960208487010111156125e6578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060208284031215612618578081fd5b610d3582612264565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526126818160208601602086016127d3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516126c58184602087016127d3565b9190910192915050565b8183823760009101908152919050565b602081526000611c13602083018486612621565b602081526000610d356020830184612669565b6040815260006127196040830186612669565b828103602084015261272c818587612621565b9695505050505050565b6040815260006127496040830185612669565b905061ffff831660208301529392505050565b60608152600061276f6060830186612669565b61ffff85166020840152828103604084015261272c8185612669565b828152604060208201526000611c136040830184612669565b600082198211156127b7576127b76128ee565b500190565b6000828210156127ce576127ce6128ee565b500390565b60005b838110156127ee5781810151838201526020016127d6565b838111156127fd576000848401525b50505050565b600061ffff821680612817576128176128ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600181811c9082168061285357607f821691505b6020821081141561288d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600061ffff808316818114156128ab576128ab6128ee565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128e7576128e76128ee565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220970a65d1e688aa80c12b597f4d8f744b204ac0e9c852a9c0950a0b72c8771e5464736f6c63430008040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
