[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BadDuration", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "MintingFeeTooLow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "NotOwningReservation", "type": "error" }, { "inputs": [], "name": "ToZeroAddress", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "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": "address", "name": "authorizer", "type": "address" } ], "name": "AuthorizerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" } ], "name": "IPNFTMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "reader", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "until", "type": "uint256" } ], "name": "ReadAccessGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "reserver", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "reservationId", "type": "uint256" } ], "name": "Reserved", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "_newTokenURI", "type": "string" }, { "internalType": "bytes", "name": "authorization", "type": "bytes" } ], "name": "amendMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "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": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "reader", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canRead", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "reader", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "until", "type": "uint256" } ], "name": "grantReadAccess", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "reservationId", "type": "uint256" }, { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "bytes", "name": "authorization", "type": "bytes" } ], "name": "mintReservation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "reservations", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve", "outputs": [ { "internalType": "uint256", "name": "reservationId", "type": "uint256" } ], "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": "contract IAuthorizeMints", "name": "authorizer_", "type": "address" } ], "name": "setAuthorizer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516133ee6200011f600039600081816108b6015281816108f601528181610a8b01528181610acb0152610b5e01526133ee6000f3fe6080604052600436106101f95760003560e01c8063715018a61161010d578063c0a91e41116100a0578063ddd3d81b1161006f578063ddd3d81b1461057a578063e8a3d4851461059a578063e985e9c5146105af578063f2fde38b146105f8578063ffad99501461061857600080fd5b8063c0a91e4114610512578063c87b56dd14610532578063cd3293de14610552578063cf4704411461056757600080fd5b80638da5cb5b116100dc5780638da5cb5b1461049e57806395d89b41146104bd578063a22cb465146104d2578063b88d4fde146104f257600080fd5b8063715018a61461044a5780638129fc1c1461045f5780638456cb5914610474578063853828b61461048957600080fd5b80633f4ba83a116101905780634f1ef2861161015f5780634f1ef286146103bb57806352d1902d146103ce5780635c975abb146103f15780636352211e1461040a57806370a082311461042a57600080fd5b80633f4ba83a1461034657806342842e0e1461035b57806342966c681461037b5780634e41a1fb1461039b57600080fd5b8063081812fc116101cc578063081812fc146102c6578063095ea7b3146102e657806323b872dd146103065780633659cfe61461032657600080fd5b806301ffc9a7146101fe578063058a628f14610233578063067cf8321461025557806306fdde03146102a4575b600080fd5b34801561020a57600080fd5b5061021e6102193660046128fb565b610638565b60405190151581526020015b60405180910390f35b34801561023f57600080fd5b5061025361024e36600461292d565b610649565b005b34801561026157600080fd5b5061028c61027036600461294a565b6101c4602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b3480156102b057600080fd5b506102b96106a7565b60405161022a91906129b3565b3480156102d257600080fd5b5061028c6102e136600461294a565b610739565b3480156102f257600080fd5b506102536103013660046129c6565b610760565b34801561031257600080fd5b506102536103213660046129f2565b61087a565b34801561033257600080fd5b5061025361034136600461292d565b6108ac565b34801561035257600080fd5b5061025361098b565b34801561036757600080fd5b506102536103763660046129f2565b61099d565b34801561038757600080fd5b5061025361039636600461294a565b6109b8565b3480156103a757600080fd5b506102b96103b636600461294a565b6109e6565b6102536103c9366004612ad6565b610a81565b3480156103da57600080fd5b506103e3610b51565b60405190815260200161022a565b3480156103fd57600080fd5b506101915460ff1661021e565b34801561041657600080fd5b5061028c61042536600461294a565b610c04565b34801561043657600080fd5b506103e361044536600461292d565b610c64565b34801561045657600080fd5b50610253610cea565b34801561046b57600080fd5b50610253610cfc565b34801561048057600080fd5b50610253610e69565b34801561049557600080fd5b50610253610e79565b3480156104aa57600080fd5b5061015f546001600160a01b031661028c565b3480156104c957600080fd5b506102b9610f13565b3480156104de57600080fd5b506102536104ed366004612b34565b610f22565b3480156104fe57600080fd5b5061025361050d366004612b6d565b610f2d565b34801561051e57600080fd5b5061025361052d366004612bd9565b610f65565b34801561053e57600080fd5b506102b961054d36600461294a565b611016565b34801561055e57600080fd5b506103e3611021565b6103e3610575366004612c57565b61111c565b34801561058657600080fd5b50610253610595366004612d0d565b6113f3565b3480156105a657600080fd5b506102b961159c565b3480156105bb57600080fd5b5061021e6105ca366004612d87565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561060457600080fd5b5061025361061336600461292d565b6115bc565b34801561062457600080fd5b5061021e6106333660046129c6565b611632565b600061064382611685565b92915050565b6106516116aa565b6101c580546001600160a01b0319166001600160a01b0383169081179091556040519081527ff3f625a7d9e02778afdfdf1bea978d6565840d408866c70f5d25aadf77021d70906020015b60405180910390a150565b6060606580546106b690612db5565b80601f01602080910402602001604051908101604052809291908181526020018280546106e290612db5565b801561072f5780601f106107045761010080835404028352916020019161072f565b820191906000526020600020905b81548152906001019060200180831161071257829003601f168201915b5050505050905090565b600061074482611705565b506000908152606960205260409020546001600160a01b031690565b600061076b82610c04565b9050806001600160a01b0316836001600160a01b0316036107dd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107f957506107f981336105ca565b61086b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107d4565b6108758383611764565b505050565b610885335b826117d2565b6108a15760405162461bcd60e51b81526004016107d490612def565b610875838383611851565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108f45760405162461bcd60e51b81526004016107d490612e3c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661093d60008051602061333d833981519152546001600160a01b031690565b6001600160a01b0316146109635760405162461bcd60e51b81526004016107d490612e88565b61096c816119b5565b60408051600080825260208201909252610988918391906119bd565b50565b6109936116aa565b61099b611b28565b565b61087583838360405180602001604052806000815250610f2d565b6109c13361087f565b6109dd5760405162461bcd60e51b81526004016107d490612def565b61098881611b7b565b6101c76020526000908152604090208054610a0090612db5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2c90612db5565b8015610a795780601f10610a4e57610100808354040283529160200191610a79565b820191906000526020600020905b815481529060010190602001808311610a5c57829003601f168201915b505050505081565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ac95760405162461bcd60e51b81526004016107d490612e3c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b1260008051602061333d833981519152546001600160a01b031690565b6001600160a01b031614610b385760405162461bcd60e51b81526004016107d490612e88565b610b41826119b5565b610b4d828260016119bd565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bf15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107d4565b5060008051602061333d83398151915290565b6000818152606760205260408120546001600160a01b0316806106435760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107d4565b60006001600160a01b038216610cce5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107d4565b506001600160a01b031660009081526068602052604090205490565b610cf26116aa565b61099b6000611b84565b600054610100900460ff1615808015610d1c5750600054600160ff909116105b80610d365750303b158015610d36575060005460ff166001145b610d995760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d4565b6000805460ff191660011790558015610dbc576000805461ff0019166101001790555b610dc4611bd7565b610dcc611bfe565b610dd4611c2d565b610e1860405180604001604052806005815260200164125413919560da1b81525060405180604001604052806005815260200164125413919560da1b815250611c5c565b610e276101c380546001019055565b8015610988576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161069c565b610e716116aa565b61099b611c8d565b610e81611ccb565b610e896116aa565b604051600090339047908381818185875af1925050503d8060008114610ecb576040519150601f19603f3d011682016040523d82523d6000602084013e610ed0565b606091505b50509050806109885760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016107d4565b6060606680546106b690612db5565b610b4d338383611d12565b610f3733836117d2565b610f535760405162461bcd60e51b81526004016107d490612def565b610f5f84848484611dd8565b50505050565b33610f6f83610c04565b6001600160a01b031614610f9657604051631e9acf1760e31b815260040160405180910390fd5b804210610fb657604051634d84c2e960e01b815260040160405180910390fd5b60008281526101c6602090815260408083206001600160a01b038716808552908352928190208490555183815284917fcc4230269d6d7fe4df361f9af9d461fd44d71083be838425240bad2430c1f90391015b60405180910390a3505050565b606061064382611e0b565b600061102b611ccb565b6101c5546001600160a01b031663508e2900336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a69190612ed4565b6110c2576040516282b42960e81b815260040160405180910390fd5b506101c380546001810190915560008181526101c4602052604080822080546001600160a01b03191633908117909155905183927f904dcdc411e931497b95b06ddf8f8184815dd3bedc3c7c7cd4aed3ccd30783d891a390565b6000611126611ccb565b60008881526101c460205260409020546001600160a01b0316331461116157604051630123459d60e21b8152600481018990526024016107d4565b66038d7ea4c680003410156111895760405163522036bf60e11b815260040160405180910390fd5b6101c5546001600160a01b0316638a0efceb338b60405180606001604052808d81526020018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a908190840183828082843760009201919091525050509152506040516112319190602001612ef1565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161125e93929190612f3d565b602060405180830381865afa15801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190612ed4565b6112bb576040516282b42960e81b815260040160405180910390fd5b60008881526101c46020908152604080832080546001600160a01b03191690556101c790915290206112ee858783612fb7565b506101c554604051639945e3d360e01b81526001600160a01b0390911690639945e3d39061132290869086906004016130a0565b600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b5050505061135e8989611f13565b61139e8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061209e92505050565b87896001600160a01b03167ff130ad4217502826331b80b4b96e0107643ad73b47f4f81c6ad9b5e85ac4bf2f898989896040516113de94939291906130b4565b60405180910390a35095979650505050505050565b336113fd86610c04565b6001600160a01b031614611423576040516282b42960e81b815260040160405180910390fd5b6101c5546001600160a01b0316638a0efceb333360405180606001604052808a815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201919091525050509152506040516114cb9190602001612ef1565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016114f893929190612f3d565b602060405180830381865afa158015611515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115399190612ed4565b611555576040516282b42960e81b815260040160405180910390fd5b6115958585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061209e92505050565b5050505050565b606060405180606001604052806035815260200161335d60359139905090565b6115c46116aa565b6001600160a01b0381166116295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d4565b61098881611b84565b6000826001600160a01b031661164783610c04565b6001600160a01b0316148061167e575060008281526101c6602090815260408083206001600160a01b038716845290915290205442105b9392505050565b60006001600160e01b03198216632483248360e11b1480610643575061064382612169565b61015f546001600160a01b0316331461099b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d4565b6000818152606760205260409020546001600160a01b03166109885760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107d4565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061179982610c04565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117de83610c04565b9050806001600160a01b0316846001600160a01b0316148061182557506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806118495750836001600160a01b031661183e84610739565b6001600160a01b0316145b949350505050565b826001600160a01b031661186482610c04565b6001600160a01b03161461188a5760405162461bcd60e51b81526004016107d4906130e6565b6001600160a01b0382166118ec5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107d4565b826001600160a01b03166118ff82610c04565b6001600160a01b0316146119255760405162461bcd60e51b81526004016107d4906130e6565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109886116aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156119f057610875836121b9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a4a575060408051601f3d908101601f19168201909252611a479181019061312b565b60015b611aad5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107d4565b60008051602061333d8339815191528114611b1c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107d4565b50610875838383612255565b611b3061227a565b610191805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610988816122c4565b61015f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661099b5760405162461bcd60e51b81526004016107d490613144565b600054610100900460ff16611c255760405162461bcd60e51b81526004016107d490613144565b61099b612304565b600054610100900460ff16611c545760405162461bcd60e51b81526004016107d490613144565b61099b612334565b600054610100900460ff16611c835760405162461bcd60e51b81526004016107d490613144565b610b4d8282612368565b611c95611ccb565b610191805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611b5e3390565b6101915460ff161561099b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107d4565b816001600160a01b0316836001600160a01b031603611d735760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107d4565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611009565b611de3848484611851565b611def848484846123a8565b610f5f5760405162461bcd60e51b81526004016107d49061318f565b6060611e1682611705565b60008281526097602052604081208054611e2f90612db5565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5b90612db5565b8015611ea85780601f10611e7d57610100808354040283529160200191611ea8565b820191906000526020600020905b815481529060010190602001808311611e8b57829003601f168201915b505050505090506000611ec660408051602081019091526000815290565b90508051600003611ed8575092915050565b815115611f0a578082604051602001611ef29291906131e1565b60405160208183030381529060405292505050919050565b611849846124a9565b6001600160a01b038216611f695760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107d4565b6000818152606760205260409020546001600160a01b031615611fce5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107d4565b6000818152606760205260409020546001600160a01b0316156120335760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107d4565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152606760205260409020546001600160a01b03166121195760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107d4565b60008281526097602052604090206121318282613210565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006001600160e01b031982166380ac58cd60e01b148061219a57506001600160e01b03198216635b5e139f60e01b145b8061064357506301ffc9a760e01b6001600160e01b0319831614610643565b6001600160a01b0381163b6122265760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107d4565b60008051602061333d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61225e8361251c565b60008251118061226b5750805b1561087557610f5f838361255c565b6101915460ff1661099b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107d4565b6122cd81612581565b600081815260976020526040902080546122e690612db5565b15905061098857600081815260976020526040812061098891612897565b600054610100900460ff1661232b5760405162461bcd60e51b81526004016107d490613144565b61099b33611b84565b600054610100900460ff1661235b5760405162461bcd60e51b81526004016107d490613144565b610191805460ff19169055565b600054610100900460ff1661238f5760405162461bcd60e51b81526004016107d490613144565b606561239b8382613210565b5060666108758282613210565b60006001600160a01b0384163b1561249e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906123ec9033908990889088906004016132d0565b6020604051808303816000875af1925050508015612427575060408051601f3d908101601f1916820190925261242491810190613303565b60015b612484573d808015612455576040519150601f19603f3d011682016040523d82523d6000602084013e61245a565b606091505b50805160000361247c5760405162461bcd60e51b81526004016107d49061318f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611849565b506001949350505050565b60606124b482611705565b60006124cb60408051602081019091526000815290565b905060008151116124eb576040518060200160405280600081525061167e565b806124f584612616565b6040516020016125069291906131e1565b6040516020818303038152906040529392505050565b612525816121b9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061167e8383604051806060016040528060278152602001613392602791396126a9565b600061258c82610c04565b905061259782610c04565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060600061262383612721565b600101905060008167ffffffffffffffff81111561264357612643612a33565b6040519080825280601f01601f19166020018201604052801561266d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461267757509392505050565b6060600080856001600160a01b0316856040516126c69190613320565b600060405180830381855af49150503d8060008114612701576040519150601f19603f3d011682016040523d82523d6000602084013e612706565b606091505b5091509150612717868383876127f9565b9695505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106127605772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061278c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106127aa57662386f26fc10000830492506010015b6305f5e10083106127c2576305f5e100830492506008015b61271083106127d657612710830492506004015b606483106127e8576064830492506002015b600a83106106435760010192915050565b60608315612868578251600003612861576001600160a01b0385163b6128615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d4565b5081611849565b611849838381511561287d5781518083602001fd5b8060405162461bcd60e51b81526004016107d491906129b3565b5080546128a390612db5565b6000825580601f106128b3575050565b601f01602090049060005260206000209081019061098891905b808211156128e157600081556001016128cd565b5090565b6001600160e01b03198116811461098857600080fd5b60006020828403121561290d57600080fd5b813561167e816128e5565b6001600160a01b038116811461098857600080fd5b60006020828403121561293f57600080fd5b813561167e81612918565b60006020828403121561295c57600080fd5b5035919050565b60005b8381101561297e578181015183820152602001612966565b50506000910152565b6000815180845261299f816020860160208601612963565b601f01601f19169290920160200192915050565b60208152600061167e6020830184612987565b600080604083850312156129d957600080fd5b82356129e481612918565b946020939093013593505050565b600080600060608486031215612a0757600080fd5b8335612a1281612918565b92506020840135612a2281612918565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612a5a57600080fd5b813567ffffffffffffffff80821115612a7557612a75612a33565b604051601f8301601f19908116603f01168101908282118183101715612a9d57612a9d612a33565b81604052838152866020858801011115612ab657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612ae957600080fd5b8235612af481612918565b9150602083013567ffffffffffffffff811115612b1057600080fd5b612b1c85828601612a49565b9150509250929050565b801515811461098857600080fd5b60008060408385031215612b4757600080fd5b8235612b5281612918565b91506020830135612b6281612b26565b809150509250929050565b60008060008060808587031215612b8357600080fd5b8435612b8e81612918565b93506020850135612b9e81612918565b925060408501359150606085013567ffffffffffffffff811115612bc157600080fd5b612bcd87828801612a49565b91505092959194509250565b600080600060608486031215612bee57600080fd5b8335612bf981612918565b95602085013595506040909401359392505050565b60008083601f840112612c2057600080fd5b50813567ffffffffffffffff811115612c3857600080fd5b602083019150836020828501011115612c5057600080fd5b9250929050565b60008060008060008060008060a0898b031215612c7357600080fd5b8835612c7e81612918565b975060208901359650604089013567ffffffffffffffff80821115612ca257600080fd5b612cae8c838d01612c0e565b909850965060608b0135915080821115612cc757600080fd5b612cd38c838d01612c0e565b909650945060808b0135915080821115612cec57600080fd5b50612cf98b828c01612c0e565b999c989b5096995094979396929594505050565b600080600080600060608688031215612d2557600080fd5b85359450602086013567ffffffffffffffff80821115612d4457600080fd5b612d5089838a01612c0e565b90965094506040880135915080821115612d6957600080fd5b50612d7688828901612c0e565b969995985093965092949392505050565b60008060408385031215612d9a57600080fd5b8235612da581612918565b91506020830135612b6281612918565b600181811c90821680612dc957607f821691505b602082108103612de957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215612ee657600080fd5b815161167e81612b26565b60208152815160208201526000602083015160606040840152612f176080840182612987565b90506040840151601f19848303016060850152612f348282612987565b95945050505050565b6001600160a01b03848116825283166020820152606060408201819052600090612f3490830184612987565b601f82111561087557600081815260208120601f850160051c81016020861015612f905750805b601f850160051c820191505b81811015612faf57828155600101612f9c565b505050505050565b67ffffffffffffffff831115612fcf57612fcf612a33565b612fe383612fdd8354612db5565b83612f69565b6000601f8411600181146130175760008515612fff5750838201355b600019600387901b1c1916600186901b178355611595565b600083815260209020601f19861690835b828110156130485786850135825560209485019460019092019101613028565b50868210156130655760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611849602083018486613077565b6040815260006130c8604083018688613077565b82810360208401526130db818587613077565b979650505050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60006020828403121561313d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600083516131f3818460208801612963565b835190830190613207818360208801612963565b01949350505050565b815167ffffffffffffffff81111561322a5761322a612a33565b61323e816132388454612db5565b84612f69565b602080601f831160018114613273576000841561325b5750858301515b600019600386901b1c1916600185901b178555612faf565b600085815260208120601f198616915b828110156132a257888601518255948401946001909101908401613283565b50858210156132c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061271790830184612987565b60006020828403121561331557600080fd5b815161167e816128e5565b60008251613332818460208701612963565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc68747470733a2f2f6d696e742e6d6f6c6563756c652e746f2f636f6e74726163742d6d657461646174612f69706e66742e6a736f6e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eec71f32eb8b7b0d48ebbead4e03bc6358407194bdff1bb706c2b562a89d4a4664736f6c63430008120033