[ { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "CannotBurnImmediately", "type": "error" }, { "inputs": [], "name": "CreateTierIsFrozen", "type": "error" }, { "inputs": [], "name": "ExceedsAvailableSupply", "type": "error" }, { "inputs": [], "name": "InvalidFundingRecipient", "type": "error" }, { "inputs": [], "name": "InvalidMaxMintableRange", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "InvalidRoyaltyBPS", "type": "error" }, { "inputs": [], "name": "InvalidTokenTier", "type": "error" }, { "inputs": [], "name": "MetadataIsFrozen", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintHasConcluded", "type": "error" }, { "inputs": [], "name": "MintNotConcluded", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "MintsAlreadyExist", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TierAlreadyExists", "type": "error" }, { "inputs": [], "name": "TierDoesNotExist", "type": "error" }, { "inputs": [], "name": "TierIsFrozen", "type": "error" }, { "inputs": [], "name": "TierMintsAlreadyExist", "type": "error" }, { "inputs": [], "name": "TierQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TokenIdsNotStrictlyAscending", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "ZeroTiersProvided", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "tier", "type": "uint8" }, { "indexed": false, "internalType": "address[]", "name": "to", "type": "address[]" }, { "indexed": false, "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" } ], "name": "Airdropped", "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": "string", "name": "baseURI", "type": "string" } ], "name": "BaseURISet", "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": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "contractURI", "type": "string" } ], "name": "ContractURISet", "type": "event" }, { "anonymous": false, "inputs": [], "name": "CreateTierFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "tier", "type": "uint8" }, { "indexed": false, "internalType": "uint32", "name": "cutoff", "type": "uint32" } ], "name": "CutoffTimeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "caller", "type": "address" } ], "name": "ERC20Withdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "caller", "type": "address" } ], "name": "ETHWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "FundingRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "tier", "type": "uint8" }, { "indexed": false, "internalType": "uint32", "name": "lower", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "upper", "type": "uint32" } ], "name": "MaxMintableRangeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "metadataModule", "type": "address" }, { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "contractURI", "type": "string" } ], "name": "MetadataFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "metadataModule", "type": "address" } ], "name": "MetadataModuleSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "tier", "type": "uint8" }, { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "MintRandomnessEnabledSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "tier", "type": "uint8" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fromTokenId", "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": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "RolesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "bps", "type": "uint16" } ], "name": "RoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "metadataModule", "type": "address" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "contractURI", "type": "string" }, { "internalType": "address", "name": "fundingRecipient", "type": "address" }, { "internalType": "uint16", "name": "royaltyBPS", "type": "uint16" }, { "internalType": "bool", "name": "isMetadataFrozen", "type": "bool" }, { "internalType": "bool", "name": "isCreateTierFrozen", "type": "bool" }, { "components": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "maxMintableLower", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableUpper", "type": "uint32" }, { "internalType": "uint32", "name": "cutoffTime", "type": "uint32" }, { "internalType": "bool", "name": "mintRandomnessEnabled", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "internalType": "struct ISoundEditionV2_1.TierCreation[]", "name": "tierCreations", "type": "tuple[]" } ], "indexed": false, "internalType": "struct ISoundEditionV2_1.EditionInitialization", "name": "init", "type": "tuple" } ], "name": "SoundEditionInitialized", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "maxMintableLower", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableUpper", "type": "uint32" }, { "internalType": "uint32", "name": "cutoffTime", "type": "uint32" }, { "internalType": "bool", "name": "mintRandomnessEnabled", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "indexed": false, "internalType": "struct ISoundEditionV2_1.TierCreation", "name": "creation", "type": "tuple" } ], "name": "TierCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "TierFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BPS_DENOMINATOR", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GA_TIER", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "V2_1", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "airdrop", "outputs": [ { "internalType": "uint256", "name": "fromTokenId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "splitMain", "type": "address" }, { "internalType": "bytes", "name": "splitData", "type": "bytes" } ], "name": "createSplit", "outputs": [ { "internalType": "address", "name": "split", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "maxMintableLower", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableUpper", "type": "uint32" }, { "internalType": "uint32", "name": "cutoffTime", "type": "uint32" }, { "internalType": "bool", "name": "mintRandomnessEnabled", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "internalType": "struct ISoundEditionV2_1.TierCreation", "name": "creation", "type": "tuple" } ], "name": "createTier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "cutoffTime", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "editionInfo", "outputs": [ { "components": [ { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "contractURI", "type": "string" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "fundingRecipient", "type": "address" }, { "internalType": "address", "name": "metadataModule", "type": "address" }, { "internalType": "bool", "name": "isMetadataFrozen", "type": "bool" }, { "internalType": "bool", "name": "isCreateTierFrozen", "type": "bool" }, { "internalType": "uint16", "name": "royaltyBPS", "type": "uint16" }, { "internalType": "uint256", "name": "nextTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "totalBurned", "type": "uint256" }, { "internalType": "uint256", "name": "totalMinted", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "components": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "maxMintable", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableLower", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableUpper", "type": "uint32" }, { "internalType": "uint32", "name": "cutoffTime", "type": "uint32" }, { "internalType": "uint32", "name": "minted", "type": "uint32" }, { "internalType": "uint256", "name": "mintRandomness", "type": "uint256" }, { "internalType": "bool", "name": "mintConcluded", "type": "bool" }, { "internalType": "bool", "name": "mintRandomnessEnabled", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "internalType": "struct ISoundEditionV2_1.TierInfo[]", "name": "tierInfo", "type": "tuple[]" } ], "internalType": "struct ISoundEditionV2_1.EditionInfo", "name": "info", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "emitAllMetadataUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership", "name": "ownership", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitTokenTier", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeCreateTier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "freezeMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "freezeTier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fundingRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "grantRoles", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAllRoles", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAnyRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "metadataModule", "type": "address" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "contractURI", "type": "string" }, { "internalType": "address", "name": "fundingRecipient", "type": "address" }, { "internalType": "uint16", "name": "royaltyBPS", "type": "uint16" }, { "internalType": "bool", "name": "isMetadataFrozen", "type": "bool" }, { "internalType": "bool", "name": "isCreateTierFrozen", "type": "bool" }, { "components": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "maxMintableLower", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableUpper", "type": "uint32" }, { "internalType": "uint32", "name": "cutoffTime", "type": "uint32" }, { "internalType": "bool", "name": "mintRandomnessEnabled", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "internalType": "struct ISoundEditionV2_1.TierCreation[]", "name": "tierCreations", "type": "tuple[]" } ], "internalType": "struct ISoundEditionV2_1.EditionInitialization", "name": "init", "type": "tuple" } ], "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": [], "name": "isCreateTierFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "isFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMetadataFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "maxMintable", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "maxMintableLower", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "maxMintableUpper", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadataModule", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "fromTokenId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "mintConcluded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "mintRandomness", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "mintRandomnessEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "mintRandomnessOneOfOne", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "name_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "numberBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "numberMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "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": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "renounceRoles", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "revokeRoles", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "rolesOf", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyBPS", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "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": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "cutoff", "type": "uint32" } ], "name": "setCutoffTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "setFundingRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "lower", "type": "uint32" }, { "internalType": "uint32", "name": "upper", "type": "uint32" } ], "name": "setMaxMintableRange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "module", "type": "address" } ], "name": "setMetadataModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "setMintRandomnessEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "bps", "type": "uint16" } ], "name": "setRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "tierInfo", "outputs": [ { "components": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint32", "name": "maxMintable", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableLower", "type": "uint32" }, { "internalType": "uint32", "name": "maxMintableUpper", "type": "uint32" }, { "internalType": "uint32", "name": "cutoffTime", "type": "uint32" }, { "internalType": "uint32", "name": "minted", "type": "uint32" }, { "internalType": "uint256", "name": "mintRandomness", "type": "uint256" }, { "internalType": "bool", "name": "mintConcluded", "type": "bool" }, { "internalType": "bool", "name": "mintRandomnessEnabled", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "internalType": "struct ISoundEditionV2_1.TierInfo", "name": "info", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "tierMinted", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tierTokenIdIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" } ], "name": "tierTokenIds", "outputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "tier", "type": "uint8" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tierTokenIdsIn", "outputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenTier", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "tokenTiers", "outputs": [ { "internalType": "uint8[]", "name": "tiers", "type": "uint8[]" } ], "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": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "tokens", "type": "address[]" } ], "name": "withdrawERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5061526d806100206000396000f3fe6080604052600436106104ca5760003560e01c80637793818111610276578063b9c9d93a1161014f578063e1a45218116100c1578063eebab8ef11610085578063eebab8ef14610ed6578063f04e283e14610ee9578063f2fde38b14610efc578063faf37bc414610f0f578063fcff385214610f2f578063fee81cf414610f4457600080fd5b8063e1a4521814610e49578063e7a6020d14610e5f578063e8a3d48514610e81578063e985e9c514610e96578063eb78a07614610eb657600080fd5b8063d111515d11610113578063d111515d14610db5578063d539139314610dca578063d89135cd14610ddf578063db0ea80514610df4578063dc33e68114610e14578063e086e5ec14610e3457600080fd5b8063b9c9d93a14610cf3578063c0ede3cf14610d28578063c23dc68f14610d48578063c5bc5a4c14610d75578063c87b56dd14610d9557600080fd5b806399a2557a116101e8578063a8f5473e116101ac578063a8f5473e14610c3e578063aec9b83c14610c60578063b0fbdc8b14610c80578063b393cf7a14610ca0578063b7c858fb14610cc0578063b88d4fde14610ce057600080fd5b806399a2557a14610ba9578063a22cb46514610bc9578063a2309ff814610be9578063a4198fa214610bfe578063a468f04314610c1e57600080fd5b806390e89bb81161023a57806390e89bb814610aff57806390ecf29c14610b1f578063938e3d7b14610b3f57806393e8bcf914610b5f57806395d89b4114610b74578063998ad69114610b8957600080fd5b80637793818114610a665780637ab51f9e14610a865780637f84110f14610aa65780638462151c14610ac65780638da5cb5b14610ae657600080fd5b80632f01b56e116103a85780635bbb21771161031a5780636c0360eb116102de5780636c0360eb146109df57806370a08231146109f4578063715018a614610a1457806375794a3c14610a1c57806375b238fc14610a31578063774de39614610a4657600080fd5b80635bbb2177146109205780635f08f8761461094d5780636352211e1461096d578063649e705f1461098d5780636a3d27c6146109bf57600080fd5b806342842e0e1161036c57806342842e0e1461087b57806342966c681461088e5780634a4ee7b1146108ae578063514e62fc146108c157806354d1f13d146108f857806355f804b31461090057600080fd5b80632f01b56e146107c157806335766f4b146107ee5780633684d1001461081b57806336e79a5a1461083b5780633e1a5b851461085b57600080fd5b80631c10893f11610441578063241d965111610405578063241d9651146106e75780632478d6391461070757806325692962146107275780632a036a4d1461072f5780632a55205a1461074f5780632de948071461078e57600080fd5b80631c10893f146106485780631c519ba41461065b5780631cd64df4146106705780631cdb1765146106a757806323b872dd146106d457600080fd5b8063095ea7b311610493578063095ea7b3146105b45780630e24495e146105c9578063110db80e146105eb57806318160ddd14610600578063183a4f6e146106155780631bb534ba1461062857600080fd5b80624dad56146104cf578063010fe62c1461050957806301ffc9a71461052a57806306fdde031461055a578063081812fc1461057c575b600080fd5b3480156104db57600080fd5b506104ef6104ea3660046140cd565b610f77565b60405163ffffffff90911681526020015b60405180910390f35b61051c610517366004614133565b610f96565b604051908152602001610500565b34801561053657600080fd5b5061054a6105453660046141a2565b61103d565b6040519015158152602001610500565b34801561056657600080fd5b5061056f611089565b604051610500919061420f565b34801561058857600080fd5b5061059c610597366004614222565b611099565b6040516001600160a01b039091168152602001610500565b6105c76105c2366004614252565b6110dd565b005b3480156105d557600080fd5b5061054a600554600160b01b9004600116151590565b3480156105f757600080fd5b506105c76110ed565b34801561060c57600080fd5b5061051c61114d565b6105c7610623366004614222565b61116d565b34801561063457600080fd5b5060055461059c906001600160a01b031681565b6105c7610656366004614252565b61117a565b34801561066757600080fd5b506105c761118c565b34801561067c57600080fd5b5061054a61068b366004614252565b638b78c6d8600c90815260009290925260209091205481161490565b3480156106b357600080fd5b506106c76106c236600461427c565b6111dc565b60405161050091906142bd565b6105c76106e23660046142f8565b61128b565b3480156106f357600080fd5b506105c7610702366004614334565b61144e565b34801561071357600080fd5b5061051c610722366004614334565b611462565b6105c761146d565b34801561073b57600080fd5b5061054a61074a3660046140cd565b6114bc565b34801561075b57600080fd5b5061076f61076a36600461434f565b6114da565b604080516001600160a01b039093168352602083019190915201610500565b34801561079a57600080fd5b5061051c6107a9366004614334565b638b78c6d8600c908152600091909152602090205490565b3480156107cd57600080fd5b506107e16107dc3660046140cd565b61151a565b60405161050091906143ac565b3480156107fa57600080fd5b5061080e6108093660046140cd565b611536565b604051610500919061447c565b34801561082757600080fd5b5060065461059c906001600160a01b031681565b34801561084757600080fd5b506105c761085636600461449d565b6115fc565b34801561086757600080fd5b5061056f610876366004614222565b611668565b6105c76108893660046142f8565b611749565b34801561089a57600080fd5b506105c76108a9366004614222565b611769565b6105c76108bc366004614252565b611774565b3480156108cd57600080fd5b5061054a6108dc366004614252565b638b78c6d8600c90815260009290925260209091205416151590565b6105c7611786565b34801561090c57600080fd5b506105c761091b3660046145ac565b6117c2565b34801561092c57600080fd5b5061094061093b36600461427c565b61181f565b604051610500919061461c565b34801561095957600080fd5b5061059c61096836600461465e565b61186b565b34801561097957600080fd5b5061059c610988366004614222565b6118ab565b34801561099957600080fd5b506109ad6109a8366004614222565b6118b6565b60405160ff9091168152602001610500565b3480156109cb57600080fd5b506105c76109da3660046140cd565b6118fd565b3480156109eb57600080fd5b5061056f611979565b348015610a0057600080fd5b5061051c610a0f366004614334565b61198a565b6105c76119e9565b348015610a2857600080fd5b5061051c6119fd565b348015610a3d57600080fd5b5061051c600181565b348015610a5257600080fd5b506105c7610a613660046147a5565b611a07565b348015610a7257600080fd5b5061051c610a81366004614222565b611a52565b348015610a9257600080fd5b506105c7610aa13660046147c1565b611abe565b348015610ab257600080fd5b506105c7610ac1366004614874565b611b4d565b348015610ad257600080fd5b506107e1610ae1366004614334565b611ce4565b348015610af257600080fd5b50638b78c6d8195461059c565b348015610b0b57600080fd5b506105c7610b1a36600461427c565b611d08565b348015610b2b57600080fd5b506105c7610b3a3660046149cb565b611df2565b348015610b4b57600080fd5b506105c7610b5a3660046145ac565b611f4c565b348015610b6b57600080fd5b506109ad600081565b348015610b8057600080fd5b5061056f611f99565b348015610b9557600080fd5b506105c7610ba4366004614a0e565b611fa3565b348015610bb557600080fd5b506107e1610bc4366004614a38565b612040565b348015610bd557600080fd5b506105c7610be4366004614a6b565b612055565b348015610bf557600080fd5b5061051c6120d2565b348015610c0a57600080fd5b506105c7610c19366004614334565b6120dc565b348015610c2a57600080fd5b506104ef610c393660046140cd565b61213d565b348015610c4a57600080fd5b5061054a600554600160b01b9004600216151590565b348015610c6c57600080fd5b5061054a610c7b3660046140cd565b6121b3565b348015610c8c57600080fd5b506104ef610c9b3660046140cd565b6121d1565b348015610cac57600080fd5b5061051c610cbb3660046140cd565b6121f0565b348015610ccc57600080fd5b506104ef610cdb3660046140cd565b612203565b6105c7610cee366004614a87565b612222565b348015610cff57600080fd5b50600554610d1590600160a01b900461ffff1681565b60405161ffff9091168152602001610500565b348015610d3457600080fd5b506107e1610d43366004614b02565b612263565b348015610d5457600080fd5b50610d68610d63366004614222565b612356565b6040516105009190614b20565b348015610d8157600080fd5b506104ef610d903660046140cd565b6123b9565b348015610da157600080fd5b5061056f610db0366004614222565b6123cc565b348015610dc157600080fd5b506105c76123fd565b348015610dd657600080fd5b5061051c600281565b348015610deb57600080fd5b5061051c61247e565b348015610e0057600080fd5b5061054a610e0f3660046140cd565b612488565b348015610e2057600080fd5b5061051c610e2f366004614334565b61249b565b348015610e4057600080fd5b506105c76124a6565b348015610e5557600080fd5b50610d1561271081565b348015610e6b57600080fd5b50610e74612507565b6040516105009190614b69565b348015610e8d57600080fd5b5061056f61270b565b348015610ea257600080fd5b5061054a610eb1366004614ca8565b612717565b348015610ec257600080fd5b506104ef610ed13660046140cd565b612754565b61051c610ee4366004614cd2565b612773565b6105c7610ef7366004614334565b6127f2565b6105c7610f0a366004614334565b61282f565b348015610f1b57600080fd5b506109ad610f2a366004614222565b612856565b348015610f3b57600080fd5b5061054a600181565b348015610f5057600080fd5b5061051c610f5f366004614334565b63389a75e1600c908152600091909152602090205490565b6000610f8282612875565b54600160601b900463ffffffff1692915050565b60006003610fa3816128b5565b610faf86858502612903565b50915060005b808514610ff457610fec868683818110610fd157610fd1614cf0565b9050602002016020810190610fe69190614334565b85612a87565b600101610fb5565b507f0b411e173d03042c3eb682fe6cf8f1d64b549c283a9ed7e0f83a9711ee0841e8868686868660405161102c959493929190614d42565b60405180910390a150949350505050565b60006110836001600160e01b03198316638477f7b360e01b1461105f84612ab5565b6001600160e01b03198516637888cfe160e01b81149063152a902d60e11b14612b03565b92915050565b6060611093612b20565b50919050565b60006110a482612ca8565b6110b8576110b86333d1c03960e21b612d06565b6110c0612d10565b60009283526006016020525060409020546001600160a01b031690565b6110e982826001612d34565b5050565b60016110f8816128b5565b611100612de5565b6005805460ff60b01b1981166002600160b01b9283900460ff16179091021790556040517f36c5c1f433b3c0800132549fa10c9deefbeafdd7b70aba4bbc6a987ca2fef54790600090a150565b60006001611159612d10565b60010154611165612d10565b540303919050565b6111773382612e18565b50565b611182612e24565b6110e98282612e3f565b7f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c6001806111b8612e4b565b6111c29190614d89565b6040805192835260208301919091520160405180910390a1565b6060816001600160401b038111156111f6576111f66144b8565b60405190808252806020026020018201604052801561121f578160200160208202803683370190505b50905060005b8083146112845761125884848381811061124157611241614cf0565b905060200201356008612e5b90919063ffffffff16565b82828151811061126a5761126a614cf0565b60ff90921660209283029190910190910152600101611225565b5092915050565b600061129682612e7c565b6001600160a01b0394851694909150811684146112bc576112bc62a1148160e81b612d06565b6000806112c884612f3e565b915091506112ed81876112d83390565b6001600160a01b039081169116811491141790565b61130f576112fb8633612717565b61130f5761130f632ce44b5f60e11b612d06565b801561131a57600082555b611322612d10565b6001600160a01b038716600090815260059190910160205260409020805460001901905561134e612d10565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b17611385612d10565b60008681526004919091016020526040812091909155600160e11b841690036113fb57600184016113b4612d10565b6000828152600491909101602052604081205490036113f9576113d5612d10565b5481146113f957836113e5612d10565b600083815260049190910160205260409020555b505b6001600160a01b0385168481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a48060000361144557611445633a954ecd60e21b612d06565b50505050505050565b6001611459816128b5565b6110e982612f66565b600061108382612fbd565b60006202a3006001600160401b03164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60006110836114ca83612875565b54600160c81b9004600216151590565b6005546001600160a01b03166000600160f01b83106114fb576114fb613002565b600554612710600160a01b90910461ffff168402045b90509250929050565b606061108382600061152b85612203565b63ffffffff16612263565b61153e614068565b600061154983612875565b60ff84168352905061155a81613010565b63ffffffff90811660208401528154600160401b810482166040850152600160601b810482166060850152600160801b810482166080850152600160a01b90041660a08301526115a981613063565b60c08301526115c28154600160c81b9004600216151590565b15156101008301526115d3816130ac565b151560e08301526115ee8154600160c81b9004600416151590565b151561012083015250919050565b6001611607816128b5565b611610826130d6565b6005805461ffff60a01b1916600160a01b61ffff8516908102919091179091556040519081527f092d0aa94dc2b378c7fd77faaaf4cb3fd8336ae247cd486fb593726705772ac0906020015b60405180910390a15050565b6006546060906001600160a01b0316156116ed5760065460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd90602401600060405180830381865afa1580156116c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110839190810190614d9c565b60006116f7611979565b905080516000036117175760405180602001604052806000815250611742565b80611721846130fd565b604051602001611732929190614e09565b6040516020818303038152906040525b9392505050565b61176483838360405180602001604052806000815250612222565b505050565b611177816001613141565b61177c612e24565b6110e98282612e18565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b60016117cd816128b5565b6117d56132b9565b6117e06001836132ec565b7ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f68260405161180f919061420f565b60405180910390a16110e961118c565b60408051828152600583901b8082016020019092526060915b801561186357601f198082019186010135600061185482612356565b84840160200152506118389050565b509392505050565b60006001611878816128b5565b604051838582376000805260206000858360008a5af161189c573d6000803e3d6000fd5b50600051915061186382612f66565b600061108382612e7c565b60006118c182612ca8565b6118de5760405163163ceb7760e11b815260040160405180910390fd5b6008602052600582901c60009081526040902054601f8319161a611083565b6001611908816128b5565b600061191383612875565b905061191e816132f8565b805460ff600160c81b80830482166004170260ff60c81b1990921691909117825560405190841681527f5455468b416476a27220f0fc8daad92345a6c408a0356acd2560b63bf0e51d949060200160405180910390a1505050565b6060611985600161332a565b905090565b60006001600160a01b0382166119aa576119aa6323d3ad8160e21b612d06565b6001600160401b036119ba612d10565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b6119f1612e24565b6119fb6000613415565b565b6000611985612e4b565b6001611a12816128b5565b611a1a612de5565b611a2382613453565b7fc14f5a12ed3f072ab9522493ce2b476e950ee5a3f3abf2324961c6ac66b00e948260405161165c9190614e87565b600080611a5e836118b6565b9050600080611a96856000611a7286612203565b60ff8716600090815260096020526040902092919063ffffffff9081169061360316565b9092509050811515640100000000861016611ab357600019611ab5565b805b95945050505050565b6001611ac9816128b5565b6000611ad484612875565b9050611adf816132f8565b611ae881613627565b805463ffffffff60801b1916600160801b63ffffffff85169081029190911782556040805160ff8716815260208101929092527fbfb64051edb1b4f08e14520b9ed4d2609e52d66c0c83cfb1ac125ab41734fceb91015b60405180910390a150505050565b611b5f8160000151826020015161364e565b611b6f611b6a6136d3565b613731565b611b7c8160c001516130d6565b611b898160a0015161376d565b6060810151611b9a90600190613794565b6080810151611bab90600390613794565b60a0810151600580546001600160a01b0319166001600160a01b03909216919091179055610120810151516000819003611bf8576040516392ce813760e01b815260040160405180910390fd5b60005b818114611c3157611c298361012001518281518110611c1c57611c1c614cf0565b6020026020010151613453565b600101611bfb565b50506040810151600680546001600160a01b0319166001600160a01b0390921691909117905560c08101516005805461ffff60a01b1916600160a01b61ffff90931692909202919091179055610100810151151560020260e0820151151517600560166101000a81548160ff021916908360ff1602179055507f4f32c97826173bff1ee9613d86862d161dfbc943f1f5960528f88c42a79fb56881604051611cd99190614ecf565b60405180910390a150565b606060016000611cf2612e4b565b90506060818314611ab357611ab58584846137ad565b6000816001600160401b03811115611d2257611d226144b8565b604051908082528060200260200182016040528015611d4b578160200160208202803683370190505b506005549091506001600160a01b031660005b808414611dba57611d95858583818110611d7a57611d7a614cf0565b9050602002016020810190611d8f9190614334565b836138b5565b838281518110611da757611da7614cf0565b6020908102919091010152600101611d5e565b507fcadee7ff7164fffa7c9c81726bbc520c1fb0bc36d7ac763997ea74aee0e387e48185858533604051611b3f959493929190614fd6565b6001611dfd816128b5565b6000611e0885612875565b9050611e13816132f8565b611e1c81613627565b8054600160a01b900463ffffffff168015611e96578154600160601b810463ffffffff90811686821611600160401b9092048116908716111715611e7357604051633a964d4760e01b815260040160405180910390fd5b63ffffffff85168181108282180218945063ffffffff8416818110828218021893505b8363ffffffff168563ffffffff161115611ec357604051633a964d4760e01b815260040160405180910390fd5b815467ffffffffffffffff60401b1916600160401b63ffffffff87811691820263ffffffff60601b191692909217600160601b9287169283021784556040805160ff8a16815260208101929092528101919091527faabbe826f21f31d8508fe47762ab61162f999f0c296e1a88ce50d1ef0ea6da849060600160405180910390a1505050505050565b6001611f57816128b5565b611f5f6132b9565b611f6a6003836132ec565b7faf497693a87db12ca89131a31edbb3db4bb5702dfb284e8ae7427d185f09112d8260405161165c919061420f565b6060611083612b20565b6001611fae816128b5565b6000611fb984612875565b9050611fc4816132f8565b611fcd8161392d565b8054611ff09060ff600160c81b9091041660028560ff8383161615901518021890565b815460ff60c81b1916600160c81b60ff9283160217825560408051918616825284151560208301527f9213f35ab455184cb0b8872ec8a16bd1fb69d2f0e909f4174a93470cd5e225009101611b3f565b606061204d8484846137ad565b949350505050565b8061205e612d10565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600061198561395a565b60016120e7816128b5565b6120ef6132b9565b600680546001600160a01b0319166001600160a01b0384169081179091556040519081527ff3fdd6d3ba37d1479142dbb6aef216c352108f558ce922646b4b0d86454d11389060200161180f565b60008061214983612875565b9050600061215682613063565b9050600061216383613010565b63ffffffff16905080158215176121a85760ff85166000908152600960209081526040808320848606600381901c855292529091205460059190911b60e0161c611ab5565b600095945050505050565b60006110836121c183612875565b54600160c81b9004600416151590565b60006121dc82612875565b54600160801b900463ffffffff1692915050565b60006110836121fe83612875565b613063565b600061220e82612875565b54600160a01b900463ffffffff1692915050565b61222d84848461128b565b6001600160a01b0383163b1561225d576122498484848461396d565b61225d5761225d6368d2bf6b60e11b612d06565b50505050565b6060828203600061227386612203565b63ffffffff16905080841184861117156122a057604051631960ccad60e11b815260040160405180910390fd5b816001600160401b038111156122b8576122b86144b8565b6040519080825280602002602001820160405280156122e1578160200160208202803683370190505b5060ff871660009081526009602052604081209194505b83811461234b57868101600381901c60009081526020849052604090205460059190911b60e0161c63ffffffff1685828151811061233857612338614cf0565b60209081029190910101526001016122f8565b505050509392505050565b604080516080810182526000808252602082018190529181018290526060810191909152600182106123b45761238a612e4b565b8210156123b4575b61239b82613a4f565b6123ab5760001990910190612392565b61108382613a6f565b919050565b60006110836123c783612875565b613010565b60606123d782612ca8565b6123f457604051630a14c4b560e41b815260040160405180910390fd5b61108382611668565b6001612408816128b5565b6124106132b9565b6005805460ff60b01b1981166001600160b01b9283900460ff16179091021790556006547f7028d29d7b13876d9de031ac95eb6acef3e844e1d010820781406e6cd5fc70f9906001600160a01b0316612467611979565b61246f61270b565b604051611cd993929190615021565b6000611985613af8565b600061108361249683612875565b6130ac565b600061108382613b0b565b60055447906001600160a01b03166124be8183613b1f565b604080516001600160a01b03831681526020810184905233918101919091527f134d6e96840903022b8e4b57aa0644e9eb6ca6fe65a25205b0857fe918c2bcc69060600161165c565b612593604051806101c001604052806060815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600015158152602001600015158152602001600061ffff16815260200160008152602001600081526020016000815260200160008152602001606081525090565b61259b611979565b81526125a561270b565b60208201526125b2612b20565b606083015260408201526005546001600160a01b0380821660808401526006541660a0830152600160b01b810460018116151560c0840152600216151560e0830152600160a01b900461ffff1661010082015261260d6119fd565b61012082015261261b6120d2565b61016082015261262961247e565b61014082015261263761114d565b610180820152600654600160a01b810461ffff1690600160b01b900460ff16816001600160401b0381111561266e5761266e6144b8565b6040519080825280602002602001820160405280156126a757816020015b612694614068565b81526020019060019003908161268c5790505b506101a08401525b81156127065760006126c082612875565b90506126cb82611536565b846101a001518460019003945084815181106126e9576126e9614cf0565b602090810291909101015254600160c01b900460ff1690506126af565b505090565b6060611985600361332a565b6000612721612d10565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b600061275f82612875565b54600160401b900463ffffffff1692915050565b60006003612780816128b5565b61278a8584612903565b5091506127978484612a87565b6040805160ff871681526001600160a01b0386166020820152908101849052606081018390527f7ac572687bf4e66a8514fc2ec464fc2644c78bcb1d80a225fc51a33e0ee38bfa9060800160405180910390a1509392505050565b6127fa612e24565b63389a75e1600c52806000526020600c20805442111561282257636f5e88186000526004601cfd5b6000905561117781613415565b612837612e24565b8060601b61284d57637448fbae6000526004601cfd5b61117781613415565b6008602052600581901c60009081526040812054601f8319161a611083565b60ff8116600090815260076020526040812080549091600160c81b90910460011690036123b457604051630bec67bf60e31b815260040160405180910390fd5b60006128bf6136d3565b638b78c6d8600c9081526000829052602090205490915082166110e957638b78c6d819546001600160a01b0316816001600160a01b0316146110e9576110e9613b62565b600080826000036129275760405163b562e8dd60e01b815260040160405180910390fd5b61292f612e4b565b91506401000000006001848401031061294a5761294a613002565b600061295585612875565b8054909150600160a01b900463ffffffff16600061297283613010565b63ffffffff1690508186018181111561299e576040516316b9b18560e01b815260040160405180910390fd5b835463ffffffff60a01b1916600160a01b63ffffffff831602178085556002600160c81b90910416156129ff5783546129e2906001600160401b0316848985613b70565b845467ffffffffffffffff19166001600160401b03919091161784555b60ff88166000908152600960205260408120905b888114612a7757612a58828683018a8401826020528160031c60005260406000206007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b60ff8a1615612a6f57612a6f60088983018c613be5565b600101612a13565b5083955050505050509250929050565b601f81168015612a9b57612a9b8382613c0b565b81811461176457612aad836020613c0b565b602001612a9b565b60006301ffc9a760e01b6001600160e01b031983161480612ae657506380ac58cd60e01b6001600160e01b03198316145b806110835750506001600160e01b031916635b5e139f60e01b1490565b6000611ab585612b17868515158715151782565b15159015151790565b60005460609081908015612b7857612b6e81604080516080810182526000808252918101828152601f820193909352805181016020018051605f830152829052825181016060019190915291565b9093509150509091565b6000612b82612d10565b9050806002018054612b9390615057565b80601f0160208091040260200160405190810160405280929190818152602001828054612bbf90615057565b8015612c0c5780601f10612be157610100808354040283529160200191612c0c565b820191906000526020600020905b815481529060010190602001808311612bef57829003601f168201915b50505050509350806003018054612c2290615057565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4e90615057565b8015612c9b5780601f10612c7057610100808354040283529160200191612c9b565b820191906000526020600020905b815481529060010190602001808311612c7e57829003601f168201915b5050505050925050509091565b6000816001116123b457612cba612d10565b548210156123b45760005b612ccd612d10565b600084815260049190910160205260408120549150819003612cf957612cf28361508b565b9250612cc5565b600160e01b161592915050565b8060005260046000fd5b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000612d3f836118ab565b9050818015612d575750336001600160a01b03821614155b15612d7a57612d668133612717565b612d7a57612d7a6367d9dca160e11b612d06565b83612d83612d10565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b612dfa600554600160b01b9004600216151590565b156119fb57604051635dc9af4560e11b815260040160405180910390fd5b6110e982826000613cff565b638b78c6d8195433146119fb576382b429006000526004601cfd5b6110e982826001613cff565b6000612e55612d10565b54919050565b6000826020528160051c6000526040600020548219601f161a905092915050565b600081600111612f2e57612e8e612d10565b600083815260049190910160205260408120549150819003612f1b57612eb2612d10565b548210612ec957612ec9636f96cda160e11b612d06565b612ed1612d10565b600019909201600081815260049390930160205260409092205490508015612ec957600160e01b8116600003612f0657919050565b612f16636f96cda160e11b612d06565b612ec9565b600160e01b8116600003612f2e57919050565b6123b4636f96cda160e11b612d06565b6000806000612f4b612d10565b60009485526006016020525050604090912080549092909150565b612f6f8161376d565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f94c4ad53e91574d56aff9aef0726376e9154e071a602000edf9208f28d649be190602001611cd9565b60006001600160401b036080612fd1612d10565b6005016000856001600160a01b03166001600160a01b0316815260200190815260200160002054901c169050919050565b6335278d126000526004601cfd5b8054600090600160801b900463ffffffff1642101561303b575054600160601b900463ffffffff1690565b81546110839063ffffffff600160401b8204811691600160a01b900416808218908210021890565b60006130798254600160c81b9004600216151590565b80156130895750613089826130ac565b156123b45750546001600160401b03166000908152306020526040902080150190565b60006130b782613010565b915463ffffffff928316600160a01b9091049092169190911015919050565b61271061ffff82161115611177576040516319510c8760e31b815260040160405180910390fd5b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806131175750819003601f19909101908152919050565b600061314c83612e7c565b90508060008061315b86612f3e565b915091508415613192576131708184336112d8565b6131925761317e8333612717565b61319257613192632ce44b5f60e11b612d06565b801561319d57600082555b6fffffffffffffffffffffffffffffffff6131b6612d10565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b17600360e01b176131ef612d10565b60008881526004919091016020526040812091909155600160e11b85169003613265576001860161321e612d10565b6000828152600491909101602052604081205490036132635761323f612d10565b548114613263578461324f612d10565b600083815260049190910160205260409020555b505b60405186906000906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a46132a5612d10565b600190810180549091019055505050505050565b6132ce600554600160b01b9004600116151590565b156119fb5760405163b087bbf360e01b815260040160405180910390fd5b6110e982826001613d58565b61330c8154600160c81b9004600416151590565b1561117757604051633fa1be4f60e01b815260040160405180910390fd5b8054606090806133c95782600101805461334390615057565b80601f016020809104026020016040519081016040528092919081815260200182805461336f90615057565b80156133bc5780601f10613391576101008083540402835291602001916133bc565b820191906000526020600020905b81548152906001019060200180831161339f57829003601f168201915b5050505050915050919050565b6060604051905060408101604052602081528160208201526133ed81600180613de0565b6040516020016133fd91906150a2565b60405160208183030381529060405292505050919050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b805160ff811660009081526007602052604090208054600160c81b90046001161561349157604051632520e1bd60e11b815260040160405180910390fd5b60ff82166134c45763ffffffff6020840181905260408401819052606084015260006080840152600160a08401526134f9565b826040015163ffffffff16836020015163ffffffff1611156134f957604051633a964d4760e01b815260040160405180910390fd5b602083015181546040850151606086015167ffffffffffffffff60401b19909216600160401b63ffffffff9485160263ffffffff60601b191617600160601b918416919091021763ffffffff60801b1916600160801b929091169190910217815560a0830151151560040260808401511515600202825460ff9290911760019081178316600160c81b0260ff60c81b1983168117855560068054600160c01b600160b01b80830488169190910260ff60c01b1990941661ffff60c01b19909616959095179290921790955584549590931690910260ff60b01b1961ffff600160a01b9485900481169093019092169092021662ffffff60a01b199093169290921791909117905550565b60008061361a8663ffffffff871686866020613ec7565b9150915094509492505050565b613630816130ac565b15611177576040516337149c8160e21b815260040160405180910390fd5b6000613658612d10565b80549091501561366a5761366a613b62565b6001815560006136a1848460008251601e600184518301031081601e850103518286015183601f0360031b1b170291505092915050565b9050806136cb57600282016136b68582615128565b50600382016136c58482615128565b5061225d565b600055505050565b6000336000526e2fd5aeb385d324b580fca7c83823a080330361370157602060008038845afa613701573838fd5b506dd9ecebf3c23529de49815dac1c4c80330361372957602060008038845afa613729573838fd5b505060005190565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b03811661117757604051630797cc5760e31b815260040160405180910390fd5b80516000036137a1575050565b6110e982826000613d58565b60608183106137c6576137c6631960ccad60e11b612d06565b60018310156137d457600192505b60006137de612e4b565b90508083106137eb578092505b606060006137f88761198a565b858710908102915081156138a95781878703116138155786860391505b60405192506001820160051b8301604052600061383188612356565b905060008160400151613842575080515b60005b61384e8a613a6f565b9250604083015160008114613866576000925061388b565b83511561387257835192505b8b831860601b61388b576001820191508a8260051b8801525b5060018a019950888a148061389f57508481145b1561384557855250505b50909695505050505050565b60006370a0823160005230602052602060346024601c865afa601f3d11166138e5576390b8ec186000526004601cfd5b81601452603451905063a9059cbb60601b60005260206000604460106000875af13d156001600051141716613922576390b8ec186000526004601cfd5b600060345292915050565b8054600160a01b900463ffffffff1615611177576040516330b33cff60e01b815260040160405180910390fd5b60006001613966612d10565b5403919050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906139a29033908990889088906004016151e7565b6020604051808303816000875af19250505080156139dd575060408051601f3d908101601f191682019092526139da9181019061521a565b60015b613a32573d808015613a0b576040519150601f19603f3d011682016040523d82523d6000602084013e613a10565b606091505b508051600003613a2a57613a2a6368d2bf6b60e11b612d06565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6000613a59612d10565b6000928352600401602052506040902054151590565b604080516080810182526000808252602082018190529181018290526060810191909152611083613a9e612d10565b60008481526004919091016020526040902054604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b6000613b02612d10565b60010154905090565b60006001600160401b036040612fd1612d10565b80471015613b355763b12d13eb6000526004601cfd5b6000386000388486620186a0f16110e957816000526073600b5360ff6020536016600b82f06110e9573838fd5b6382b429006000526004601cfd5b838183021561204d578284015b8560ff16600101430340600052844487181860205260406000208660008114613bc657866001868406011115613bc1578160ff1c8860011b17600052602060002093505b613bca565b8193505b5050819550600185019450808503613b7d5750949350505050565b826020528160051c60005260406000208054600052818319601f16536000519055505050565b6000613c15612d10565b5490506000829003613c3157613c3163b562e8dd60e01b612d06565b6001600160a01b0383164260a01b6001841460e11b1717613c50612d10565b60008381526004919091016020526040902055680100000000000000018202613c77612d10565b6001600160a01b0385166000818152600592909201602052604082208054909301909255819003613cb157613cb1622e076360e81b612d06565b818301825b808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4818160010191508103613cb65781613cf5612d10565b5550611764915050565b638b78c6d8600c52826000526020600c20805483811783613d21575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b8151600060308214603183141715613d90576461723a2f2f64ffffffffff60058601511603613d905760019050600584019350602b84525b8015613dbf576000613da185613f6b565b602001516461723a2f2f865260041990950183815294865550613dd9565b60018501613dcd8582615128565b508215613dd957600085555b5050505050565b606083518015611863576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181015b6003880197508751603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f811651600353506000518252600482019150808210613e5057602001604052613d3d60f01b60038406600204808303919091526000861515909102918290035290038252509392505050565b600080838510613ed5578493505b6000600019860160018261010087900490506000196001881b018989035b83811684821860011c019650808411613f4a57848701838104600090815260208f90526040902054908490068a021c821695508b8614613f4a57858c11613f3f57506000198601613ef3565b866001019350613ef3565b50505050931582151796188617159760018218909602189091019450505050565b6060815180156110935760038160021c0260038216613fa05783820151613d3d18601e81901a1560ff90911615019003613faa565b6003821601600019015b60405192508083526020830181810191507ffc000000fc00686c7074787c8084888c9094989ca0a4a8acb0b4b8bcc0c4c8cc80605b527804080c1014181c2024282c3034383c4044484c5054585c6064603b526ef8fcf800fcd0d4d8dce0e4e8ecf0f4601a525b600486019550855180601f1a5160061c81601e1a5183161760061c81601d1a5183161760061c81601c1a51831617835250600382019150828210614011575050602081016040526000815250600060605250919050565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915290565b803560ff811681146123b457600080fd5b6000602082840312156140df57600080fd5b611742826140bc565b60008083601f8401126140fa57600080fd5b5081356001600160401b0381111561411157600080fd5b6020830191508360208260051b850101111561412c57600080fd5b9250929050565b6000806000806060858703121561414957600080fd5b614152856140bc565b935060208501356001600160401b0381111561416d57600080fd5b614179878288016140e8565b9598909750949560400135949350505050565b6001600160e01b03198116811461117757600080fd5b6000602082840312156141b457600080fd5b81356117428161418c565b60005b838110156141da5781810151838201526020016141c2565b50506000910152565b600081518084526141fb8160208601602086016141bf565b601f01601f19169290920160200192915050565b60208152600061174260208301846141e3565b60006020828403121561423457600080fd5b5035919050565b80356001600160a01b03811681146123b457600080fd5b6000806040838503121561426557600080fd5b61426e8361423b565b946020939093013593505050565b6000806020838503121561428f57600080fd5b82356001600160401b038111156142a557600080fd5b6142b1858286016140e8565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156138a957835160ff16835292840192918401916001016142d9565b60008060006060848603121561430d57600080fd5b6143168461423b565b92506143246020850161423b565b9150604084013590509250925092565b60006020828403121561434657600080fd5b6117428261423b565b6000806040838503121561436257600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156143a157815187529582019590820190600101614385565b509495945050505050565b6020815260006117426020830184614371565b805160ff16825260208101516143dd602084018263ffffffff169052565b5060408101516143f5604084018263ffffffff169052565b50606081015161440d606084018263ffffffff169052565b506080810151614425608084018263ffffffff169052565b5060a081015161443d60a084018263ffffffff169052565b5060c081015160c083015260e081015161445b60e084018215159052565b5061010081810151151590830152610120808201518015158285015261225d565b610140810161108382846143bf565b803561ffff811681146123b457600080fd5b6000602082840312156144af57600080fd5b6117428261448b565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b03811182821017156144f1576144f16144b8565b60405290565b604051601f8201601f191681016001600160401b038111828210171561451f5761451f6144b8565b604052919050565b60006001600160401b03821115614540576145406144b8565b50601f01601f191660200190565b600061456161455c84614527565b6144f7565b905082815283838301111561457557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261459d57600080fd5b6117428383356020850161454e565b6000602082840312156145be57600080fd5b81356001600160401b038111156145d457600080fd5b61204d8482850161458c565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b818110156138a95761464b8385516145e0565b9284019260809290920191600101614638565b60008060006040848603121561467357600080fd5b61467c8461423b565b925060208401356001600160401b038082111561469857600080fd5b818601915086601f8301126146ac57600080fd5b8135818111156146bb57600080fd5b8760208285010111156146cd57600080fd5b6020830194508093505050509250925092565b803563ffffffff811681146123b457600080fd5b803580151581146123b457600080fd5b600060c0828403121561471657600080fd5b60405160c081018181106001600160401b0382111715614738576147386144b8565b604052905080614747836140bc565b8152614755602084016146e0565b6020820152614766604084016146e0565b6040820152614777606084016146e0565b6060820152614788608084016146f4565b608082015261479960a084016146f4565b60a08201525092915050565b600060c082840312156147b757600080fd5b6117428383614704565b600080604083850312156147d457600080fd5b6147dd836140bc565b9150611511602084016146e0565b600082601f8301126147fc57600080fd5b813560206001600160401b03821115614817576148176144b8565b614825818360051b016144f7565b82815260c0928302850182019282820191908785111561484457600080fd5b8387015b858110156148675761485a8982614704565b8452928401928101614848565b5090979650505050505050565b60006020828403121561488657600080fd5b81356001600160401b038082111561489d57600080fd5b9083019061014082860312156148b257600080fd5b6148ba6144ce565b8235828111156148c957600080fd5b6148d58782860161458c565b8252506020830135828111156148ea57600080fd5b6148f68782860161458c565b6020830152506149086040840161423b565b604082015260608301358281111561491f57600080fd5b61492b8782860161458c565b60608301525060808301358281111561494357600080fd5b61494f8782860161458c565b60808301525061496160a0840161423b565b60a082015261497260c0840161448b565b60c082015261498360e084016146f4565b60e08201526101006149968185016146f4565b9082015261012083810135838111156149ae57600080fd5b6149ba888287016147eb565b918301919091525095945050505050565b6000806000606084860312156149e057600080fd5b6149e9846140bc565b92506149f7602085016146e0565b9150614a05604085016146e0565b90509250925092565b60008060408385031215614a2157600080fd5b614a2a836140bc565b9150611511602084016146f4565b600080600060608486031215614a4d57600080fd5b614a568461423b565b95602085013595506040909401359392505050565b60008060408385031215614a7e57600080fd5b614a2a8361423b565b60008060008060808587031215614a9d57600080fd5b614aa68561423b565b9350614ab46020860161423b565b92506040850135915060608501356001600160401b03811115614ad657600080fd5b8501601f81018713614ae757600080fd5b614af68782356020840161454e565b91505092959194509250565b600080600060608486031215614b1757600080fd5b614a56846140bc565b6080810161108382846145e0565b600081518084526020808501945080840160005b838110156143a157614b558783516143bf565b610140969096019590820190600101614b42565b60208152600082516101c0806020850152614b886101e08501836141e3565b91506020850151601f1980868503016040870152614ba684836141e3565b93506040870151915080868503016060870152614bc384836141e3565b93506060870151915080868503016080870152614be084836141e3565b935060808701519150614bfe60a08701836001600160a01b03169052565b60a08701516001600160a01b03811660c0880152915060c087015180151560e0880152915060e08701519150610100614c3a8188018415159052565b8701519150610120614c518782018461ffff169052565b8701516101408781019190915287015161016080880191909152870151610180808801919091528701516101a080880191909152870151868503909101838701529050614c9e8382614b2e565b9695505050505050565b60008060408385031215614cbb57600080fd5b614cc48361423b565b91506115116020840161423b565b600080600060608486031215614ce757600080fd5b614316846140bc565b634e487b7160e01b600052603260045260246000fd5b8183526000602080850194508260005b858110156143a1576001600160a01b03614d2f8361423b565b1687529582019590820190600101614d16565b60ff86168152608060208201526000614d5f608083018688614d06565b604083019490945250606001529392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561108357611083614d73565b600060208284031215614dae57600080fd5b81516001600160401b03811115614dc457600080fd5b8201601f81018413614dd557600080fd5b8051614de361455c82614527565b818152856020838501011115614df857600080fd5b611ab58260208301602086016141bf565b60008351614e1b8184602088016141bf565b835190830190614e2f8183602088016141bf565b01949350505050565b60ff8151168252602081015163ffffffff8082166020850152806040840151166040850152806060840151166060850152505060808101511515608083015260a0810151151560a08301525050565b60c081016110838284614e38565b600081518084526020808501945080840160005b838110156143a157614ebc878351614e38565b60c0969096019590820190600101614ea9565b6020815260008251610140806020850152614eee6101608501836141e3565b91506020850151601f1980868503016040870152614f0c84836141e3565b935060408701519150614f2a60608701836001600160a01b03169052565b6060870151915080868503016080870152614f4584836141e3565b935060808701519150808685030160a0870152614f6284836141e3565b935060a08701519150614f8060c08701836001600160a01b03169052565b60c087015161ffff811660e0880152915060e08701519150610100614fa88188018415159052565b8701519150610120614fbd8782018415159052565b870151868503909101838701529050614c9e8382614e95565b600060018060a01b03808816835260806020840152614ff9608084018789614d06565b838103604085015261500b8187614371565b9250508084166060840152509695505050505050565b6001600160a01b0384168152606060208201819052600090615045908301856141e3565b8281036040840152614c9e81856141e3565b600181811c9082168061506b57607f821691505b60208210810361109357634e487b7160e01b600052602260045260246000fd5b60008161509a5761509a614d73565b506000190190565b6461723a2f2f60d81b8152600082516150c28160058501602087016141bf565b602f60f81b6005939091019283015250600601919050565b601f82111561176457600081815260208120601f850160051c810160208610156151015750805b601f850160051c820191505b818110156151205782815560010161510d565b505050505050565b81516001600160401b03811115615141576151416144b8565b6151558161514f8454615057565b846150da565b602080601f83116001811461518a57600084156151725750858301515b600019600386901b1c1916600185901b178555615120565b600085815260208120601f198616915b828110156151b95788860151825594840194600190910190840161519a565b50858210156151d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614c9e908301846141e3565b60006020828403121561522c57600080fd5b81516117428161418c56fea264697066735822122049e6d1cd0280f13035da064d43e0d0c04baabf189e47190a2588815ba6a8c9fa64736f6c63430008130033