[ { "inputs": [ { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "StringsInsufficientHexLength", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "labelAction", "type": "uint8" }, { "indexed": false, "internalType": "string", "name": "label", "type": "string" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "NftAction", "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": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokenURIExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "label", "type": "string" } ], "name": "isExpired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "label", "type": "string" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "registrationService", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract GdnRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "label", "type": "string" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "renew", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "name": "setBaseTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "registrationServiceAddress", "type": "address" } ], "name": "setRegistrationService", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "registryAddress", "type": "address" } ], "name": "setRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_tokenURIExtension", "type": "string" } ], "name": "setTokenURIExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60e0604052602d60808181529061235b60a03960099061001f9082610207565b50604080518082019091526005815264173539b7b760d91b6020820152600a906100499082610207565b5034801561005657600080fd5b50604051612388380380612388833981016040819052610075916102c5565b806040518060400160405280600e81526020016d47616961446f6d61696e4e616d6560901b8152506040518060400160405280600381526020016223a22760e91b81525081600090816100c89190610207565b5060016100d58282610207565b5050506001600160a01b03811661010657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61010f81610116565b50506102f5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061019257607f821691505b6020821081036101b257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561020257806000526020600020601f840160051c810160208510156101df5750805b601f840160051c820191505b818110156101ff57600081556001016101eb565b50505b505050565b81516001600160401b0381111561022057610220610168565b6102348161022e845461017e565b846101b8565b6020601f82116001811461026857600083156102505750848201515b600019600385901b1c1916600184901b1784556101ff565b600084815260208120601f198516915b828110156102985787850151825560209485019460019092019101610278565b50848210156102b65786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082840312156102d757600080fd5b81516001600160a01b03811681146102ee57600080fd5b9392505050565b612057806103046000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637b103999116100f9578063b88d4fde11610097578063c87b56dd11610071578063c87b56dd1461037f578063e985e9c514610392578063f2fde38b146103a5578063f81c4906146103b857600080fd5b8063b88d4fde14610351578063bdc32be014610364578063c64fafbc1461036c57600080fd5b806395d89b41116100d357806395d89b4114610310578063a22cb46514610318578063a91ee0dc1461032b578063acf1a8411461033e57600080fd5b80637b103999146102d95780637e8816b9146102ec5780638da5cb5b146102ff57600080fd5b806330176e131161016657806342842e0e1161014057806342842e0e1461028a5780636352211e1461029d57806370a08231146102b0578063715018a6146102d157600080fd5b806330176e131461025157806335ad841b146102645780633e9564f71461027757600080fd5b806301a4b50a146101ae57806301ffc9a7146101de57806306fdde0314610201578063081812fc14610216578063095ea7b31461022957806323b872dd1461023e575b600080fd5b6008546101c1906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f16101ec366004611805565b6103c0565b60405190151581526020016101d5565b610209610412565b6040516101d59190611879565b6101c161022436600461188c565b6104a4565b61023c6102373660046118ba565b6104cd565b005b61023c61024c3660046118e6565b6104dc565b61023c61025f3660046119f4565b610790565b61023c610272366004611a29565b6107a4565b61023c6102853660046119f4565b6107ce565b61023c6102983660046118e6565b6107e2565b6101c16102ab36600461188c565b610802565b6102c36102be366004611a29565b61080d565b6040519081526020016101d5565b61023c610855565b6007546101c1906001600160a01b031681565b61023c6102fa366004611a46565b610869565b6006546001600160a01b03166101c1565b610209610aa0565b61023c610326366004611a9d565b610aaf565b61023c610339366004611a29565b610aba565b61023c61034c366004611ad6565b610ae4565b61023c61035f366004611b1b565b610d17565b610209610d34565b6101f161037a3660046119f4565b610d43565b61020961038d36600461188c565b610dc2565b6101f16103a0366004611b9b565b610f36565b61023c6103b3366004611a29565b610f64565b610209610fa2565b60006001600160e01b031982166380ac58cd60e01b14806103f157506001600160e01b03198216635b5e139f60e01b145b8061040c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461042190611bc9565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90611bc9565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050905090565b60006104af82610fb1565b506000828152600460205260409020546001600160a01b031661040c565b6104d8828233610fea565b5050565b6040516261a76960e81b8152600481018290526000908190736cda10441e223f7133c852b0ad35aeff3091513b906361a7690090602401600060405180830381865af4158015610530573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105589190810190611c03565b9150915061056582610d43565b156105a75760405162461bcd60e51b815260206004820152600d60248201526c131858995b08195e1c1a5c9959609a1b60448201526064015b60405180910390fd5b60075460405163f2d9d3ed60e01b815260009182916001600160a01b039091169063f2d9d3ed906105dc908790600401611879565b6040805180830381865afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c9190611c84565b91509150866001600160a01b0316826001600160a01b0316146106815760405162461bcd60e51b815260206004820152601860248201527f53656e646572206e6f742063757272656e74206f776e65720000000000000000604482015260640161059e565b61068c878787610ff7565b8281146106db5760405162461bcd60e51b815260206004820152601d60248201527f4e465420616e64206c6162656c20657870697279206d69736d61746368000000604482015260640161059e565b6007546040516304f27af760e11b81526001600160a01b03909116906309e4f5ee9061070f9087908a908690600401611cb2565b600060405180830381600087803b15801561072957600080fd5b505af115801561073d573d6000803e3d6000fd5b50505050856001600160a01b03167f63e2cb134c23bb314801d99e917446206ee7a5621d10b98a3b4b57d6d97ae3266003868460405161077f93929190611ce0565b60405180910390a250505050505050565b61079861107c565b60096104d88282611d53565b6107ac61107c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6107d661107c565b600a6104d88282611d53565b6107fd83838360405180602001604052806000815250610d17565b505050565b600061040c82610fb1565b60006001600160a01b038216610839576040516322718ad960e21b81526000600482015260240161059e565b506001600160a01b031660009081526003602052604090205490565b61085d61107c565b61086760006110a9565b565b6008546001600160a01b031633146108935760405162461bcd60e51b815260040161059e90611e12565b60075460405163f5efb64d60e01b81526001600160a01b039091169063f5efb64d906108c3908690600401611879565b602060405180830381865afa1580156108e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109049190611e59565b6109655760405162461bcd60e51b815260206004820152602c60248201527f4c6162656c20697320616c72656164792072656769737465726564206f72206e60448201526b6f7420617661696c61626c6560a01b606482015260840161059e565b604051633c1c8e4960e01b8152600090736cda10441e223f7133c852b0ad35aeff3091513b90633c1c8e49906109a19087908690600401611e76565b602060405180830381865af41580156109be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e29190611e98565b90506109ee83826110fb565b6007546040516304f27af760e11b81526001600160a01b03909116906309e4f5ee90610a2290879087908790600401611cb2565b600060405180830381600087803b158015610a3c57600080fd5b505af1158015610a50573d6000803e3d6000fd5b50505050826001600160a01b03167f63e2cb134c23bb314801d99e917446206ee7a5621d10b98a3b4b57d6d97ae32660018685604051610a9293929190611ce0565b60405180910390a250505050565b60606001805461042190611bc9565b6104d8338383611160565b610ac261107c565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b03163314610b0e5760405162461bcd60e51b815260040161059e90611e12565b60075460405163f2d9d3ed60e01b815260009182916001600160a01b039091169063f2d9d3ed90610b43908790600401611879565b6040805180830381865afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190611c84565b91509150610b9084610d43565b15610bd05760405162461bcd60e51b815260206004820152601060248201526f131858995b081a5cc8195e1c1a5c995960821b604482015260640161059e565b610bda8382611ec7565b90506000736cda10441e223f7133c852b0ad35aeff3091513b633c1c8e4986846040518363ffffffff1660e01b8152600401610c17929190611e76565b602060405180830381865af4158015610c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c589190611e98565b9050610c6483826110fb565b6007546040516304f27af760e11b81526001600160a01b03909116906309e4f5ee90610c9890889087908790600401611cb2565b600060405180830381600087803b158015610cb257600080fd5b505af1158015610cc6573d6000803e3d6000fd5b50505050826001600160a01b03167f63e2cb134c23bb314801d99e917446206ee7a5621d10b98a3b4b57d6d97ae32660028785604051610d0893929190611ce0565b60405180910390a25050505050565b610d228484846104dc565b610d2e848484846111ff565b50505050565b60606009805461042190611bc9565b60075460405163f2d9d3ed60e01b815260009182916001600160a01b039091169063f2d9d3ed90610d78908690600401611879565b6040805180830381865afa158015610d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db89190611c84565b4211949350505050565b60606000610dcf83611328565b805190915081905b600081118015610e15575081610dee600183611eda565b81518110610dfe57610dfe611eed565b6020910101516001600160f81b031916600360fc1b145b8015610e4f575081610e28600283611eda565b81518110610e3857610e38611eed565b6020910101516001600160f81b031916600360fc1b145b15610e6657610e5f600282611eda565b9050610dd7565b60008167ffffffffffffffff811115610e8157610e81611927565b6040519080825280601f01601f191660200182016040528015610eab576020820181803683370190505b50905060005b82811015610f0757838181518110610ecb57610ecb611eed565b602001015160f81c60f81b828281518110610ee857610ee8611eed565b60200101906001600160f81b031916908160001a905350600101610eb1565b50600981604051602001610f1c929190611f03565b604051602081830303815290604052945050505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610f6c61107c565b6001600160a01b038116610f9657604051631e4fbdf760e01b81526000600482015260240161059e565b610f9f816110a9565b50565b6060600a805461042190611bc9565b6000818152600260205260408120546001600160a01b03168061040c57604051637e27328960e01b81526004810184905260240161059e565b6107fd838383600161133f565b6001600160a01b03821661102157604051633250574960e11b81526000600482015260240161059e565b600061102e838333611445565b9050836001600160a01b0316816001600160a01b031614610d2e576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161059e565b6006546001600160a01b031633146108675760405163118cdaa760e01b815233600482015260240161059e565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661112557604051633250574960e11b81526000600482015260240161059e565b600061113383836000611445565b90506001600160a01b038116156107fd576040516339e3563760e11b81526000600482015260240161059e565b6001600160a01b03821661119257604051630b61174360e31b81526001600160a01b038316600482015260240161059e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610d2e57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611241903390889087908790600401611f99565b6020604051808303816000875af192505050801561127c575060408051601f3d908101601f1916820190925261127991810190611fd6565b60015b6112e5573d8080156112aa576040519150601f19603f3d011682016040523d82523d6000602084013e6112af565b606091505b5080516000036112dd57604051633250574960e11b81526001600160a01b038516600482015260240161059e565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461132157604051633250574960e11b81526001600160a01b038516600482015260240161059e565b5050505050565b606061040c826113378461153e565b6001016115a8565b808061135357506001600160a01b03821615155b1561141557600061136384610fb1565b90506001600160a01b0383161580159061138f5750826001600160a01b0316816001600160a01b031614155b80156113a257506113a08184610f36565b155b156113cb5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161059e565b81156114135783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b039081169083161561147257611472818486611728565b6001600160a01b038116156114b05761148f60008560008061133f565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156114df576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600080608083901c156115565760809290921c916010015b604083901c1561156b5760409290921c916008015b602083901c156115805760209290921c916004015b601083901c156115955760109290921c916002015b600883901c1561040c5760010192915050565b60608260006115b8846002611ff3565b6115c3906002611ec7565b67ffffffffffffffff8111156115db576115db611927565b6040519080825280601f01601f191660200182016040528015611605576020820181803683370190505b509050600360fc1b8160008151811061162057611620611eed565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061164f5761164f611eed565b60200101906001600160f81b031916908160001a9053506000611673856002611ff3565b61167e906001611ec7565b90505b60018111156116f6576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106116b2576116b2611eed565b1a60f81b8282815181106116c8576116c8611eed565b60200101906001600160f81b031916908160001a90535060049290921c916116ef8161200a565b9050611681565b5081156117205760405163e22e27eb60e01b8152600481018690526024810185905260440161059e565b949350505050565b61173383838361178c565b6107fd576001600160a01b03831661176157604051637e27328960e01b81526004810182905260240161059e565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161059e565b60006001600160a01b038316158015906117205750826001600160a01b0316846001600160a01b031614806117c657506117c68484610f36565b806117205750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610f9f57600080fd5b60006020828403121561181757600080fd5b8135611822816117ef565b9392505050565b60005b8381101561184457818101518382015260200161182c565b50506000910152565b60008151808452611865816020860160208601611829565b601f01601f19169290920160200192915050565b602081526000611822602083018461184d565b60006020828403121561189e57600080fd5b5035919050565b6001600160a01b0381168114610f9f57600080fd5b600080604083850312156118cd57600080fd5b82356118d8816118a5565b946020939093013593505050565b6000806000606084860312156118fb57600080fd5b8335611906816118a5565b92506020840135611916816118a5565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561196657611966611927565b604052919050565b600067ffffffffffffffff82111561198857611988611927565b50601f01601f191660200190565b60006119a96119a48461196e565b61193d565b90508281528383830111156119bd57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126119e557600080fd5b61182283833560208501611996565b600060208284031215611a0657600080fd5b813567ffffffffffffffff811115611a1d57600080fd5b611720848285016119d4565b600060208284031215611a3b57600080fd5b8135611822816118a5565b600080600060608486031215611a5b57600080fd5b833567ffffffffffffffff811115611a7257600080fd5b611a7e868287016119d4565b9350506020840135611916816118a5565b8015158114610f9f57600080fd5b60008060408385031215611ab057600080fd5b8235611abb816118a5565b91506020830135611acb81611a8f565b809150509250929050565b60008060408385031215611ae957600080fd5b823567ffffffffffffffff811115611b0057600080fd5b611b0c858286016119d4565b95602094909401359450505050565b60008060008060808587031215611b3157600080fd5b8435611b3c816118a5565b93506020850135611b4c816118a5565b925060408501359150606085013567ffffffffffffffff811115611b6f57600080fd5b8501601f81018713611b8057600080fd5b611b8f87823560208401611996565b91505092959194509250565b60008060408385031215611bae57600080fd5b8235611bb9816118a5565b91506020830135611acb816118a5565b600181811c90821680611bdd57607f821691505b602082108103611bfd57634e487b7160e01b600052602260045260246000fd5b50919050565b60008060408385031215611c1657600080fd5b825167ffffffffffffffff811115611c2d57600080fd5b8301601f81018513611c3e57600080fd5b8051611c4c6119a48261196e565b818152866020838501011115611c6157600080fd5b611c72826020830160208601611829565b60209590950151949694955050505050565b60008060408385031215611c9757600080fd5b8251611ca2816118a5565b6020939093015192949293505050565b606081526000611cc5606083018661184d565b6001600160a01b039490941660208301525060400152919050565b60ff84168152606060208201526000611cfc606083018561184d565b9050826040830152949350505050565b601f8211156107fd57806000526020600020601f840160051c81016020851015611d335750805b601f840160051c820191505b818110156113215760008155600101611d3f565b815167ffffffffffffffff811115611d6d57611d6d611927565b611d8181611d7b8454611bc9565b84611d0c565b6020601f821160018114611db55760008315611d9d5750848201515b600019600385901b1c1916600184901b178455611321565b600084815260208120601f198516915b82811015611de55787850151825560209485019460019092019101611dc5565b5084821015611e035786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60208082526027908201527f4f6e6c7920726567697374726174696f6e20736572766963652063616e2063616040820152666c6c207468697360c81b606082015260800190565b600060208284031215611e6b57600080fd5b815161182281611a8f565b604081526000611e89604083018561184d565b90508260208301529392505050565b600060208284031215611eaa57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561040c5761040c611eb1565b8181038181111561040c5761040c611eb1565b634e487b7160e01b600052603260045260246000fd5b6000808454611f1181611bc9565b600182168015611f285760018114611f3d57611f6d565b60ff1983168652811515820286019350611f6d565b87600052602060002060005b83811015611f6557815488820152600190910190602001611f49565b505081860193505b5050508351611f80818360208801611829565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611fcc9083018461184d565b9695505050505050565b600060208284031215611fe857600080fd5b8151611822816117ef565b808202811582820484141761040c5761040c611eb1565b60008161201957612019611eb1565b50600019019056fea2646970667358221220fecce03bcd174619ba9dfcb55754cbf2676fbe78a301de7cc09cc5f81d6fd5a164736f6c634300081a003368747470733a2f2f6170692e676169616e65742d746573742e6c696e6b2f6170692f76312f67646e2f6e66742f000000000000000000000000859b5d2860f59ae457f3d6dfd9bdd9ec59f09115