[ { "inputs": [], "stateMutability": "payable", "type": "constructor" }, { "inputs": [], "name": "AccountBalanceOverflow", "type": "error" }, { "inputs": [], "name": "AllocationOutOfBounds", "type": "error" }, { "inputs": [], "name": "AllocationOverflow", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "Blacklisted", "type": "error" }, { "inputs": [], "name": "CannotIncreaseMaxSupplyAfterMint", "type": "error" }, { "inputs": [], "name": "ClaimSupply", "type": "error" }, { "inputs": [], "name": "DisabledRoyalties", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FrozenRoyalties", "type": "error" }, { "inputs": [], "name": "InsufficientPayment", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidLength", "type": "error" }, { "inputs": [], "name": "InvalidRange", "type": "error" }, { "inputs": [], "name": "ListClaimSupply", "type": "error" }, { "inputs": [], "name": "ListDeleted", "type": "error" }, { "inputs": [], "name": "ListMaxSupply", "type": "error" }, { "inputs": [], "name": "ListPaused", "type": "error" }, { "inputs": [], "name": "ListTimeOutOfBounds", "type": "error" }, { "inputs": [], "name": "ListTimestampEnd", "type": "error" }, { "inputs": [], "name": "ListUnknown", "type": "error" }, { "inputs": [], "name": "MaxReferral", "type": "error" }, { "inputs": [], "name": "MaxSupply", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NoTreasury", "type": "error" }, { "inputs": [], "name": "NotEligible", "type": "error" }, { "inputs": [], "name": "NotFactory", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "NotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "NotZero", "type": "error" }, { "inputs": [], "name": "Reentrancy", "type": "error" }, { "inputs": [], "name": "ReservedMaxSupply", "type": "error" }, { "inputs": [], "name": "ReservedSupply", "type": "error" }, { "inputs": [], "name": "RoyaltyOverflow", "type": "error" }, { "inputs": [], "name": "RoyaltyReceiverIsZeroAddress", "type": "error" }, { "inputs": [], "name": "SelfReferral", "type": "error" }, { "inputs": [], "name": "SupplyUnderflow", "type": "error" }, { "inputs": [], "name": "TimeOutOfBounds", "type": "error" }, { "inputs": [], "name": "TimestampEnd", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "TreasuryExists", "type": "error" }, { "inputs": [], "name": "URIPermanent", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnderSupply", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "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": "isApproved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "baseURI_", "type": "string" }, { "indexed": false, "internalType": "string", "name": "fileExtension_", "type": "string" } ], "name": "BaseURIUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId_", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "toTokenId_", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId_", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "toTokenId_", "type": "uint256" } ], "name": "BatchPermanentURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "blacklistedAssets", "type": "address[]" }, { "indexed": true, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "BlacklistUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "name_", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "ContractCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "uri_", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "feeRecipients_", "type": "address[]" }, { "indexed": false, "internalType": "uint16[]", "name": "fees_", "type": "uint16[]" } ], "name": "FeeUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "launchpad_", "type": "address" } ], "name": "LaunchpadUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter_", "type": "address" }, { "indexed": true, "internalType": "uint8", "name": "listId_", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "ListMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "MintListDeleted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint8", "name": "listId_", "type": "uint8" }, { "indexed": false, "internalType": "bool", "name": "paused_", "type": "bool" } ], "name": "MintListStatus", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint8", "name": "listId_", "type": "uint8" }, { "components": [ { "internalType": "bytes32", "name": "root", "type": "bytes32" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint32", "name": "unit", "type": "uint32" }, { "internalType": "uint32", "name": "userSupply", "type": "uint32" }, { "internalType": "uint32", "name": "maxSupply", "type": "uint32" }, { "internalType": "uint32", "name": "start", "type": "uint32" }, { "internalType": "uint32", "name": "end", "type": "uint32" }, { "internalType": "bool", "name": "reserved", "type": "bool" }, { "internalType": "bool", "name": "paused", "type": "bool" } ], "indexed": false, "internalType": "struct MintList", "name": "list_", "type": "tuple" } ], "name": "MintListUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "start_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "end_", "type": "uint256" } ], "name": "MintPeriodUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "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": false, "internalType": "string", "name": "uri_", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "PermanentURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "price_", "type": "uint256" } ], "name": "PriceUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "referral_", "type": "address" }, { "indexed": true, "internalType": "address", "name": "referred_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "Referral", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "referralFee_", "type": "uint16" } ], "name": "ReferralFeeUpdate", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RoyaltiesDisabled", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RoyaltiesFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver_", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "bps_", "type": "uint96" } ], "name": "RoyaltiesUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "supply_", "type": "uint256" } ], "name": "SupplyUpdate", "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": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "minAllocation", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxAllocation", "type": "uint256" } ], "name": "TreasuryUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "unit_", "type": "uint256" } ], "name": "UnitUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "claimable_", "type": "uint256" } ], "name": "UserClaimableUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet_", "type": "address" } ], "name": "claimedOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "contractURI_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultRoyalty", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "deleteList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "end", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "feeRanges", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "feeRecipients", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "fees", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "freezeTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "freezeURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBlacklist", "outputs": [ { "internalType": "address[]", "name": "blacklist_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "getList", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "root", "type": "bytes32" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint32", "name": "unit", "type": "uint32" }, { "internalType": "uint32", "name": "userSupply", "type": "uint32" }, { "internalType": "uint32", "name": "maxSupply", "type": "uint32" }, { "internalType": "uint32", "name": "start", "type": "uint32" }, { "internalType": "uint32", "name": "end", "type": "uint32" }, { "internalType": "bool", "name": "reserved", "type": "bool" }, { "internalType": "bool", "name": "paused", "type": "bool" } ], "internalType": "struct MintList", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "launchpad_", "type": "address" }, { "components": [ { "internalType": "address", "name": "masterCopy", "type": "address" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "address[]", "name": "feeRecipients", "type": "address[]" }, { "internalType": "uint16[2][]", "name": "feeRanges", "type": "uint16[2][]" }, { "internalType": "uint16[2]", "name": "royalty", "type": "uint16[2]" }, { "internalType": "bool", "name": "paused", "type": "bool" } ], "internalType": "struct NftPolicy", "name": "policy_", "type": "tuple" }, { "components": [ { "internalType": "uint64", "name": "policyId", "type": "uint64" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint16[]", "name": "fees", "type": "uint16[]" }, { "internalType": "uint16", "name": "royalty", "type": "uint16" }, { "internalType": "uint32", "name": "maxSupply", "type": "uint32" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "parent", "type": "address" } ], "internalType": "struct NftConfig", "name": "config_", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint32", "name": "maxSupply_", "type": "uint32" }, { "internalType": "uint16", "name": "royalty_", "type": "uint16" }, { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "uint256", "name": "price_", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchpad", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" }, { "internalType": "address", "name": "wallet_", "type": "address" } ], "name": "listClaimedOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "listIndex", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "listSupply", "outputs": [ { "internalType": "uint32", "name": "supply", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "lists", "outputs": [ { "internalType": "bytes32", "name": "root", "type": "bytes32" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint32", "name": "unit", "type": "uint32" }, { "internalType": "uint32", "name": "userSupply", "type": "uint32" }, { "internalType": "uint32", "name": "maxSupply", "type": "uint32" }, { "internalType": "uint32", "name": "start", "type": "uint32" }, { "internalType": "uint32", "name": "end", "type": "uint32" }, { "internalType": "bool", "name": "reserved", "type": "bool" }, { "internalType": "bool", "name": "paused", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAllocation", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minAllocation", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" }, { "internalType": "address", "name": "referral_", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" }, { "internalType": "address", "name": "referral_", "type": "address" }, { "internalType": "uint16", "name": "allocation_", "type": "uint16" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" }, { "internalType": "uint16", "name": "allocation_", "type": "uint16" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "proof_", "type": "bytes32[]" }, { "internalType": "uint8", "name": "listId_", "type": "uint8" }, { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint32", "name": "amount_", "type": "uint32" }, { "internalType": "address", "name": "referral_", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "name_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numerator", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "parent", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "pauseList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "permanentURI", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "referralFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token_", "type": "address" }, { "internalType": "address", "name": "recipient_", "type": "address" } ], "name": "rescueERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token_", "type": "address" }, { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "rescueERC721", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltiesFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "royaltyRange", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "isApproved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "string", "name": "fileExtension_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "assets_", "type": "address[]" }, { "internalType": "bool", "name": "status_", "type": "bool" } ], "name": "setBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "claimable_", "type": "uint32" } ], "name": "setClaimableUserSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "contractURI_", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16[]", "name": "fees_", "type": "uint16[]" }, { "internalType": "uint16", "name": "minAllocation_", "type": "uint16" }, { "internalType": "uint16", "name": "maxAllocation_", "type": "uint16" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "price_", "type": "uint256" }, { "internalType": "uint8", "name": "listId_", "type": "uint8" }, { "internalType": "bytes32", "name": "root_", "type": "bytes32" }, { "internalType": "uint32", "name": "userSupply_", "type": "uint32" }, { "internalType": "uint32", "name": "maxSupply_", "type": "uint32" }, { "internalType": "uint32", "name": "start_", "type": "uint32" }, { "internalType": "uint32", "name": "end_", "type": "uint32" }, { "internalType": "uint32", "name": "unit_", "type": "uint32" }, { "internalType": "bool", "name": "reserved_", "type": "bool" }, { "internalType": "bool", "name": "paused_", "type": "bool" } ], "name": "setList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8[]", "name": "ids_", "type": "uint8[]" }, { "components": [ { "internalType": "bytes32", "name": "root", "type": "bytes32" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint32", "name": "unit", "type": "uint32" }, { "internalType": "uint32", "name": "userSupply", "type": "uint32" }, { "internalType": "uint32", "name": "maxSupply", "type": "uint32" }, { "internalType": "uint32", "name": "start", "type": "uint32" }, { "internalType": "uint32", "name": "end", "type": "uint32" }, { "internalType": "bool", "name": "reserved", "type": "bool" }, { "internalType": "bool", "name": "paused", "type": "bool" } ], "internalType": "struct MintList[]", "name": "lists_", "type": "tuple[]" } ], "name": "setLists", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "start_", "type": "uint32" }, { "internalType": "uint32", "name": "end_", "type": "uint32" } ], "name": "setMintPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "price_", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "bps_", "type": "uint16" } ], "name": "setReferralFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint96", "name": "bps_", "type": "uint96" } ], "name": "setRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "maxSupply_", "type": "uint32" } ], "name": "setSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "internalType": "address", "name": "recipient_", "type": "address" }, { "internalType": "uint96", "name": "bps_", "type": "uint96" } ], "name": "setTokenRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "internalType": "string", "name": "tokenURI_", "type": "string" } ], "name": "setTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "unit_", "type": "uint24" } ], "name": "setUnit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "splitter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "start", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId_", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "supported_", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "tokenURI_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unit", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "listId_", "type": "uint8" } ], "name": "unpauseList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "treasury_", "type": "address" }, { "internalType": "address", "name": "splitter_", "type": "address" } ], "name": "updateSetup", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "userSupply", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040525f805460ff191690556200001762000027565b6200002162000027565b6200008a565b63409feecd1980546001811615620000465763f92ee8a95f526004601cfd5b8160c01c808260011c1462000085578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b615ea380620000985f395ff3fe6080604052600436106104df575f3560e01c80637180177611610283578063b88d4fde11610155578063de3a77ce116100c9578063efbe1c1c11610083578063efbe1c1c146110c5578063f04e283e146110e8578063f2fde38b146110fb578063f3fef3a31461110e578063f9f1b21c1461112d578063fee81cf41461114c575f80fd5b8063de3a77ce14611025578063e8982dea14611044578063e8a3d48514611057578063e985e9c51461106b578063ebae6d811461109f578063ee79581c146110b2575f80fd5b8063c42fe7181161011a578063c42fe71814610f7e578063c793803c14610f9d578063c87b56dd14610fb1578063ce5f945414610fd0578063d03fb8f414610fea578063d5abeb0114611009575f80fd5b8063b88d4fde14610ed0578063baa3f7ee14610ee3578063be9a655514610f1d578063c1b5023114610f40578063c21b471b14610f5f575f80fd5b806391b7f5ed116101f7578063a035b1fe116101b1578063a035b1fe14610d76578063a0712d6814610d8b578063a2076b6f14610d9e578063a22cb46514610dbf578063a9cbba9914610dde578063b015074414610dfd575f80fd5b806391b7f5ed14610cb2578063938e3d7b14610cd157806395d89b4114610cf05780639b3ba79f14610d045780639c73815814610d255780639e36d59814610d57575f80fd5b80638456cb59116102485780638456cb5914610bf857806384ae2bc614610c0c5780638530f8e814610c265780638c4e90c014610c455780638da5cb5b14610c64578063907af6c014610c7c575f80fd5b80637180177614610b135780637885fdc714610b365780637b68575414610b735780637df325e114610bb95780638419a6d414610bd8575f80fd5b8063338d6c30116103bc57806354d1f13d116103305780636352211e116102ea5780636352211e14610a7b5780636790a9de14610a9a5780636c0360eb14610ab95780636fc7d46d14610acd57806370a0823114610aec578063715018a614610b0b575f80fd5b806354d1f13d146109e15780635c975abb146109e95780635d799f87146109ff5780635e1783a114610a1e57806360f96a8f14610a3d57806361d027b314610a5c575f80fd5b806340c10f191161038157806340c10f191461093757806342842e0e1461094a578063463a3a4f1461095d5780634a355d7f1461098f5780634acc79ed146109a357806351fe9eff146109c2575f80fd5b8063338d6c30146108b05780633769b95a146108d1578063385c0eb0146108e55780633cd8045e146109045780633f4ba83a14610923575f80fd5b8063162094c4116104535780632a55205a116104185780632a55205a146107ce5780632f6196b71461080c5780633167611f1461081f57806331b5438b1461083257806331b54a1514610878578063325a370f14610891575f80fd5b8063162094c41461075657806317bfd1641461077557806318160ddd1461078857806323b872dd146107b357806325692962146107c6575f80fd5b8063095ea7b3116104a4578063095ea7b3146106b25780630d4d1513146106c55780630e85d1e3146106d85780631249c58b146106f7578063149b5d89146106ff578063150b7a021461071e575f80fd5b8063012cf1e8146104f257806301ffc9a71461060c57806302669b521461063b57806306fdde0314610672578063081812fc14610693575f80fd5b366104ee576104ec61117d565b005b5f80fd5b3480156104fd575f80fd5b506105f661050c366004614e9a565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091525060ff9081165f908152600e6020908152604091829020825161012081018452815481526001820154928101929092526002015463ffffffff80821693830193909352600160201b810483166060830152600160401b810483166080830152600160601b8104831660a0830152600160801b810490921660c0820152600160a01b82048316151560e0820152600160a81b909104909116151561010082015290565b6040516106039190614eb3565b60405180910390f35b348015610617575f80fd5b5061062b610626366004614f5c565b61129b565b6040519015158152602001610603565b348015610646575f80fd5b5060125461065a906001600160a01b031681565b6040516001600160a01b039091168152602001610603565b34801561067d575f80fd5b506106866112ba565b6040516106039190614fd0565b34801561069e575f80fd5b5061065a6106ad366004614fe2565b61134a565b6104ec6106c036600461500f565b611385565b6104ec6106d3366004615037565b611390565b3480156106e3575f80fd5b506104ec6106f23660046150c6565b6113a0565b6104ec6113b3565b34801561070a575f80fd5b506104ec61071936600461511f565b6113c1565b348015610729575f80fd5b5061073d6107383660046151c5565b6113f9565b6040516001600160e01b03199091168152602001610603565b348015610761575f80fd5b506104ec6107703660046152f3565b61145a565b6104ec610783366004615336565b6114d2565b348015610793575f80fd5b50600254600160201b900463ffffffff165b604051908152602001610603565b6104ec6107c1366004615367565b611548565b6104ec611641565b3480156107d9575f80fd5b506107ed6107e83660046153a0565b61168d565b604080516001600160a01b039093168352602083019190915201610603565b6104ec61081a3660046153d1565b6116e0565b6104ec61082d36600461541b565b61174b565b34801561083d575f80fd5b5061086361084c366004614e9a565b600f6020525f908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610603565b348015610883575f80fd5b50600a5461062b9060ff1681565b34801561089c575f80fd5b506104ec6108ab366004614e9a565b6117b0565b3480156108bb575f80fd5b506108c46117c1565b604051610603919061544b565b3480156108dc575f80fd5b506104ec6117d2565b3480156108f0575f80fd5b506104ec6108ff366004614fe2565b6117e2565b34801561090f575f80fd5b5060195461065a906001600160a01b031681565b34801561092e575f80fd5b506104ec6117f3565b6104ec61094536600461500f565b611803565b6104ec610958366004615367565b61180e565b348015610968575f80fd5b5061097c610977366004614fe2565b61183a565b60405161ffff9091168152602001610603565b34801561099a575f80fd5b506104ec611867565b3480156109ae575f80fd5b5061097c6109bd366004614fe2565b611877565b3480156109cd575f80fd5b5061065a6109dc366004614fe2565b6118ac565b6104ec6118d4565b3480156109f4575f80fd5b505f5460ff1661062b565b348015610a0a575f80fd5b506104ec610a19366004615336565b61190d565b348015610a29575f80fd5b506104ec610a38366004615497565b611936565b348015610a48575f80fd5b50601a5461065a906001600160a01b031681565b348015610a67575f80fd5b5060185461065a906001600160a01b031681565b348015610a86575f80fd5b5061065a610a95366004614fe2565b611b18565b348015610aa5575f80fd5b506104ec610ab4366004615529565b611b54565b348015610ac4575f80fd5b50610686611ba0565b348015610ad8575f80fd5b506104ec610ae736600461557e565b611baf565b348015610af7575f80fd5b506107a5610b063660046155a6565b611cbc565b6104ec611cf4565b348015610b1e575f80fd5b5060025461086390600160401b900463ffffffff1681565b348015610b41575f80fd5b50601154610b5b906201000090046001600160601b031681565b6040516001600160601b039091168152602001610603565b348015610b7e575f80fd5b506107a5610b8d3660046155bf565b60ff82165f9081526010602090815260408083206001600160a01b038516845290915290205492915050565b348015610bc4575f80fd5b506104ec610bd3366004615367565b611d05565b348015610be3575f80fd5b5060115461062b90600160701b900460ff1681565b348015610c03575f80fd5b506104ec611d4e565b348015610c17575f80fd5b5060115461097c9061ffff1681565b348015610c31575f80fd5b506104ec610c403660046155ef565b611d5e565b348015610c50575f80fd5b506104ec610c5f366004614e9a565b611dcc565b348015610c6f575f80fd5b50638b78c6d8195461065a565b348015610c87575f80fd5b50600254610c9e90600160601b900462ffffff1681565b60405162ffffff9091168152602001610603565b348015610cbd575f80fd5b506104ec610ccc366004614fe2565b611ddf565b348015610cdc575f80fd5b506104ec610ceb36600461561f565b611e23565b348015610cfb575f80fd5b50610686611e34565b348015610d0f575f80fd5b50601a5461097c90600160b01b900461ffff1681565b348015610d30575f80fd5b50600d54610d4590600160201b900460ff1681565b60405160ff9091168152602001610603565b348015610d62575f80fd5b506104ec610d71366004615650565b611e43565b348015610d81575f80fd5b506107a560015481565b6104ec610d99366004614fe2565b611ec8565b348015610da9575f80fd5b50601a5461097c90600160a01b900461ffff1681565b348015610dca575f80fd5b506104ec610dd9366004615669565b611ed3565b348015610de9575f80fd5b506104ec610df8366004615650565b611f26565b348015610e08575f80fd5b50610e7b610e17366004614e9a565b600e6020525f908152604090208054600182015460029092015490919063ffffffff80821691600160201b8104821691600160401b8204811691600160601b8104821691600160801b8204169060ff600160a01b8204811691600160a81b90041689565b60408051998a5260208a019890985263ffffffff9687169789019790975293851660608801529184166080870152831660a086015290911660c0840152151560e0830152151561010082015261012001610603565b6104ec610ede3660046151c5565b611f83565b348015610eee575f80fd5b506107a5610efd3660046155a6565b6001600160a01b03165f9081526003602052604090205463ffffffff1690565b348015610f28575f80fd5b5060025461086390600160781b900463ffffffff1681565b348015610f4b575f80fd5b506104ec610f5a366004615691565b611fd6565b348015610f6a575f80fd5b506104ec610f793660046156b3565b612054565b348015610f89575f80fd5b506104ec610f983660046156db565b612097565b348015610fa8575f80fd5b506104ec6120e3565b348015610fbc575f80fd5b50610686610fcb366004614fe2565b6120f3565b348015610fdb575f80fd5b5060155461097c9061ffff1681565b348015610ff5575f80fd5b506104ec611004366004614e9a565b612143565b348015611014575f80fd5b506002546108639063ffffffff1681565b348015611030575f80fd5b5061097c61103f3660046153a0565b612155565b6104ec6110523660046156f4565b61219a565b348015611062575f80fd5b50610686612397565b348015611076575f80fd5b5061062b611085366004615336565b601c52670a5a2e7a000000006008525f526030600c205490565b6104ec6110ad36600461577f565b6123a6565b6104ec6110c0366004615816565b612429565b3480156110d0575f80fd5b5060025461086390600160981b900463ffffffff1681565b6104ec6110f63660046155a6565b612437565b6104ec6111093660046155a6565b612471565b348015611119575f80fd5b506104ec61112836600461500f565b612497565b348015611138575f80fd5b506104ec611147366004615895565b61251f565b348015611157575f80fd5b506107a56111663660046155a6565b63389a75e1600c9081525f91909152602090205490565b600254600d545f9163ffffffff808216926111a49290821691600160201b909104166158fe565b63ffffffff161490508015611263573480158015906111cd57506018546001600160a01b031615155b1561125f575f6111e0638b78c6d8195490565b6001600160a01b03161461120c57601a5461120990600160a01b900461ffff16826127106125a8565b90505b6018546040516001600160a01b039091169082905f81818185875af1925050503d805f8114611256576040519150601f19603f3d011682016040523d82523d5f602084013e61125b565b606091505b5050505b5050565b5f5460ff16156112865760405163d93c066560e01b815260040160405180910390fd5b61129833600154346109459190615922565b50565b5f6112a5826125db565b806112b457506112b4826125f8565b92915050565b6060600480546112c990615941565b80601f01602080910402602001604051908101604052809291908181526020018280546112f590615941565b80156113405780601f1061131757610100808354040283529160200191611340565b820191905f5260205f20905b81548152906001019060200180831161132357829003601f168201915b5050505050905090565b5f815f52673ec412a9852d173d60c11b601c5260205f2082018201805460601b61137b5763ceea21b65f526004601cfd5b6001015492915050565b61125f338383612654565b61139b8383836126ee565b505050565b6113a8612710565b61139b83838361272a565b6113bf3360015f6126ee565b565b6113c9612710565b6113ed89898c8a8a8a8a8a8a8a60025f9054906101000a900463ffffffff166127f0565b50505050505050505050565b5f333014158061141257506018546001600160a01b0316155b156114305760405163177adcc960e21b815260040160405180910390fd5b6018546114489030906001600160a01b031686612a39565b50630a85bd0160e11b95945050505050565b611462612710565b61146c8282612a61565b817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8260405161149c9190614fd0565b60405180910390a260405182907ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7905f90a25050565b6012546001600160a01b031633146114fd57604051631966391b60e11b815260040160405180910390fd5b601880546001600160a01b038085166001600160a01b03199283161790925560198054928416929091168217905560115461125f91906001600160601b036201000090910416612ab4565b5f818152673ec412a9852d173d60c11b3317601c52602090208101810180546001600160a01b0394851694938416938116919082861483026115995767ceea21b6a1148100831560021b526004601cfd5b855f5281600101549250823314863314176115c5576030600c20546115c557634b6e7f185f526004601cfd5b82156115d2575f82600101555b85851818905550601c600c81812080545f190190555f84905220805460010163ffffffff811684026116135767ea553b3401336cea841560021b526004601cfd5b90558082847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a4505050565b5f6202a3006001600160401b03164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f82815268aa4ec00224afccfdb76020526040812054606081901c919061271090836116c0576020515490508060601c93505b606084901b18845f19829004811182023d3d3e9396930204935090915050565b601a5461ffff600160a01b9091048116908216108061170f5750601a5461ffff600160b01b9091048116908216115b1561172d5760405163f3b9a23560e01b815260040160405180910390fd5b61173a8161ffff16612b3a565b611745848484612ca3565b50505050565b601a5461ffff600160a01b9091048116908216108061177a5750601a5461ffff600160b01b9091048116908216115b156117985760405163f3b9a23560e01b815260040160405180910390fd5b6117a58161ffff16612b3a565b61139b83835f612ca3565b6117b8612710565b61129881612d5d565b60606117cd600c612e2f565b905090565b6117da612710565b6113bf612f03565b6117ea612710565b61129881612f50565b6117fb612710565b6113bf612fec565b61125f82825f6126ee565b611819838383611548565b813b1561139b5761139b83838360405180602001604052805f81525061303d565b60138160028110611849575f80fd5b60109182820401919006600202915054906101000a900461ffff1681565b61186f612710565b6113bf6130be565b60168181548110611886575f80fd5b905f5260205f209060109182820401919006600202915054906101000a900461ffff1681565b601481815481106118bb575f80fd5b5f918252602090912001546001600160a01b0316905081565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b611915612710565b5f6119296001600160a01b03841630613134565b905061139b838383613164565b61193e612710565b8281811461195f5760405163251f56a160e21b815260040160405180910390fd5b5f5b81811015611b1057611b0886868381811061197e5761197e615979565b90506020020160208101906119939190614e9a565b8585848181106119a5576119a5615979565b905061012002015f01358686858181106119c1576119c1615979565b90506101200201602001358787868181106119de576119de615979565b9050610120020160600160208101906119f79190615650565b888887818110611a0957611a09615979565b905061012002016080016020810190611a229190615650565b898988818110611a3457611a34615979565b9050610120020160a0016020810190611a4d9190615650565b8a8a89818110611a5f57611a5f615979565b9050610120020160c0016020810190611a789190615650565b8b8b8a818110611a8a57611a8a615979565b905061012002016040016020810190611aa39190615650565b8c8c8b818110611ab557611ab5615979565b9050610120020160e0016020810190611ace919061598d565b8d8d8c818110611ae057611ae0615979565b90506101200201610100016020810190611afa919061598d565b60025463ffffffff166127f0565b600101611961565b505050505050565b5f818152673ec412a9852d173d60c11b601c526020902081018101546001600160a01b031680611b4f5763ceea21b65f526004601cfd5b919050565b611b5c612710565b611b668282613178565b60025460405163ffffffff909116905f907f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c908290a35050565b6060600680546112c990615941565b611bb7612710565b63ffffffff811615801590611bd757508063ffffffff168263ffffffff16115b15611bf557604051636fcae6fb60e11b815260040160405180910390fd5b600254600160781b900463ffffffff16158015611c24575060025463ffffffff838116600160781b9092041614155b8015611c3157505f5460ff165b15611c3e57611c3e612fec565b6002805467ffffffffffffffff60781b1916600160781b63ffffffff85811691820263ffffffff60981b191692909217600160981b928516928302179092556040805192835260208301919091527f60cc761f5c763ae5863f87b5c0cda371ffe55fb8830c9800662b5fc6af1d506291015b60405180910390a15050565b5f81611ccf57638f4eb6045f526004601cfd5b673ec412a9852d173d60c11b601c52815f5263ffffffff601c600c2054169050919050565b611cfc612710565b6113bf5f6131e7565b611d0d612710565b6001600160a01b03831630148015611d2f57506018546001600160a01b031615155b15611d43576018546001600160a01b031691505b61139b838383612a39565b611d56612710565b6113bf613224565b611d66612710565b611d9b60135f5b601081049190910154601354600f9092166002026101000a900461ffff908116916201000090041683613260565b6019546001600160a01b031615611dbd576019546001600160a01b0316611dbf565b815b915061139b83838361329b565b611dd4612710565b61129881600161333e565b611de7612710565b60018190556040518181527fae46785019700e30375a5d7b4f91e32f8060ef085111f896ebf889450aa2ab5a906020015b60405180910390a150565b611e2b612710565b611298816133da565b6060600580546112c990615941565b611e4b612710565b8063ffffffff165f03611e70576040516252b55360e31b815260040160405180910390fd5b600280546bffffffff00000000000000001916600160401b63ffffffff8416908102919091179091556040519081527e3f75ba46b436f533c68d0ff19d45100dc235071f7ad41419fa3ff1349fa4a190602001611e18565b61129833825f6126ee565b801515905081601c52670a5a2e7a00000000600852335f52806030600c2055805f528160601b60601c337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160205fa35050565b611f2e612710565b600d54600254611f4e9163ffffffff90811691600160201b9004166158fe565b63ffffffff168163ffffffff161015611f7a576040516334b2b7a360e11b815260040160405180910390fd5b61129881613416565b611f8e858585611548565b833b1561125b5761125b85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061303d92505050565b611fde612710565b8062ffffff165f03612002576040516252b55360e31b815260040160405180910390fd5b6002805462ffffff60601b1916600160601b62ffffff8416908102919091179091556040519081527f826b69f82e019051d294560c4a22f59db6f3e9cb416c30e7cfc8ad187c639cad90602001611e18565b61205c612710565b61206760135f611d6d565b6019546001600160a01b031615612089576019546001600160a01b031661208b565b815b915061125f8282612ab4565b61209f612710565b6015546120b29061ffff166127106159a6565b61ffff168161ffff1611156120da576040516307a9fdf960e01b815260040160405180910390fd5b611298816134a5565b6120eb612710565b6113bf613510565b606061211c825f818152673ec412a9852d173d60c11b601c52602090208101015460601b151590565b1561212a576112b482613555565b60405163677510db60e11b815260040160405180910390fd5b61214b612710565b611298815f61333e565b60178281548110612164575f80fd5b905f5260205f20018160028110612179575f80fd5b60109182820401919006600202915091509054906101000a900461ffff1681565b63409feecd1980546003825580156121d05760018160011c14303b106121c75763f92ee8a95f526004601cfd5b818160ff1b1b91505b506122816121e160208401846159c1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506122229250505060408501856159c1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506122669250505060c0860160a08701615650565b61227660a08701608088016156db565b898760c001356136dd565b601280546001600160a01b0319166001600160a01b0386161790556122ad610100830160e084016155a6565b601a80546001600160a01b0319166001600160a01b03929092169190911790556122dd6013608085016002614cd5565b506122eb6040840184615a03565b6122f791601491614d6e565b506123056060840184615a48565b61231191601791614dbf565b506123296123226060840184615a03565b5f80613848565b6040516001600160a01b038516907f34593f920bfcf37206c89179473a1c6e2019932e2423507bd7b37bcc667c5e83905f90a2801561125b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15050505050565b6060600980546112c990615941565b63409feecd1980546003825580156123dc5760018160011c14303b106123d35763f92ee8a95f526004601cfd5b818160ff1b1b91505b506123eb8787878787876136dd565b8015612420576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b50505050505050565b611b10868686868686613a82565b61243f612710565b63389a75e1600c52805f526020600c20805442111561246557636f5e88185f526004601cfd5b5f9055611298816131e7565b612479612710565b8060601b61248e57637448fbae5f526004601cfd5b611298816131e7565b3068929eee149b4bd2126854036124b55763ab143c065f526004601cfd5b3068929eee149b4bd212685561250f5f6124d2638b78c6d8195490565b6001600160a01b03161480156124f257506018546001600160a01b031615155b6124fc5782612509565b6018546001600160a01b03165b82613aa7565b3868929eee149b4bd21268555050565b612527612710565b8061ffff168261ffff1611156125505760405163561ce9bb60e01b815260040160405180910390fd5b601a5461ffff600160a01b909104811690831610801561257e5750600254600160201b900463ffffffff1615155b1561259c5760405163f3b9a23560e01b815260040160405180910390fd5b61174584848484613848565b5f6125b4848484613beb565b905081838509156125d457600101806125d45763ae47f7025f526004601cfd5b9392505050565b5f632a55205a60e083901c9081146301ffc9a791909114176112b4565b5f635b5e139f60e01b6001600160e01b0319831614806126285750632483248360e11b6001600160e01b03198316145b806112b457506112b4826301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b5f1960601c82811692508381169350815f5283673ec412a9852d173d60c11b17601c5260205f2082018201805482169150816126975763ceea21b65f526004601cfd5b8185148515176126bb57815f526030600c20546126bb57634b6e7f185f526004601cfd5b6001018390558183827f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f38a450505050565b601a5461270590600160a01b900461ffff16612b3a565b61139b838383612ca3565b638b78c6d8195433146113bf576382b429005f526004601cfd5b5f5b828110156127ae5781156127725761276c84848381811061274f5761274f615979565b905060200201602081019061276491906155a6565b600c90613c79565b506127a6565b6127a484848381811061278757612787615979565b905060200201602081019061279c91906155a6565b600c90613dc4565b505b60010161272c565b508015157fee9d89892c5dcf46d5666e29b34f4c774422b5f43f738b564b85938b6ede416484846040516127e3929190615a8d565b60405180910390a2505050565b6127fe8b8989878a8a613f02565b5f60ff8c161561280e578b612840565b600d805460049061282890600160201b900460ff16615ad8565b91906101000a81548160ff021916908360ff16021790555b60ff8082165f908152600e602052604090209192508d161580159061287457506002810154600160201b900463ffffffff16155b15612892576040516306661b8760e51b815260040160405180910390fd5b8963ffffffff165f036128b7576040516252b55360e31b815260040160405180910390fd5b600281015460ff8381165f908152600f60205260409020546128f892600160a01b810490921691889163ffffffff90811691600160401b9004168d88613ff0565b8b815f0181905550898160020160046101000a81548163ffffffff021916908363ffffffff160217905550888160020160086101000a81548163ffffffff021916908363ffffffff16021790555085816002015f6101000a81548163ffffffff021916908363ffffffff1602179055508781600201600c6101000a81548163ffffffff021916908363ffffffff160217905550868160020160106101000a81548163ffffffff021916908363ffffffff1602179055508a8160010181905550848160020160146101000a81548160ff021916908315150217905550838160020160156101000a81548160ff0219169083151502179055508160ff167f1bcac6ae8e7d846f60d0b21c37fa4069e2eb2c1b503726263e7e8fb665c0032f82604051612a229190615af6565b60405180910390a250505050505050505050505050565b60408051602081019091525f815261139b906001600160a01b038516903090859085906140f0565b600a5460ff1680612a7f57505f828152600b602052604090205460ff165b15612a9d57604051639d4fb00360e01b815260040160405180910390fd5b5f82815260076020526040902061139b8282615be7565b612abf5f8383614137565b612ac9828261418d565b601180546dffffffffffffffffffffffff00001916620100006001600160601b038416908102919091179091556040519081526001600160a01b038316905f907ffdf8f1db17a2bc2b4c773f9f43c6cc82be22922d0ccc195781c1a7b02e7eefb29060200160405180910390a35050565b345f819003612b47575050565b6014545f805b8281101561125b575f60148281548110612b6957612b69615979565b5f918252602090912001546001600160a01b031690506002198101612ba957506018546001600160a01b0316612ba286866127106125a8565b9250612c2f565b5f196001600160a01b03821601612bcc57506012546001600160a01b0316612bec565b6003196001600160a01b03821601612bec5750601a546001600160a01b03165b612c2c60168381548110612c0257612c02615979565b5f9182526020909120601082040154600f9091166002026101000a900461ffff16866127106125a8565b92505b6001600160a01b03811615801590612c4657505f83115b15612c9a576040516001600160a01b0382169084905f81818185875af1925050503d805f8114612c91576040519150601f19603f3d011682016040523d82523d5f602084013e612c96565b606091505b5050505b50600101612b4d565b3068929eee149b4bd212685403612cc15763ab143c065f526004601cfd5b3068929eee149b4bd21268555f612cd7836141d6565b9050612ce38285614203565b335f81815260036020908152604091829020805463ffffffff19811663ffffffff9182168701821617909155915191841682527f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe910160405180910390a2612d4b8482614344565b503868929eee149b4bd2126855505050565b612d66816143ee565b60ff81165f908152600e6020526040812060028101549091600160201b90910463ffffffff169003612dab576040516306661b8760e51b815260040160405180910390fd5b600281015460ff8381165f908152600f6020526040812054612deb93600160a01b81049093169263ffffffff91821691600160401b909104168280613ff0565b60028101805467ffffffff000000001916905560405160ff8316907f9721a05f3d313e08a70184d79d2544045eaeb13e5c0d384a63529406b15b7297905f90a25050565b63978aab926004525f818152602481206060915068fbb67fda52d4bfb8bf81548060a01b60a01c6040519450846020018260601c9250838314158302815281612ebd578215612eb857600191508185015460601c92508215612eb8578284141590920260208301525060028381015460601c918215612eb8576003915083831415830260408201525b612eed565b600191821c915b82811015612eeb578581015460601c858114158102600583901b8401529350600101612ec4565b505b8186528160051b81016040525050505050919050565b612f0b61442b565b612f13614460565b6011805460ff60701b1916600160701b1790556040517f0e8cb6b5333e3dfc6cc3e4818dcfc3a58d8396eacf37cd8089cd59fcb8a6c9e6905f90a1565b600a5460ff1615612f7457604051639d4fb00360e01b815260040160405180910390fd5b5f818152600b60205260408120805460ff19166001179055612f9582613555565b5f838152600760205260409020909150612faf8282615be7565b50817fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b5565720782604051612fe09190614fd0565b60405180910390a25050565b612ff461448b565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015613084578060c08401826020870160045afa505b60208360a48301601c86015f8a5af16130a5573d156130a5573d5f843e3d83fd5b508060e01b825114611b105763d1a57ed65f526004601cfd5b6130c661442b565b6130d75f68aa4ec00224afccfdb755565b5f80805268aa4ec00224afccfdb76020527f913817da311d664dd3395c9b93b1f96a4af2b60ec505387b3ac50cc4468f3488556040517fadc793193bdb754feda6f23da65c56c9068c168dc139151287691fb9d34aeb02905f90a1565b5f6370a0823160e01b5f528160045260205f60245f865afa3d602014168061315a575f80fd5b50505f5192915050565b61139b6001600160a01b03841683836144ad565b600a5460ff161561319c57604051639d4fb00360e01b815260040160405180910390fd5b60066131a88382615be7565b5060086131b58282615be7565b507f3316401ffd47efccb0aefc7f765fd68f5d5db424637c171a26e69242f26d15968282604051611cb0929190615ca2565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b61322c6144e7565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130203390565b8261ffff168161ffff16108061327d57508161ffff168161ffff16115b1561139b5760405163561ce9bb60e01b815260040160405180910390fd5b825f036132ba576040516252b55360e31b815260040160405180910390fd5b806001600160601b03165f036132e5575f83815268aa4ec00224afccfdb760205260408120556132f0565b6132f0838383614137565b6040516001600160601b03821681526001600160a01b0383169084907ffdf8f1db17a2bc2b4c773f9f43c6cc82be22922d0ccc195781c1a7b02e7eefb29060200160405180910390a3505050565b613347826143ee565b60ff82165f908152600e6020526040812060028101549091600160201b90910463ffffffff16900361338c576040516306661b8760e51b815260040160405180910390fd5b60028101805460ff60a81b1916600160a81b8415150217905560405160ff8416907f1bcac6ae8e7d846f60d0b21c37fa4069e2eb2c1b503726263e7e8fb665c0032f906127e3908490615af6565b60096133e68282615be7565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac3737881604051611e189190614fd0565b60025463ffffffff90811690821611801561343f5750600254600160201b900463ffffffff1615155b1561345d57604051632cdb04a160e21b815260040160405180910390fd5b6002805463ffffffff191663ffffffff83169081179091556040519081527f72b676240fb8e6cb66b796a6127727940d42a46c91641339ce280f7517b6568c90602001611e18565b61271061ffff821611156134cc576040516307a9fdf960e01b815260040160405180910390fd5b6011805461ffff191661ffff83169081179091556040519081527f86d4ccf683b2dc5a92d3b3a8e1c54b8452b39a7aee12580a63a24689d5783d9390602001611e18565b600a805460ff1916600117905560025460405163ffffffff909116905f907f3a63124eb820231a2cc41b08577f1202c627891f19cfc3b388bd63cc83734320908290a3565b5f8181526007602052604081208054606092919061357290615941565b80601f016020809104026020016040519081016040528092919081815260200182805461359e90615941565b80156135e95780601f106135c0576101008083540402835291602001916135e9565b820191905f5260205f20905b8154815290600101906020018083116135cc57829003601f168201915b505050505090505f815111156135ff5792915050565b5f6006805461360d90615941565b80601f016020809104026020016040519081016040528092919081815260200182805461363990615941565b80156136845780601f1061365b57610100808354040283529160200191613684565b820191905f5260205f20905b81548152906001019060200180831161366757829003601f168201915b505050505090505f8151116136a75760405180602001604052805f8152506136d5565b806136b18561450a565b60086040516020016136c593929190615ccf565b6040516020818303038152906040525b949350505050565b6136e561454c565b6136ed613224565b5f805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff805463ffffffff1916905561372a82614568565b613738828461ffff16612ab4565b60046137448782615be7565b5060056137518682615be7565b506001819055600280546affffffffffffffffffffff60601b19600160401b63ffffffff88169081026bffffffff00000000ffffffff19909316179190911716600160601b1790556040517f11ede5062d284bb7f6e5f5c9179f4ee2c3175d7480c253d54e909fc54cb23a7a906137cb9088908890615ca2565b60405180910390a160405163ffffffff851681527f72b676240fb8e6cb66b796a6127727940d42a46c91641339ce280f7517b6568c9060200160405180910390a16040518181527fae46785019700e30375a5d7b4f91e32f8060ef085111f896ebf889450aa2ab5a906020015b60405180910390a1505050505050565b6014545f90815b8181101561397f575f87878381811061386a5761386a615979565b905060200201602081019061387f91906156db565b90505f6017838154811061389557613895615979565b5f9182526020822001546017805461ffff909216935090859081106138bc576138bc615979565b5f918252602082200154601480546201000090920461ffff16935090869081106138e8576138e8615979565b5f918252602090912001546001600160a01b031690506002198101613958575f8961ffff1611613918578361391a565b885b98505f8861ffff161161392d578361392f565b875b975061393c83838b613260565b61394783838a613260565b6139518888615d6d565b9650613970565b613963838386613260565b61396d8488615d6d565b96505b5050505080600101905061384f565b506011546139939061ffff166127106159a6565b61ffff168261ffff1611156139bb5760405163561ce9bb60e01b815260040160405180910390fd5b601a805463ffffffff60a01b1916600160a01b61ffff8781169190910261ffff60b01b191691909117600160b01b86831602179091556015805461ffff1916918416919091179055613a0f60168787614e0d565b506040805161ffff8087168252851660208201527f54b34cdc2ab0cefc3e56dcbeec585afcecf42a8f5dcd75a3e3947305f73cab30910160405180910390a17f17924b21b17340e99800e286ad50a1f49c80ecea950f0e3371c16d1ba513b1cd6014878760405161383893929190615d88565b601a54613a9990600160a01b900461ffff16612b3a565b611b108686868686866145a3565b6001600160a01b038216613acd576040516252b55360e31b815260040160405180910390fd5b5f613adb638b78c6d8195490565b90506001600160a01b03811615801581613afe57506001600160a01b0382163314155b15613b1b576040516282b42960e81b815260040160405180910390fd5b4780841180613b275750815b15613b30578093505b5f856001600160a01b0316856040515f6040518083038185875af1925050503d805f8114613b79576040519150601f19603f3d011682016040523d82523d5f602084013e613b7e565b606091505b5050905080613ba0576040516312171d8360e31b815260040160405180910390fd5b856001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436486604051613bdb91815260200190565b60405180910390a2505050505050565b82820281838583041485151702613c72575f198385098181108201900382848609835f038416828511613c255763ae47f7025f526004601cfd5b93849004938382119092035f8390038390046001010292030417600260038302811880840282030280840282030280840282030280840282030280840282030280840290910302026125d4565b0492915050565b63978aab926004525f828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be198301613cb45763f5a267f15f526004601cfd5b82613cc65768fbb67fda52d4bfb8bf92505b80546001600160601b0381168260205280613d88578160601c80613cf4578560601b84556001945050613dbb565b858103613d015750613dbb565b600184015460601c80613d22578660601b6001860155600195505050613dbb565b868103613d30575050613dbb565b600285015460601c80613d52578760601b600287015560019650505050613dbb565b878103613d6157505050613dbb565b5f928352604080842060019055918352818320600290558252902060039055506007908117905b845f5260405f208054613db9578160011c91508560601b828501558160010181558260020184556001945050613dbb565b505b50505092915050565b63978aab926004525f828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be198301613dff5763f5a267f15f526004601cfd5b82613e115768fbb67fda52d4bfb8bf92505b80546001600160601b03811680613e8b5760019350848260601c03613e495760018301805484556002840180549091555f9055613dbb565b84600184015460601c03613e6a5760028301805460018501555f9055613dbb565b84600284015460601c03613e83575f6002840155613dbb565b5f9350613dbb565b82602052845f5260405f20805480613ea4575050613dbb565b60018360011c039250826001820314613ed9578285015460601c8060601b600183038701555f84870155805f52508060405f20555b5083546bffffffffffffffffffffffff1916600192831b1782179093555f909255509392505050565b600d5460ff600160201b90910481169087161115613f3357604051636469c71560e01b815260040160405180910390fd5b63ffffffff84161580613f4a575063ffffffff8516155b80613f59575063ffffffff8316155b15613f76576040516252b55360e31b815260040160405180910390fd5b60ff86165f908152600f602052604090205463ffffffff9081169085161015613fb25760405163123e2ca160e21b815260040160405180910390fd5b63ffffffff811615801590613fd257508063ffffffff168263ffffffff16115b15611b1057604051636b664f9360e11b815260040160405180910390fd5b85158015613ffc575084155b611b105785801561400a5750845b156140a0578263ffffffff168263ffffffff160315611b10578263ffffffff168263ffffffff16111561407d57600d805463ffffffff19811685850363ffffffff928316018216908117909255821610156140785760405163de1552ff60e01b815260040160405180910390fd5b611b10565b600d805463ffffffff19811684860363ffffffff92831603909116179055611b10565b84156140c857600d805463ffffffff808216878603011663ffffffff19909116179055611b10565b600d805485850363ffffffff808316919091031663ffffffff19909116179055505050505050565b6040518151808015614100575f80fd5b632142170760e11b5f528660045285602452846044525f8060645f808c5af1614127575f80fd5b505060405250505f606052505050565b6001600160601b0316612710808211156141585763350a88b35f526004601cfd5b8260601b8061416e5763b4457eaa5f526004601cfd5b845f5268aa4ec00224afccfdb760205282811760405f20555050505050565b6001600160601b0316612710808211156141ae5763350a88b35f526004601cfd5b8260601b806141c45763b4457eaa5f526004601cfd5b90911768aa4ec00224afccfdb7555050565b5f6141e0826146d7565b600254909150611b4f9063ffffffff80841691600160201b810482169116614833565b5f34118015614217575060115461ffff1615155b801561422b57506001600160a01b03821615155b1561125f576001600160a01b0382163314806142585750806001600160a01b0316826001600160a01b0316145b1561427657604051632af47b8760e11b815260040160405180910390fd5b6011545f9061428c9061ffff1634612710614876565b90505f836001600160a01b0316826040515f6040518083038185875af1925050503d805f81146142d7576040519150601f19603f3d011682016040523d82523d5f602084013e6142dc565b606091505b50509050806142fe576040516312171d8360e31b815260040160405180910390fd5b60405182815233906001600160a01b038616907faeecfcda1271d292db728294b8ae465871ec039d51404caf49a7eb0ade51770a9060200160405180910390a350505050565b6001600160a01b038216158061435e575063ffffffff8116155b1561437b576040516252b55360e31b815260040160405180910390fd5b614384826148a3565b600254600160201b900463ffffffff165f5b8263ffffffff168110156143bc576143b48483600101935083614936565b600101614396565b50506002805463ffffffff600160201b80830482169094011690920267ffffffff000000001990921691909117905550565b60ff8116158061440d5750600d5460ff600160201b9091048116908216115b1561129857604051636469c71560e01b815260040160405180910390fd5b5f6144365f8061168d565b5090506001600160a01b038116611298576040516302a9bde760e51b815260040160405180910390fd5b601154600160701b900460ff16156113bf576040516308f6281560e41b815260040160405180910390fd5b5f5460ff166113bf57604051638dfc202b60e01b815260040160405180910390fd5b63a9059cbb60e01b5f52816004528060245260205f60445f80875af15f5160203d14163d151716806144dd575f80fd5b505f602452505050565b5f5460ff16156113bf5760405163d93c066560e01b815260040160405180910390fd5b60606080604051019050602081016040525f8152805f19835b928101926030600a8206018453600a900480614523575050819003601f19909101908152919050565b63409feecd1980546001166112985763d7e6bcf85f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b3068929eee149b4bd2126854036145c15763ab143c065f526004601cfd5b3068929eee149b4bd21268556145d78184614203565b5f805f6145e6898989886149d2565b9250925092508234101561460d5760405163cd1c886760e01b815260040160405180910390fd5b60025463ffffffff8082169161462c918591600160201b9004166158fe565b63ffffffff16111561465157604051632cdb04a160e21b815260040160405180910390fd5b80614676576002546146769063ffffffff80851691600160201b810482169116614833565b60405163ffffffff8316815260ff88169033907f70517e492ee7345b5126062d575418d36ff38ca3ba226c05f26259bbd6d5d65e9060200160405180910390a36146c08683614344565b5050503868929eee149b4bd2126855505050505050565b5f6146e06144e7565b816001546146ee9190615e14565b34101561470e5760405163cd1c886760e01b815260040160405180910390fd5b6002545f9061472990600160601b900462ffffff1684615e14565b60025490915063ffffffff8082169161474b918491600160201b900416615e2b565b111561476a57604051632cdb04a160e21b815260040160405180910390fd5b600254335f9081526003602052604090205463ffffffff600160401b90920482169161479891849116615e2b565b11156147b75760405163e67c535b60e01b815260040160405180910390fd5b600254600160781b900463ffffffff16158015906147e35750600254600160781b900463ffffffff1642105b806148155750600254600160981b900463ffffffff16158015906148155750600254600160981b900463ffffffff1642115b156112b45760405163a7c9c67f60e01b815260040160405180910390fd5b600d5463ffffffff166148468383615e3e565b6148509190615e3e565b63ffffffff1683111561139b5760405163072f6e4f60e11b815260040160405180910390fd5b828202831584820484141782026148945763ad251c275f526004601cfd5b81810615159190040192915050565b5f6148ae600c612e2f565b90505f805b8251811015611745576148f1338483815181106148d2576148d2615979565b60200260200101516001600160a01b031661313490919063ffffffff16565b8201915061490b848483815181106148d2576148d2615979565b90910190811561492e576040516309550c7760e01b815260040160405180910390fd5b6001016148b3565b8160601b60601c9150805f52673ec412a9852d173d60c11b601c5260205f208101810180548060601b156149715763c991cbb15f526004601cfd5b831790555f829052601c600c20805460010163ffffffff811684026149a55767ea553b3401336cea841560021b526004601cfd5b905580825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8138a45050565b60ff8083165f908152600e60209081526040808320815161012081018352815481526001820154938101939093526002015463ffffffff80821692840192909252600160201b810482166060840152600160401b810482166080840152600160601b8104821660a0840152600160801b810490911660c0830152600160a01b81048416151560e0830152600160a81b900490921615801561010084015290918291829190614a9357604051637dd7e7fb60e01b815260040160405180910390fd5b604080513360208201525f910160408051601f1981840301815290829052614abd91602001615e5b565b60408051808303601f190181528282528051602091820120818401528151808403820181529282019091528151910120825190915015801590614b0c5750614b0a8989845f015184614c9d565b155b15614b2a57604051637c75aa6f60e11b815260040160405180910390fd5b6040820151614b399087615e76565b60ff88165f9081526010602090815260408083203384529091529020805463ffffffff838116909101918290556060850151929650919091161015614b915760405163cc18ae7760e01b815260040160405180910390fd5b60ff87165f908152600f60205260409020805463ffffffff19811663ffffffff918216870182169081179092556080840151161015614be35760405163050d863360e11b815260040160405180910390fd5b8160e0015115614c0a57600d805463ffffffff8082168790031663ffffffff199091161790555b60a082015163ffffffff1615801590614c2c57508160a0015163ffffffff1642105b80614c54575060c082015163ffffffff1615801590614c5457508160c0015163ffffffff1642115b15614c725760405163265fec6360e01b815260040160405180910390fd5b8563ffffffff168260200151614c889190615e14565b94508160e00151925050509450945094915050565b5f8315614ccd578360051b8501855b803580851160051b94855260209485185260405f209301818110614cac5750505b501492915050565b600183019183908215614d5e579160200282015f5b83821115614d2e57833561ffff1683826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302614cea565b8015614d5c5782816101000a81549061ffff0219169055600201602081600101049283019260010302614d2e565b505b50614d6a929150614e76565b5090565b828054828255905f5260205f20908101928215614d5e579160200282015b82811115614d5e5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190614d8c565b828054828255905f5260205f20908101928215614e01579160400282015b82811115614e0157614df182846002614cd5565b5091604001919060010190614ddd565b50614d6a929150614e77565b828054828255905f5260205f2090600f01601090048101928215614d5e579160200282015f83821115614d2e57833561ffff1683826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302614cea565b5b80821115614d6a575f8155600101614e77565b803560ff81168114611b4f575f80fd5b5f60208284031215614eaa575f80fd5b6125d482614e8a565b5f610120820190508251825260208301516020830152604083015163ffffffff808216604085015280606086015116606085015250506080830151614f00608084018263ffffffff169052565b5060a0830151614f1860a084018263ffffffff169052565b5060c0830151614f3060c084018263ffffffff169052565b5060e0830151614f4460e084018215159052565b5061010083810151801515848301525b505092915050565b5f60208284031215614f6c575f80fd5b81356001600160e01b0319811681146125d4575f80fd5b5f5b83811015614f9d578181015183820152602001614f85565b50505f910152565b5f8151808452614fbc816020860160208601614f83565b601f01601f19169290920160200192915050565b602081525f6125d46020830184614fa5565b5f60208284031215614ff2575f80fd5b5035919050565b80356001600160a01b0381168114611b4f575f80fd5b5f8060408385031215615020575f80fd5b61502983614ff9565b946020939093013593505050565b5f805f60608486031215615049575f80fd5b61505284614ff9565b92506020840135915061506760408501614ff9565b90509250925092565b5f8083601f840112615080575f80fd5b5081356001600160401b03811115615096575f80fd5b6020830191508360208260051b85010111156150b0575f80fd5b9250929050565b80358015158114611b4f575f80fd5b5f805f604084860312156150d8575f80fd5b83356001600160401b038111156150ed575f80fd5b6150f986828701615070565b90945092506150679050602085016150b7565b803563ffffffff81168114611b4f575f80fd5b5f805f805f805f805f806101408b8d031215615139575f80fd5b8a35995061514960208c01614e8a565b985060408b0135975061515e60608c0161510c565b965061516c60808c0161510c565b955061517a60a08c0161510c565b945061518860c08c0161510c565b935061519660e08c0161510c565b92506151a56101008c016150b7565b91506151b46101208c016150b7565b90509295989b9194979a5092959850565b5f805f805f608086880312156151d9575f80fd5b6151e286614ff9565b94506151f060208701614ff9565b93506040860135925060608601356001600160401b0380821115615212575f80fd5b818801915088601f830112615225575f80fd5b813581811115615233575f80fd5b896020828501011115615244575f80fd5b9699959850939650602001949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261527a575f80fd5b81356001600160401b038082111561529457615294615257565b604051601f8301601f19908116603f011681019082821181831017156152bc576152bc615257565b816040528381528660208588010111156152d4575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215615304575f80fd5b8235915060208301356001600160401b03811115615320575f80fd5b61532c8582860161526b565b9150509250929050565b5f8060408385031215615347575f80fd5b61535083614ff9565b915061535e60208401614ff9565b90509250929050565b5f805f60608486031215615379575f80fd5b61538284614ff9565b925061539060208501614ff9565b9150604084013590509250925092565b5f80604083850312156153b1575f80fd5b50508035926020909101359150565b803561ffff81168114611b4f575f80fd5b5f805f80608085870312156153e4575f80fd5b6153ed85614ff9565b93506020850135925061540260408601614ff9565b9150615410606086016153c0565b905092959194509250565b5f805f6060848603121561542d575f80fd5b61543684614ff9565b925060208401359150615067604085016153c0565b602080825282518282018190525f9190848201906040850190845b8181101561548b5783516001600160a01b031683529284019291840191600101615466565b50909695505050505050565b5f805f80604085870312156154aa575f80fd5b84356001600160401b03808211156154c0575f80fd5b6154cc88838901615070565b909650945060208701359150808211156154e4575f80fd5b818701915087601f8301126154f7575f80fd5b813581811115615505575f80fd5b8860206101208302850101111561551a575f80fd5b95989497505060200194505050565b5f806040838503121561553a575f80fd5b82356001600160401b0380821115615550575f80fd5b61555c8683870161526b565b93506020850135915080821115615571575f80fd5b5061532c8582860161526b565b5f806040838503121561558f575f80fd5b6155988361510c565b915061535e6020840161510c565b5f602082840312156155b6575f80fd5b6125d482614ff9565b5f80604083850312156155d0575f80fd5b61535083614e8a565b80356001600160601b0381168114611b4f575f80fd5b5f805f60608486031215615601575f80fd5b8335925061561160208501614ff9565b9150615067604085016155d9565b5f6020828403121561562f575f80fd5b81356001600160401b03811115615644575f80fd5b6136d58482850161526b565b5f60208284031215615660575f80fd5b6125d48261510c565b5f806040838503121561567a575f80fd5b61568383614ff9565b915061535e602084016150b7565b5f602082840312156156a1575f80fd5b813562ffffff811681146125d4575f80fd5b5f80604083850312156156c4575f80fd5b6156cd83614ff9565b915061535e602084016155d9565b5f602082840312156156eb575f80fd5b6125d4826153c0565b5f805f8060808587031215615707575f80fd5b61571085614ff9565b935061571e60208601614ff9565b925060408501356001600160401b0380821115615739575f80fd5b9086019060e0828903121561574c575f80fd5b90925060608601359080821115615761575f80fd5b5085016101008188031215615774575f80fd5b939692955090935050565b5f805f805f8060c08789031215615794575f80fd5b86356001600160401b03808211156157aa575f80fd5b6157b68a838b0161526b565b975060208901359150808211156157cb575f80fd5b506157d889828a0161526b565b9550506157e76040880161510c565b93506157f5606088016153c0565b925061580360808801614ff9565b915060a087013590509295509295509295565b5f805f805f8060a0878903121561582b575f80fd5b86356001600160401b03811115615840575f80fd5b61584c89828a01615070565b909750955061585f905060208801614e8a565b935061586d60408801614ff9565b925061587b6060880161510c565b915061588960808801614ff9565b90509295509295509295565b5f805f80606085870312156158a8575f80fd5b84356001600160401b038111156158bd575f80fd5b6158c987828801615070565b90955093506158dc9050602086016153c0565b9150615410604086016153c0565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff81811683821601908082111561591b5761591b6158ea565b5092915050565b5f8261593c57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061595557607f821691505b60208210810361597357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561599d575f80fd5b6125d4826150b7565b61ffff82811682821603908082111561591b5761591b6158ea565b5f808335601e198436030181126159d6575f80fd5b8301803591506001600160401b038211156159ef575f80fd5b6020019150368190038213156150b0575f80fd5b5f808335601e19843603018112615a18575f80fd5b8301803591506001600160401b03821115615a31575f80fd5b6020019150600581901b36038213156150b0575f80fd5b5f808335601e19843603018112615a5d575f80fd5b8301803591506001600160401b03821115615a76575f80fd5b6020019150600681901b36038213156150b0575f80fd5b60208082528181018390525f908460408401835b86811015615acd576001600160a01b03615aba84614ff9565b1682529183019190830190600101615aa1565b509695505050505050565b5f60ff821660ff8103615aed57615aed6158ea565b60010192915050565b8154815260018201546020820152600282015463ffffffff808216604084015261012083019190615b3460608501828460201c1663ffffffff169052565b615b4b60808501828460401c1663ffffffff169052565b615b6260a08501828460601c1663ffffffff169052565b615b7960c08501828460801c1663ffffffff169052565b50615b8e60e0840160ff8360a01c1615159052565b61591b610100840160ff8360a81c1615159052565b601f82111561139b57805f5260205f20601f840160051c81016020851015615bc85750805b601f840160051c820191505b8181101561125b575f8155600101615bd4565b81516001600160401b03811115615c0057615c00615257565b615c1481615c0e8454615941565b84615ba3565b602080601f831160018114615c47575f8415615c305750858301515b5f19600386901b1c1916600185901b178555611b10565b5f85815260208120601f198616915b82811015615c7557888601518255948401946001909101908401615c56565b5085821015615c9257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b604081525f615cb46040830185614fa5565b8281036020840152615cc68185614fa5565b95945050505050565b5f84516020615ce2828560208a01614f83565b855191840191615cf6818460208a01614f83565b85549201915f90615d0681615941565b60018281168015615d1e5760018114615d3357615d5d565b60ff1984168752821515830287019450615d5d565b895f5260205f205f5b84811015615d5557815489820152908301908701615d3c565b505082870194505b50929a9950505050505050505050565b61ffff81811683821601908082111561591b5761591b6158ea565b5f6040820160408352808654808352606085019150875f5260209250825f205f5b82811015615dce5781546001600160a01b031684529284019260019182019101615da9565b50505083810382850152848152859082015f5b86811015615e085761ffff615df5846153c0565b1682529183019190830190600101615de1565b50979650505050505050565b80820281158282048414176112b4576112b46158ea565b808201808211156112b4576112b46158ea565b63ffffffff82811682821603908082111561591b5761591b6158ea565b5f8251615e6c818460208701614f83565b9190910192915050565b63ffffffff818116838216028082169190828114614f5457614f546158ea56fea164736f6c6343000817000a