{
  "_format": "hh-sol-artifact-1",
  "contractName": "DNSRegistrar",
  "sourceName": "contracts/dnsregistrar/DNSRegistrar.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract DNSSEC",
          "name": "_dnssec",
          "type": "address"
        },
        {
          "internalType": "contract PublicSuffixList",
          "name": "_suffixes",
          "type": "address"
        },
        {
          "internalType": "contract ENS",
          "name": "_ens",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "NoOwnerRecordFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StaleProof",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "dnsname",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "inception",
          "type": "uint32"
        }
      ],
      "name": "Claim",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oracle",
          "type": "address"
        }
      ],
      "name": "NewOracle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "suffixes",
          "type": "address"
        }
      ],
      "name": "NewPublicSuffixList",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "internalType": "contract ENS",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "inceptions",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "contract DNSSEC",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature[]",
          "name": "input",
          "type": "tuple[]"
        }
      ],
      "name": "proveAndClaim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature[]",
          "name": "input",
          "type": "tuple[]"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "proveAndClaimWithResolver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract PublicSuffixList",
          "name": "_suffixes",
          "type": "address"
        }
      ],
      "name": "setPublicSuffixList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "suffixes",
      "outputs": [
        {
          "internalType": "contract PublicSuffixList",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b50604051620021d2380380620021d28339810160408190526200003491620000f5565b6001600160a01b03831660a08190526040519081527fb3eacd0e351fafdfefdec84e1cd19679b38dbcd63ea7c2c24da17fd2bc3b3c0e9060200160405180910390a1600080546001600160a01b0319166001600160a01b0384169081179091556040519081527f9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba89060200160405180910390a16001600160a01b031660805250620001499050565b6001600160a01b0381168114620000f257600080fd5b50565b6000806000606084860312156200010b57600080fd5b83516200011881620000dc565b60208501519093506200012b81620000dc565b60408501519092506200013e81620000dc565b809150509250925092565b60805160a051612024620001ae6000396000818161019c0152610976015260008181610175015281816104360152818161059b01528181610661015281816106f9015281816108f501528181610e6b01528181610ff0015261113b01526120246000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806329d566301161005b57806329d566301461011857806330349ebe1461012b5780633f15457f146101705780637dc0d1d01461019757600080fd5b806301ffc9a71461008d57806306963218146100b55780631ecfc411146100ca57806325916d41146100dd575b600080fd5b6100a061009b3660046118c7565b6101be565b60405190151581526020015b60405180910390f35b6100c86100c3366004611b2f565b610257565b005b6100c86100d8366004611bb8565b6106c7565b6101036100eb366004611bd5565b60016020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016100ac565b6100c8610126366004611bee565b61088b565b60005461014b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061025157507fffffffff0000000000000000000000000000000000000000000000000000000082167f2f43542800000000000000000000000000000000000000000000000000000000145b92915050565b6000806000610266878761096c565b919450925090503373ffffffffffffffffffffffffffffffffffffffff821614610317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f6e6c79206f776e65722063616e2063616c6c2070726f7665416e64436c616960448201527f6d576974685265736f6c7665720000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416156105ff5773ffffffffffffffffffffffffffffffffffffffff85166103d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f43616e6e6f74207365742061646472206966207265736f6c766572206973206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840161030e565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905230604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b50505050600083836040516020016104b0929190918252602082015260400190565b60408051808303601f190181529082905280516020909101207fd5fa2b000000000000000000000000000000000000000000000000000000000082526004820181905273ffffffffffffffffffffffffffffffffffffffff878116602484015290925087169063d5fa2b0090604401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b50506040517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff85811660248301527f0000000000000000000000000000000000000000000000000000000000000000169250635b0fc9c39150604401600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b50505050506106be565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff82811660448301528681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156106a557600080fd5b505af11580156106b9573d6000803e3d6000fd5b505050505b50505050505050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190611c52565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190611c52565b90503373ffffffffffffffffffffffffffffffffffffffff82161461081057600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040519081527f9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba89060200160405180910390a1505050565b600080600061089a858561096c565b6040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff828116604483015293965091945092507f0000000000000000000000000000000000000000000000000000000000000000909116906306ab5923906064016020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190611c6f565b505050505050565b60008060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bdf95fef876040518263ffffffff1660e01b81526004016109cd9190611cd8565b600060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a129190810190611d7b565b90925090506000610a238882610ccd565b60ff169050610a3488600183610cf1565b94506000610a67610a46836001611e41565b6001848c51610a559190611e54565b610a5f9190611e54565b8b9190610d15565b6000546040517f4f89059e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f89059e90610abe908490600401611e67565b602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190611e7a565b610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f506172656e74206e616d65206d7573742062652061207075626c69632073756660448201527f6669780000000000000000000000000000000000000000000000000000000000606482015260840161030e565b610b96816000610d97565b965060008787604051602001610bb6929190918252602082015260400190565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150610bef90859063ffffffff166111c9565b610c25576040517f2dd6a7af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8616179055610c6b8a866111e2565b50809650508573ffffffffffffffffffffffffffffffffffffffff16817f87db02a0e483e2818060eddcbb3488ce44e35aff49a70d92c2aa6c8046cf01e28c87604051610cb9929190611e9c565b60405180910390a350505050509250925092565b6000828281518110610ce157610ce1611ec4565b016020015160f81c905092915050565b8251600090610d008385611e41565b1115610d0b57600080fd5b5091016020012090565b8251606090610d248385611e41565b1115610d2f57600080fd5b60008267ffffffffffffffff811115610d4a57610d4a611909565b6040519080825280601f01601f191660200182016040528015610d74576020820181803683370190505b50905060208082019086860101610d8c8282876112ce565b509095945050505050565b600080610da48484610ccd565b60ff16905080600003610dbb575060009050610251565b6000610ddb85610dcb8487611e41565b610dd6906001611e41565b610d97565b90506000610df5610ded866001611e41565b879085610cf1565b604080516020810185905290810182905290915060600160408051601f198184030181529082905280516020909101207f02571be300000000000000000000000000000000000000000000000000000000825260048201819052945060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190611c52565b905073ffffffffffffffffffffffffffffffffffffffff81161580610f10575073ffffffffffffffffffffffffffffffffffffffff811630145b610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f43616e6e6f7420656e61626c652061206e616d65206f776e656420627920736f60448201527f6d656f6e6520656c736500000000000000000000000000000000000000000000606482015260840161030e565b73ffffffffffffffffffffffffffffffffffffffff811630146111bf57826110ff576040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c52565b6040517f8cb8ecec0000000000000000000000000000000000000000000000000000000081526004810185905230602482015290915073ffffffffffffffffffffffffffffffffffffffff821690638cb8ecec90604401600060405180830381600087803b1580156110e157600080fd5b505af11580156110f5573d6000803e3d6000fd5b50505050506111bf565b6040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101849052602481018390523060448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906306ab5923906064016020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190611c6f565b505b5050505092915050565b6000806111d68385611ef3565b60030b12159392505050565b600080611202604051806040016040528060608152602001600081525090565b61121a855160056112139190611e41565b8290611342565b5060408051808201909152600581527f045f656e73000000000000000000000000000000000000000000000000000000602082015261125a9082906113a7565b5061126581866113a7565b50600061127285826113d5565b90505b805151602082015110156112bd57600080611294878460a00151611436565b9250905081156112ad579450600193506112c792505050565b50506112b8816114a7565b611275565b5060008092509250505b9250929050565b6020811061130657815183526112e5602084611e41565b92506112f2602083611e41565b91506112ff602082611e54565b90506112ce565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b604080518082019091526060815260006020820152611362602083611f35565b1561138a57611372602083611f35565b61137d906020611e54565b6113879083611e41565b91505b506020828101829052604080518085526000815290920101905290565b6040805180820190915260608152600060208201526113ce8384600001515184855161158f565b9392505050565b6114236040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c08101829052610251816114a7565b6000805b835183101561149b57600061144f8585610ccd565b60ff16905061145f600185611e41565b935060008061146f878785611697565b925090508115611487579350600192506112c7915050565b6114918387611e41565b955050505061143a565b50600093849350915050565b60c081015160208201819052815151116114be5750565b60006114d2826000015183602001516116f4565b82602001516114e19190611e41565b82519091506114f09082611756565b61ffff166040830152611504600282611e41565b82519091506115139082611756565b61ffff166060830152611527600282611e41565b8251909150611536908261177e565b63ffffffff16608083015261154c600482611e41565b825190915060009061155e9083611756565b61ffff16905061156f600283611e41565b60a0840181905291506115828183611e41565b60c0909301929092525050565b60408051808201909152606081526000602082015282518211156115b257600080fd5b60208501516115c18386611e41565b11156115f4576115f4856115e4876020015187866115df9190611e41565b6117a8565b6115ef906002611f70565b6117bf565b6000808651805187602083010193508088870111156116135787860182525b505050602084015b602084106116535780518252611632602083611e41565b915061163f602082611e41565b905061164c602085611e54565b935061161b565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6000806116a4858561177e565b63ffffffff1663613d3078146116bf575060009050806116ec565b602c8310156116d3575060009050806116ec565b6116e7856116e2866004611e41565b6117dc565b915091505b935093915050565b6000815b8351811061170857611708611f87565b60006117148583610ccd565b60ff169050611724816001611e41565b61172e9083611e41565b91508060000361173e5750611744565b506116f8565b61174e8382611e54565b949350505050565b8151600090611766836002611e41565b111561177157600080fd5b50016002015161ffff1690565b815160009061178e836004611e41565b111561179957600080fd5b50016004015163ffffffff1690565b6000818311156117b9575081610251565b50919050565b81516117cb8383611342565b506117d683826113a7565b50505050565b60008060288385516117ee9190611e54565b10156117ff575060009050806112c7565b6000835b61180e856028611e41565b8110156118bb5760049190911b9060006118288783610ccd565b60ff1690506030811015801561183e5750603a81105b156118575761184e603082611e54565b831792506118a8565b604181101580156118685750604781105b156118785761184e603782611e54565b606181101580156118895750606781105b156118995761184e605782611e54565b600080945094505050506112c7565b50806118b381611fb6565b915050611803565b50946001945092505050565b6000602082840312156118d957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113ce57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561195b5761195b611909565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561198a5761198a611909565b604052919050565b600067ffffffffffffffff8211156119ac576119ac611909565b50601f01601f191660200190565b600082601f8301126119cb57600080fd5b81356119de6119d982611992565b611961565b8181528460208386010111156119f357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611a2157600080fd5b8135602067ffffffffffffffff80831115611a3e57611a3e611909565b8260051b611a4d838201611961565b9384528581018301938381019088861115611a6757600080fd5b84880192505b85831015611afe57823584811115611a855760008081fd5b88016040818b03601f1901811315611a9d5760008081fd5b611aa5611938565b8783013587811115611ab75760008081fd5b611ac58d8a838701016119ba565b825250908201359086821115611adb5760008081fd5b611ae98c89848601016119ba565b81890152845250509184019190840190611a6d565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b2c57600080fd5b50565b60008060008060808587031215611b4557600080fd5b843567ffffffffffffffff80821115611b5d57600080fd5b611b69888389016119ba565b95506020870135915080821115611b7f57600080fd5b50611b8c87828801611a10565b9350506040850135611b9d81611b0a565b91506060850135611bad81611b0a565b939692955090935050565b600060208284031215611bca57600080fd5b81356113ce81611b0a565b600060208284031215611be757600080fd5b5035919050565b60008060408385031215611c0157600080fd5b823567ffffffffffffffff80821115611c1957600080fd5b611c25868387016119ba565b93506020850135915080821115611c3b57600080fd5b50611c4885828601611a10565b9150509250929050565b600060208284031215611c6457600080fd5b81516113ce81611b0a565b600060208284031215611c8157600080fd5b5051919050565b60005b83811015611ca3578181015183820152602001611c8b565b50506000910152565b60008151808452611cc4816020860160208601611c88565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611d6d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552611d4188860182611cac565b91890151858303868b0152919050611d598183611cac565b968901969450505090860190600101611cff565b509098975050505050505050565b60008060408385031215611d8e57600080fd5b825167ffffffffffffffff811115611da557600080fd5b8301601f81018513611db657600080fd5b8051611dc46119d982611992565b818152866020838501011115611dd957600080fd5b611dea826020830160208601611c88565b809450505050602083015163ffffffff81168114611e0757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561025157610251611e12565b8181038181111561025157610251611e12565b6020815260006113ce6020830184611cac565b600060208284031215611e8c57600080fd5b815180151581146113ce57600080fd5b604081526000611eaf6040830185611cac565b905063ffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff8213171561025157610251611e12565b600082611f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b808202811582820484141761025157610251611e12565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fe757611fe7611e12565b506001019056fea2646970667358221220ae3fe39ac561c76c0c508db809a0dfc192b44130fab21e3f254d175f52f62a1164736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806329d566301161005b57806329d566301461011857806330349ebe1461012b5780633f15457f146101705780637dc0d1d01461019757600080fd5b806301ffc9a71461008d57806306963218146100b55780631ecfc411146100ca57806325916d41146100dd575b600080fd5b6100a061009b3660046118c7565b6101be565b60405190151581526020015b60405180910390f35b6100c86100c3366004611b2f565b610257565b005b6100c86100d8366004611bb8565b6106c7565b6101036100eb366004611bd5565b60016020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016100ac565b6100c8610126366004611bee565b61088b565b60005461014b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061025157507fffffffff0000000000000000000000000000000000000000000000000000000082167f2f43542800000000000000000000000000000000000000000000000000000000145b92915050565b6000806000610266878761096c565b919450925090503373ffffffffffffffffffffffffffffffffffffffff821614610317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f6e6c79206f776e65722063616e2063616c6c2070726f7665416e64436c616960448201527f6d576974685265736f6c7665720000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416156105ff5773ffffffffffffffffffffffffffffffffffffffff85166103d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f43616e6e6f74207365742061646472206966207265736f6c766572206973206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840161030e565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905230604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b50505050600083836040516020016104b0929190918252602082015260400190565b60408051808303601f190181529082905280516020909101207fd5fa2b000000000000000000000000000000000000000000000000000000000082526004820181905273ffffffffffffffffffffffffffffffffffffffff878116602484015290925087169063d5fa2b0090604401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b50506040517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff85811660248301527f0000000000000000000000000000000000000000000000000000000000000000169250635b0fc9c39150604401600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b50505050506106be565b6040517f5ef2c7f0000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff82811660448301528681166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156106a557600080fd5b505af11580156106b9573d6000803e3d6000fd5b505050505b50505050505050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190611c52565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190611c52565b90503373ffffffffffffffffffffffffffffffffffffffff82161461081057600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040519081527f9176b7f47e4504df5e5516c99d90d82ac7cbd49cc77e7f22ba2ac2f2e3a3eba89060200160405180910390a1505050565b600080600061089a858561096c565b6040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff828116604483015293965091945092507f0000000000000000000000000000000000000000000000000000000000000000909116906306ab5923906064016020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190611c6f565b505050505050565b60008060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bdf95fef876040518263ffffffff1660e01b81526004016109cd9190611cd8565b600060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a129190810190611d7b565b90925090506000610a238882610ccd565b60ff169050610a3488600183610cf1565b94506000610a67610a46836001611e41565b6001848c51610a559190611e54565b610a5f9190611e54565b8b9190610d15565b6000546040517f4f89059e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690634f89059e90610abe908490600401611e67565b602060405180830381865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190611e7a565b610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f506172656e74206e616d65206d7573742062652061207075626c69632073756660448201527f6669780000000000000000000000000000000000000000000000000000000000606482015260840161030e565b610b96816000610d97565b965060008787604051602001610bb6929190918252602082015260400190565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150610bef90859063ffffffff166111c9565b610c25576040517f2dd6a7af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8616179055610c6b8a866111e2565b50809650508573ffffffffffffffffffffffffffffffffffffffff16817f87db02a0e483e2818060eddcbb3488ce44e35aff49a70d92c2aa6c8046cf01e28c87604051610cb9929190611e9c565b60405180910390a350505050509250925092565b6000828281518110610ce157610ce1611ec4565b016020015160f81c905092915050565b8251600090610d008385611e41565b1115610d0b57600080fd5b5091016020012090565b8251606090610d248385611e41565b1115610d2f57600080fd5b60008267ffffffffffffffff811115610d4a57610d4a611909565b6040519080825280601f01601f191660200182016040528015610d74576020820181803683370190505b50905060208082019086860101610d8c8282876112ce565b509095945050505050565b600080610da48484610ccd565b60ff16905080600003610dbb575060009050610251565b6000610ddb85610dcb8487611e41565b610dd6906001611e41565b610d97565b90506000610df5610ded866001611e41565b879085610cf1565b604080516020810185905290810182905290915060600160408051601f198184030181529082905280516020909101207f02571be300000000000000000000000000000000000000000000000000000000825260048201819052945060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190611c52565b905073ffffffffffffffffffffffffffffffffffffffff81161580610f10575073ffffffffffffffffffffffffffffffffffffffff811630145b610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f43616e6e6f7420656e61626c652061206e616d65206f776e656420627920736f60448201527f6d656f6e6520656c736500000000000000000000000000000000000000000000606482015260840161030e565b73ffffffffffffffffffffffffffffffffffffffff811630146111bf57826110ff576040517f02571be3000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302571be390602401602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c52565b6040517f8cb8ecec0000000000000000000000000000000000000000000000000000000081526004810185905230602482015290915073ffffffffffffffffffffffffffffffffffffffff821690638cb8ecec90604401600060405180830381600087803b1580156110e157600080fd5b505af11580156110f5573d6000803e3d6000fd5b50505050506111bf565b6040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101849052602481018390523060448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906306ab5923906064016020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190611c6f565b505b5050505092915050565b6000806111d68385611ef3565b60030b12159392505050565b600080611202604051806040016040528060608152602001600081525090565b61121a855160056112139190611e41565b8290611342565b5060408051808201909152600581527f045f656e73000000000000000000000000000000000000000000000000000000602082015261125a9082906113a7565b5061126581866113a7565b50600061127285826113d5565b90505b805151602082015110156112bd57600080611294878460a00151611436565b9250905081156112ad579450600193506112c792505050565b50506112b8816114a7565b611275565b5060008092509250505b9250929050565b6020811061130657815183526112e5602084611e41565b92506112f2602083611e41565b91506112ff602082611e54565b90506112ce565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b604080518082019091526060815260006020820152611362602083611f35565b1561138a57611372602083611f35565b61137d906020611e54565b6113879083611e41565b91505b506020828101829052604080518085526000815290920101905290565b6040805180820190915260608152600060208201526113ce8384600001515184855161158f565b9392505050565b6114236040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c08101829052610251816114a7565b6000805b835183101561149b57600061144f8585610ccd565b60ff16905061145f600185611e41565b935060008061146f878785611697565b925090508115611487579350600192506112c7915050565b6114918387611e41565b955050505061143a565b50600093849350915050565b60c081015160208201819052815151116114be5750565b60006114d2826000015183602001516116f4565b82602001516114e19190611e41565b82519091506114f09082611756565b61ffff166040830152611504600282611e41565b82519091506115139082611756565b61ffff166060830152611527600282611e41565b8251909150611536908261177e565b63ffffffff16608083015261154c600482611e41565b825190915060009061155e9083611756565b61ffff16905061156f600283611e41565b60a0840181905291506115828183611e41565b60c0909301929092525050565b60408051808201909152606081526000602082015282518211156115b257600080fd5b60208501516115c18386611e41565b11156115f4576115f4856115e4876020015187866115df9190611e41565b6117a8565b6115ef906002611f70565b6117bf565b6000808651805187602083010193508088870111156116135787860182525b505050602084015b602084106116535780518252611632602083611e41565b915061163f602082611e41565b905061164c602085611e54565b935061161b565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6000806116a4858561177e565b63ffffffff1663613d3078146116bf575060009050806116ec565b602c8310156116d3575060009050806116ec565b6116e7856116e2866004611e41565b6117dc565b915091505b935093915050565b6000815b8351811061170857611708611f87565b60006117148583610ccd565b60ff169050611724816001611e41565b61172e9083611e41565b91508060000361173e5750611744565b506116f8565b61174e8382611e54565b949350505050565b8151600090611766836002611e41565b111561177157600080fd5b50016002015161ffff1690565b815160009061178e836004611e41565b111561179957600080fd5b50016004015163ffffffff1690565b6000818311156117b9575081610251565b50919050565b81516117cb8383611342565b506117d683826113a7565b50505050565b60008060288385516117ee9190611e54565b10156117ff575060009050806112c7565b6000835b61180e856028611e41565b8110156118bb5760049190911b9060006118288783610ccd565b60ff1690506030811015801561183e5750603a81105b156118575761184e603082611e54565b831792506118a8565b604181101580156118685750604781105b156118785761184e603782611e54565b606181101580156118895750606781105b156118995761184e605782611e54565b600080945094505050506112c7565b50806118b381611fb6565b915050611803565b50946001945092505050565b6000602082840312156118d957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113ce57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561195b5761195b611909565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561198a5761198a611909565b604052919050565b600067ffffffffffffffff8211156119ac576119ac611909565b50601f01601f191660200190565b600082601f8301126119cb57600080fd5b81356119de6119d982611992565b611961565b8181528460208386010111156119f357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611a2157600080fd5b8135602067ffffffffffffffff80831115611a3e57611a3e611909565b8260051b611a4d838201611961565b9384528581018301938381019088861115611a6757600080fd5b84880192505b85831015611afe57823584811115611a855760008081fd5b88016040818b03601f1901811315611a9d5760008081fd5b611aa5611938565b8783013587811115611ab75760008081fd5b611ac58d8a838701016119ba565b825250908201359086821115611adb5760008081fd5b611ae98c89848601016119ba565b81890152845250509184019190840190611a6d565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b2c57600080fd5b50565b60008060008060808587031215611b4557600080fd5b843567ffffffffffffffff80821115611b5d57600080fd5b611b69888389016119ba565b95506020870135915080821115611b7f57600080fd5b50611b8c87828801611a10565b9350506040850135611b9d81611b0a565b91506060850135611bad81611b0a565b939692955090935050565b600060208284031215611bca57600080fd5b81356113ce81611b0a565b600060208284031215611be757600080fd5b5035919050565b60008060408385031215611c0157600080fd5b823567ffffffffffffffff80821115611c1957600080fd5b611c25868387016119ba565b93506020850135915080821115611c3b57600080fd5b50611c4885828601611a10565b9150509250929050565b600060208284031215611c6457600080fd5b81516113ce81611b0a565b600060208284031215611c8157600080fd5b5051919050565b60005b83811015611ca3578181015183820152602001611c8b565b50506000910152565b60008151808452611cc4816020860160208601611c88565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611d6d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552611d4188860182611cac565b91890151858303868b0152919050611d598183611cac565b968901969450505090860190600101611cff565b509098975050505050505050565b60008060408385031215611d8e57600080fd5b825167ffffffffffffffff811115611da557600080fd5b8301601f81018513611db657600080fd5b8051611dc46119d982611992565b818152866020838501011115611dd957600080fd5b611dea826020830160208601611c88565b809450505050602083015163ffffffff81168114611e0757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561025157610251611e12565b8181038181111561025157610251611e12565b6020815260006113ce6020830184611cac565b600060208284031215611e8c57600080fd5b815180151581146113ce57600080fd5b604081526000611eaf6040830185611cac565b905063ffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600382810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008112637fffffff8213171561025157610251611e12565b600082611f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b808202811582820484141761025157610251611e12565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fe757611fe7611e12565b506001019056fea2646970667358221220ae3fe39ac561c76c0c508db809a0dfc192b44130fab21e3f254d175f52f62a1164736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
