[ { "inputs": [ { "internalType": "address", "name": "_mintFeeRecipient", "type": "address" }, { "internalType": "address", "name": "_upgradeGate", "type": "address" }, { "internalType": "address", "name": "_protocolRewards", "type": "address" }, { "internalType": "address", "name": "_mints", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ADDRESS_DELEGATECALL_TO_NON_CONTRACT", "type": "error" }, { "inputs": [], "name": "ADDRESS_LOW_LEVEL_CALL_FAILED", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "user", "type": "address" } ], "name": "Burn_NotOwnerOrApproved", "type": "error" }, { "inputs": [], "name": "CREATOR_FUNDS_RECIPIENT_NOT_SET", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "reason", "type": "bytes" } ], "name": "CallFailed", "type": "error" }, { "inputs": [], "name": "Call_TokenIdMismatch", "type": "error" }, { "inputs": [], "name": "CallerNotZoraCreator1155", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "uint256", "name": "totalMinted", "type": "uint256" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" } ], "name": "CannotMintMoreTokens", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "proposedAddress", "type": "address" } ], "name": "Config_TransferHookNotSupported", "type": "error" }, { "inputs": [], "name": "ERC1155_ACCOUNTS_AND_IDS_LENGTH_MISMATCH", "type": "error" }, { "inputs": [], "name": "ERC1155_ADDRESS_ZERO_IS_NOT_A_VALID_OWNER", "type": "error" }, { "inputs": [], "name": "ERC1155_BURN_AMOUNT_EXCEEDS_BALANCE", "type": "error" }, { "inputs": [], "name": "ERC1155_BURN_FROM_ZERO_ADDRESS", "type": "error" }, { "inputs": [], "name": "ERC1155_CALLER_IS_NOT_TOKEN_OWNER_OR_APPROVED", "type": "error" }, { "inputs": [], "name": "ERC1155_ERC1155RECEIVER_REJECTED_TOKENS", "type": "error" }, { "inputs": [], "name": "ERC1155_IDS_AND_AMOUNTS_LENGTH_MISMATCH", "type": "error" }, { "inputs": [], "name": "ERC1155_INSUFFICIENT_BALANCE_FOR_TRANSFER", "type": "error" }, { "inputs": [], "name": "ERC1155_MINT_TO_ZERO_ADDRESS", "type": "error" }, { "inputs": [], "name": "ERC1155_MINT_TO_ZERO_ADDRESS", "type": "error" }, { "inputs": [], "name": "ERC1155_SETTING_APPROVAL_FOR_SELF", "type": "error" }, { "inputs": [], "name": "ERC1155_TRANSFER_TO_NON_ERC1155RECEIVER_IMPLEMENTER", "type": "error" }, { "inputs": [], "name": "ERC1155_TRANSFER_TO_ZERO_ADDRESS", "type": "error" }, { "inputs": [], "name": "ERC1967_NEW_IMPL_NOT_CONTRACT", "type": "error" }, { "inputs": [], "name": "ERC1967_NEW_IMPL_NOT_UUPS", "type": "error" }, { "inputs": [], "name": "ERC1967_UNSUPPORTED_PROXIABLEUUID", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ETHWithdrawFailed", "type": "error" }, { "inputs": [], "name": "FUNCTION_MUST_BE_CALLED_THROUGH_ACTIVE_PROXY", "type": "error" }, { "inputs": [], "name": "FUNCTION_MUST_BE_CALLED_THROUGH_DELEGATECALL", "type": "error" }, { "inputs": [], "name": "FirstMinterAddressZero", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "contractValue", "type": "uint256" } ], "name": "FundsWithdrawInsolvent", "type": "error" }, { "inputs": [], "name": "INITIALIZABLE_CONTRACT_ALREADY_INITIALIZED", "type": "error" }, { "inputs": [], "name": "INITIALIZABLE_CONTRACT_IS_NOT_INITIALIZING", "type": "error" }, { "inputs": [], "name": "INVALID_ADDRESS_ZERO", "type": "error" }, { "inputs": [], "name": "INVALID_ETH_AMOUNT", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "mintTo", "type": "address" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" } ], "name": "InvalidMerkleProof", "type": "error" }, { "inputs": [], "name": "InvalidMintSchedule", "type": "error" }, { "inputs": [], "name": "InvalidMintSchedule", "type": "error" }, { "inputs": [], "name": "InvalidPremintVersion", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "InvalidSignatureVersion", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "magicValue", "type": "bytes4" } ], "name": "InvalidSigner", "type": "error" }, { "inputs": [], "name": "MintNotYetStarted", "type": "error" }, { "inputs": [], "name": "Mint_InsolventSaleTransfer", "type": "error" }, { "inputs": [], "name": "Mint_InvalidMintArrayLength", "type": "error" }, { "inputs": [], "name": "Mint_TokenIDMintNotAllowed", "type": "error" }, { "inputs": [], "name": "Mint_UnknownCommand", "type": "error" }, { "inputs": [], "name": "Mint_ValueTransferFail", "type": "error" }, { "inputs": [], "name": "MinterContractAlreadyExists", "type": "error" }, { "inputs": [], "name": "MinterContractDoesNotExist", "type": "error" }, { "inputs": [], "name": "NewOwnerNeedsToBeAdmin", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "NoRendererForToken", "type": "error" }, { "inputs": [], "name": "NonEthRedemption", "type": "error" }, { "inputs": [], "name": "ONLY_CREATE_REFERRAL", "type": "error" }, { "inputs": [], "name": "OnlyTransfersFromZoraMints", "type": "error" }, { "inputs": [], "name": "PremintDeleted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ProtocolRewardsWithdrawFailed", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "renderer", "type": "address" } ], "name": "RendererNotValid", "type": "error" }, { "inputs": [], "name": "Renderer_NotValidRendererContract", "type": "error" }, { "inputs": [], "name": "SaleEnded", "type": "error" }, { "inputs": [], "name": "SaleHasNotStarted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "targetContract", "type": "address" } ], "name": "Sale_CannotCallNonSalesContract", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expected", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "TokenIdMismatch", "type": "error" }, { "inputs": [], "name": "UUPS_UPGRADEABLE_MUST_NOT_BE_CALLED_THROUGH_DELEGATECALL", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "limit", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" } ], "name": "UserExceedsMintLimit", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "role", "type": "uint256" } ], "name": "UserMissingRoleForToken", "type": "error" }, { "inputs": [], "name": "WrongValueSent", "type": "error" }, { "inputs": [], "name": "premintSignerContractFailedToRecoverSigner", "type": "error" }, { "inputs": [], "name": "premintSignerContractNotAContract", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "updater", "type": "address" }, { "indexed": true, "internalType": "enum IZoraCreator1155.ConfigUpdate", "name": "updateType", "type": "uint8" }, { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint96", "name": "__gap1", "type": "uint96" }, { "internalType": "address payable", "name": "fundsRecipient", "type": "address" }, { "internalType": "uint96", "name": "__gap2", "type": "uint96" }, { "internalType": "contract ITransferHookReceiver", "name": "transferHook", "type": "address" }, { "internalType": "uint96", "name": "__gap3", "type": "uint96" } ], "indexed": false, "internalType": "struct IZoraCreator1155TypesV1.ContractConfig", "name": "newConfig", "type": "tuple" } ], "name": "ConfigUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "updater", "type": "address" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" } ], "name": "ContractMetadataUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract IRenderer1155", "name": "renderer", "type": "address" } ], "name": "ContractRendererUpdated", "type": "event" }, { "anonymous": false, "inputs": [], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "structHash", "type": "bytes32" }, { "indexed": false, "internalType": "string", "name": "domainName", "type": "string" }, { "indexed": false, "internalType": "string", "name": "version", "type": "string" }, { "indexed": false, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "CreatorAttribution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "lastOwner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Purchased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "renderer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" } ], "name": "RendererUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "string", "name": "newURI", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "maxSupply", "type": "uint256" } ], "name": "SetupNewToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "permissions", "type": "uint256" } ], "name": "UpdatedPermissions", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "components": [ { "internalType": "uint32", "name": "royaltyMintSchedule", "type": "uint32" }, { "internalType": "uint32", "name": "royaltyBPS", "type": "uint32" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" } ], "indexed": false, "internalType": "struct ICreatorRoyaltiesControl.RoyaltyConfiguration", "name": "configuration", "type": "tuple" } ], "name": "UpdatedRoyalties", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "totalMinted", "type": "uint256" } ], "indexed": false, "internalType": "struct IZoraCreator1155TypesV1.TokenData", "name": "tokenData", "type": "tuple" } ], "name": "UpdatedToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "CONTRACT_BASE_ID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMISSION_BIT_ADMIN", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMISSION_BIT_FUNDS_MANAGER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMISSION_BIT_METADATA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMISSION_BIT_MINTER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMISSION_BIT_SALES", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "permissionBits", "type": "uint256" } ], "name": "addPermission", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "adminMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lastTokenId", "type": "uint256" } ], "name": "assumeLastTokenIdMatches", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "batchBalances", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "callRenderer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "contract IMinter1155", "name": "salesConfig", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "callSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "computeTotalReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "config", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint96", "name": "__gap1", "type": "uint96" }, { "internalType": "address payable", "name": "fundsRecipient", "type": "address" }, { "internalType": "uint96", "name": "__gap2", "type": "uint96" }, { "internalType": "contract ITransferHookReceiver", "name": "transferHook", "type": "address" }, { "internalType": "uint96", "name": "__gap3", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "createReferrals", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "customRenderers", "outputs": [ { "internalType": "contract IRenderer1155", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "premintConfig", "type": "bytes" }, { "internalType": "bytes32", "name": "premintVersion", "type": "bytes32" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "address", "name": "firstMinter", "type": "address" }, { "internalType": "address", "name": "premintSignerContract", "type": "address" } ], "name": "delegateSetupNewToken", "outputs": [ { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "delegatedTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "firstMinters", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCreatorRewardRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCustomRenderer", "outputs": [ { "internalType": "contract IRenderer1155", "name": "customRenderer", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getRoyalties", "outputs": [ { "components": [ { "internalType": "uint32", "name": "royaltyMintSchedule", "type": "uint32" }, { "internalType": "uint32", "name": "royaltyBPS", "type": "uint32" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" } ], "internalType": "struct ICreatorRoyaltiesControl.RoyaltyConfiguration", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenInfo", "outputs": [ { "components": [ { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "totalMinted", "type": "uint256" } ], "internalType": "struct IZoraCreator1155TypesV1.TokenData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "contractName", "type": "string" }, { "internalType": "string", "name": "newContractURI", "type": "string" }, { "components": [ { "internalType": "uint32", "name": "royaltyMintSchedule", "type": "uint32" }, { "internalType": "uint32", "name": "royaltyBPS", "type": "uint32" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" } ], "internalType": "struct ICreatorRoyaltiesControl.RoyaltyConfiguration", "name": "defaultRoyaltyConfiguration", "type": "tuple" }, { "internalType": "address payable", "name": "defaultAdmin", "type": "address" }, { "internalType": "bytes[]", "name": "setupActions", "type": "bytes[]" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "role", "type": "uint256" } ], "name": "isAdminOrRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "metadataRendererContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IMinter1155", "name": "minter", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "address[]", "name": "rewardsRecipients", "type": "address[]" }, { "internalType": "bytes", "name": "minterArguments", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "mintTokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "quantities", "type": "uint256[]" }, { "internalType": "contract IMinter1155", "name": "minter", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address[]", "name": "rewardsRecipients", "type": "address[]" }, { "internalType": "bytes", "name": "minterArguments", "type": "bytes" } ], "name": "mintWithMints", "outputs": [ { "internalType": "uint256", "name": "quantityMinted", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "contract IMinter1155", "name": "minter", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes", "name": "minterArguments", "type": "bytes" }, { "internalType": "address", "name": "mintReferral", "type": "address" } ], "name": "mintWithRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "permissions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "permissionBits", "type": "uint256" } ], "name": "removePermission", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "royalties", "outputs": [ { "internalType": "uint32", "name": "royaltyMintSchedule", "type": "uint32" }, { "internalType": "uint32", "name": "royaltyBPS", "type": "uint32" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" } ], "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "fundsRecipient", "type": "address" } ], "name": "setFundsRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "contract IRenderer1155", "name": "renderer", "type": "address" } ], "name": "setTokenMetadataRenderer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ITransferHookReceiver", "name": "transferHook", "type": "address" } ], "name": "setTransferHook", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newURI", "type": "string" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" } ], "name": "setupNewToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newURI", "type": "string" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "internalType": "address", "name": "createReferral", "type": "address" } ], "name": "setupNewTokenWithCreateReferral", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supportedPremintSignatureVersions", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newURI", "type": "string" }, { "internalType": "string", "name": "_newName", "type": "string" } ], "name": "updateContractMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "updateCreateReferral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "uint32", "name": "royaltyMintSchedule", "type": "uint32" }, { "internalType": "uint32", "name": "royaltyBPS", "type": "uint32" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" } ], "internalType": "struct ICreatorRoyaltiesControl.RoyaltyConfiguration", "name": "newConfiguration", "type": "tuple" } ], "name": "updateRoyaltiesForToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "_newURI", "type": "string" } ], "name": "updateTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
610140346200022957601f6200611738819003918201601f1916830191906001600160401b038311848410176200022e5781608092859260409586528339810103126200022957620000518262000244565b90620000606020840162000244565b926200007c60606200007484840162000244565b920162000244565b3060805261271060a052926001600160a01b03918216801580156200021e575b6200020d5760e05260c0526000549060ff8260081c1615918280159062000200575b80620001e6575b620001d55760ff19811660011760005582620001c2575b5080610100951685526101209316835262000187575b5190615ebd92836200025a843960805183818161241c015281816124b301526128bd015260a05183612f0b015260c051838181614a0701528181614eca01528181614ef201528181614f1b0152614f42015260e0518381816149820152614a46015251828181612528015261293001525181818161067901528181610fe4015281816132600152818161342901526146ca0152f35b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986020825160018152a1620000f2565b61ffff19166101011760005538620000dc565b8351633d5c224160e11b8152600490fd5b50303b151580620000c55750600160ff82161415620000c5565b5060ff81161515620000be565b8351632d87658960e01b8152600490fd5b50828216156200009c565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620002295756fe6080604052600436101561001b575b361561001957600080fd5b005b6000803560e01c8062fdd58e14613931578063011442011461391557806301ffc9a71461381757806306fdde0314613764578063086bbace146133545780630e89341c1461333457806310a7eb5d146132d457806313966db51461323957806313af4035146131d157806317bd48bb1461316057806318711c7d1461314457806318e97fd114612fb757806323bd038614612f645780632a55205a14612edc5780632eb2c2d614612b86578063300ecdb914612b3e578063359f130214612ac85780633659cfe6146128965780633ccfd60b146127d65780634e1273f4146126e75780634f1ef2861461247457806352d1902d146124095780635c60da1b146123d35780635d0f6cba146122805780635e4e0404146122615780636661a9ba14612106578063674cbae61461208557806369a5b302146120515780636b20c45414611dd8578063709e537f14611d5757806375794a3c14611d3857806379502c5514611cdd5780637dafae4d14611ca95780637f2dc61c14611bc85780637f77f57414611b795780638a08eb4c1461169b5780638c7a63ae146116275780638da5cb5b146115fd5780638ec998a01461159d578063929a71281461158257806395d89b41146115245780639c5c63c91461148b5780639dbb844d146114065780639ebb8324146113d2578063a0a8e4601461138b578063a22cb465146112ec578063a453eaf0146112d0578063a457c673146112ae578063ac9650d814611216578063afed7e9e14611078578063bb3bafd61461104c578063bc197c8114610f4b578063bdd864f214610f11578063c046435614610ef5578063c238d1ee14610e91578063d258609a14610e28578063d904b94a14610c62578063dd15e05f14610c2e578063e72878b414610be8578063e74d86c214610bb7578063e8a3d48514610b83578063e985e9c514610b2f578063ed788913146109c4578063ef71c82e1461072f578063f1b0d6bb14610713578063f23a6e61146106155763f242432a14610307575061000e565b346106125760a036600319011261061257610320613959565b61032861396f565b906064356044356084356001600160401b03811161060e5761034e903690600401613bdb565b6001600160a01b039384169333851415806105eb575b6105d9578086169081156105c7576101cb541680610545575b508287526020956097875260408820866000528752604060002054858110610533578590858a526097895260408a2088600052895203604060002055838852609787526040882082600052875260406000206103da868254613e20565b90558186604051868152878a8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43b610418578680f35b61045c93600087946040519687958694859363f23a6e6160e01b9b8c865233600487015260248601526044850152606484015260a0608484015260a48301906139d4565b03925af160009181610504575b506104e157505060019061047b613e88565b6308c379a0146104a8575b50610496575b3880808080808680f35b6040516377d5b49160e11b8152600490fd5b6104b0613ea6565b90816104bc5750610486565b6104dd60405192839262461bcd60e51b8452600484015260248301906139d4565b0390fd5b6001600160e01b03191614905061048c57604051633fbfe7f560e21b8152600490fd5b610525919250843d861161052c575b61051d8183613aa8565b810190613e68565b9038610469565b503d610513565b604051636eaa1ea960e11b8152600490fd5b803b156105c2576000604051809263417b2f9760e11b82523060048301523360248301528860448301528460648301528660848301528760a483015260e060c483015281838161059860e482018a6139d4565b03925af180156105b6571561037d576105b090613a29565b3861037d565b6040513d6000823e3d90fd5b600080fd5b604051631c53f61160e21b8152600490fd5b604051633e2ea01560e21b8152600490fd5b508487526098602052604087203360005260205260ff6040600020541615610364565b8580fd5b80fd5b50346106125760a03660031901126106125761062f613959565b5061063861396f565b506084356001600160401b03811161070f57610658903690600401613b5c565b5050604051631f63a8f160e11b81526001600160a01b0391906020816004817f000000000000000000000000000000000000000000000000000000000000000087165afa91821561070357916106d5575b501633036106c35760405163f23a6e6160e01b8152602090f35b6040516301061e8960e21b8152600490fd5b6106f6915060203d81116106fc575b6106ee8183613aa8565b810190614f93565b386106a9565b503d6106e4565b604051903d90823e3d90fd5b5080fd5b5034610612578060031936011261061257602060405160048152f35b5034610612576040366003190112610612576001600160401b036004358181116109c057610761903690600401613bdb565b6024358281116109bc57610779903690600401613bdb565b336000908152600080516020615e68833981519152602090815260409091205491939091601216158015906101fe90610998575b5015610972578480526101c682526040852090835190811161095e576107d38254613f50565b601f811161091b575b5082601f821160011461089257927f74b7c2afa3f89c562b59674a101e2c48bceeb27cdb620afefa14446f1ffa487b94928261085d9361084e968a91610887575b508160011b916000199060031b1c19161790555b61083a86614086565b6040519384936040855260408501906139d4565b908382039084015233956139d4565b0390a27fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad9628180a180f35b90508501513861081d565b82875283872090601f198316885b81811061090457508361084e96937f74b7c2afa3f89c562b59674a101e2c48bceeb27cdb620afefa14446f1ffa487b98969361085d96600194106108eb575b5050811b019055610831565b87015160001960f88460031b161c1916905538806108df565b91928660018192868b0151815501940192016108a0565b828752838720601f830160051c810191858410610954575b601f0160051c01905b81811061094957506107dc565b87815560010161093c565b9091508190610933565b634e487b7160e01b86526041600452602486fd5b604051634baa2a4d60e01b81523360048201526000602482015260106044820152606490fd5b905060008052825260406000203360005282526012604060002054161515386107ad565b8380fd5b8280fd5b503461061257806003193601126106125760405163ed78891360e01b8152818160048173fcf3ca72cc92f26af413923280c64cb4e8290c2e5af4908115610b24578291610a6c575b5060405190602092838301848452825180915260408401948060408360051b870101940192955b828710610a405785850386f35b909192938280610a5c600193603f198a820301865288516139d4565b9601920196019592919092610a33565b90503d8083833e610a7d8183613aa8565b810160209081838203126109bc5782516001600160401b039384821161060e57019080601f83011215610b2057815190610ab682613ac9565b94610ac46040519687613aa8565b828652848087019360051b85010193828511610b1c57858101935b858510610af3575050505050505038610a0c565b8451838111610b18578791610b0d86848094870101614793565b815201940193610adf565b8980fd5b8780fd5b8480fd5b6040513d84823e3d90fd5b503461061257604036600319011261061257610b49613959565b6040610b5361396f565b9260018060a01b0380931681526098602052209116600052602052602060ff604060002054166040519015158152f35b5034610612578060031936011261061257610bb3610b9f615377565b6040519182916020835260208301906139d4565b0390f35b5034610612576020366003190112610612576020610bd6600435615b94565b6040516001600160a01b039091168152f35b5034610612576020366003190112610612576004356000196101c85401818103610c10578280f35b6044925060405191634fa09b3f60e01b835260048301526024820152fd5b503461061257602036600319011261061257602090600435815261012d8252604060018060a01b0391205416604051908152f35b503461061257606036600319011261061257600435610c7f61396f565b906044356001600160401b0381116109bc57610c9f903690600401613b5c565b91806000526101fe936020948086526040600020336000528652600a604060002054161590811591610e04575b5015610dde576001600160a01b031690610ce68183614197565b6040516301ffc9a760e01b8152636890e5b360e01b60048201528581602481865afa908115610dd3578791610da6575b5015610d8d578360241161060e57600483013503610d7b57828580949381946040519384928337810182815203925af190610d4f613d7a565b9115610d59578280f35b6104dd60405192839263a5fa8d2b60e01b8452600484015260248301906139d4565b60405163fe486c2b60e01b8152600490fd5b6040516370adc70360e11b815260048101839052602490fd5b610dc69150863d8811610dcc575b610dbe8183613aa8565b81019061504d565b38610d16565b503d610db4565b6040513d89823e3d90fd5b604051634baa2a4d60e01b81523360048201526024810183905260086044820152606490fd5b90506000805285526040600020336000528552600a60406000205416151538610ccc565b503461061257604036600319011261061257600435906001600160401b038211610612576020610e84610e5e3660048601613b5c565b610e6733614297565b610e6f614030565b610e7f3392602435923691613ba4565b614312565b6001606555604051908152f35b503461061257608036600319011261061257610eab613959565b602435606435916001600160401b0383116109bc57610ed1610eed933690600401613bdb565b91610eda614030565b610ee48133614197565b60443591615065565b600160655580f35b5034610612578060031936011261061257602060405160028152f35b50346106125760203660031901126106125760043563ffffffff81168091036105c257816040916020935261023383522054604051908152f35b50346106125760a036600319011261061257610f65613959565b50610f6e61396f565b506001600160401b036044358181116109c057610f8f9036906004016139f9565b50506064358181116109c057610fa99036906004016139f9565b505060843590811161070f57610fc3903690600401613b5c565b5050604051631f63a8f160e11b81526001600160a01b0391906020816004817f000000000000000000000000000000000000000000000000000000000000000087165afa918215610703579161102e575b501633036106c35760405163bc197c8160e01b8152602090f35b611046915060203d81116106fc576106ee8183613aa8565b38611014565b503461061257602036600319011261061257610bb361106c600435615bc9565b60405191829182613d02565b50346106125760803660031901126106125760043560603660231901126105c257604051906110a682613a3c565b63ffffffff60243581811681036105c257835260443581811681036105c2576020848101918252606435906001600160a01b0380831683036105c25760408701928352856000526101fe808352604060002033600052835260226040600020541615908115916111f2575b50156111ce57848751166111c5575b82511615806111b9575b6111a75784600052610160815263ffffffff60201b6040600020948751169185549451901b1691600160401b600160e01b03905160401b169263ffffffff60e01b1617171790557f5837d55897cfc337f160a71d7b63a047abd50a3a8834f1c5d70f338846358c6d604051806111a1339582613d02565b0390a380f35b604051630d9b92f160e01b8152600490fd5b5083835116151561112a565b60008752611120565b6064868360405191634baa2a4d60e01b835233600484015260248301526044820152fd5b90506000805282526040600020336000528252602260406000205416151538611111565b50346106125760208060031936011261070f576004356001600160401b0381116109c05761125261124c849236906004016139f9565b90615c91565b60405191838301848452825180915260408401948060408360051b870101940192955b8287106112825785850386f35b90919293828061129e600193603f198a820301865288516139d4565b9601920196019592919092611275565b50346106125760206112c86112c236613bf6565b90613f3d565b604051908152f35b5034610612578060031936011261061257602060405160108152f35b503461061257604036600319011261061257611306613959565b602435908115158092036109c0576001600160a01b0316903382146113795733835260986020526040832082600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b604051636b3fa0d960e11b8152600490fd5b5034610612578060031936011261061257610bb36040516113ab81613a57565b6006815265322e31302e3160d01b60208201526040519182916020835260208301906139d4565b50346106125760203660031901126106125760209060043581526102328252604060018060a01b0391205416604051908152f35b5060a03660031901126106125761141b613959565b606435906001600160401b0382116109c05761143e610eed923690600401613b5c565b9161144761399b565b90611450614030565b6040519161145d83613a57565b600183526020368185013761147183613de9565b6001600160a01b039091169052604435906024359061468b565b503461061257604036600319011261061257806024356004356001600160401b038211611520576114c183923690600401613bdb565b906114cc8133614210565b6001600160a01b03906114de90615b94565b1682602083519301915af16114f1613d7a565b90156114fb575080f35b60405163a5fa8d2b60e01b8152602060048201529081906104dd9060248301906139d4565b5050fd5b503461061257806003193601126106125760405160208082528160605191828183015260005b83811061156c5750508160006040809484010152601f80199101168101030190f35b608081015185820160400152849250810161154a565b50346106125780600319360112610612576020604051818152f35b5034610612576115ac36613ca9565b916115b78133614629565b60008181526101fe602090815260408083206001600160a01b039590951680845294909152812080549490941793849055600080516020615e088339815191529080a480f35b50346106125780600319360112610612576101c9546040516001600160a01b039091168152602090f35b503461061257602036600319011261061257604081610bb39282805161164c81613a3c565b60608152826020820152015260043581526101c66020522060026040519161167383613a3c565b61167c81613f8a565b8352600181015460208401520154604082015260405191829182613cd3565b50346106125760e0366003190112610612576004356001600160401b03811161070f576116cc903690600401613bdb565b6024356001600160401b0381116109c0576116eb903690600401613bdb565b60603660431901126105c25760405161170381613a3c565b60443563ffffffff811681036105c257815260643563ffffffff811681036105c25760208201526084356001600160a01b03811681036105c257604082015260a4356001600160a01b03811690036105c25760c4356001600160401b038111610b20576117749036906004016139f9565b909161177e614030565b855493600885901c60ff1615801590611b6d575b80611b55575b611b4357600160ff19861617875560ff8560081c1615611b32575b60ff875460081c1615611b215760016065556117d960a4356001600160a01b0316615b51565b6101c890815491600183019055604051906117f382613a3c565b81526000602082015260006040820152816000526101c6602052604060002081518051906001600160401b038211611b0b5781906118318454613f50565b601f8111611abb575b50602090601f8311600114611a4f57600092611a44575b50508160011b916000199060031b1c19161781555b60208201516001820155600260408301519101557f5086d1bcea28999da9875111e3592688fbfa821db63214c695ca35768080c2fe604051806118aa339482613cd3565b0390a363ffffffff815116611a3b575b60408101516001600160a01b03161580611a28575b6111a75760ff946119829160008052610160602052604060002063ffffffff82511681549063ffffffff60201b602085015160201b1690600160401b600160e01b03604086015160401b169263ffffffff60e01b16171717905560007f5837d55897cfc337f160a71d7b63a047abd50a3a8834f1c5d70f338846358c6d6040518061195b339582613d02565b0390a361197260a4356001600160a01b0316615534565b61197d60a4356155b0565b614086565b806119d4575b505060081c161561199b57600160655580f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1610eed565b6119e6916119e133615b51565b615c91565b50336000818152600080516020615e6883398151915260205260408120805460021916908190559190600080516020615e088339815191528180a43880611988565b5063ffffffff60208201511615156118cf565b600081526118ba565b015190503880611851565b9250836000526020600020906000935b601f1984168510611aa0576001945083601f19811610611a87575b505050811b018155611866565b015160001960f88460031b161c19169055388080611a7a565b81810151835560209485019460019093019290910190611a5f565b909150836000526020600020601f840160051c810160208510611b04575b90849392915b601f830160051c82018110611af557505061183a565b60008155859450600101611adf565b5080611ad9565b634e487b7160e01b600052604160045260246000fd5b6040516296bfb160e81b8152600490fd5b61ffff1985166101011787556117b3565b604051633d5c224160e11b8152600490fd5b50303b1515806117985750600160ff86161415611798565b5060ff85161515611792565b5034610612576020366003190112610612576040606091600435815261016060205220546040519063ffffffff80821683528160201c16602083015260018060a01b039060401c166040820152f35b5034610612576020366003190112610612576004356001600160a01b0381169081900361070f57611bf8336145a3565b80611c34575b6101cb80546001600160a01b03191690911790556040516002903390600080516020615de883398151915290806111a18161530c565b6040516301ffc9a760e01b815262123aaf60e51b6004820152602081602481855afa908115611c9e578391611c80575b50611bfe576024906040519062be74ab60e51b82526004820152fd5b611c98915060203d8111610dcc57610dbe8183613aa8565b38611c64565b6040513d85823e3d90fd5b50346106125760203660031901126106125760209060043581526102318252604060018060a01b0391205416604051908152f35b503461061257806003193601126106125760c06101c9546101ca54906101cb54906040519260018060a01b0391828116855260a01c6020850152818116604085015260a01c60608401528116608083015260a01c60a0820152f35b503461061257806003193601126106125760206101c854604051908152f35b50346106125760a0366003190112610612576001600160401b036004358181116109c057611d89903690600401613bdb565b916044359182116106125750611da3903690600401613b5c565b916064356001600160a01b03811681036105c257602093610e8493611dc661399b565b93611dcf614030565b6024359061568d565b5034610612576003199060603683011261061257611df4613959565b6001600160401b036024358181116109bc57611e149036906004016139f9565b949091604435908111610b2057611e2f9036906004016139f9565b6001600160a01b039685881695919491338714158061202e575b6120105750611e669291611e5e913691613c0c565b933691613c0c565b948315611ffe5782519186518303611fec5760405191611e8583613a8d565b8683526101cb54169182611f53575b505050835b818110611eea5750507f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb611ed68495604051918291339583613e43565b0390a480604051611ee681613a8d565b5280f35b611ef48184613e0c565b5190611f008188613e0c565b51828752609760208181526040892088600052815260406000205491838310611f41576001958a528152604089209088600052520360406000205501611e99565b604051632fc4b76160e11b8152600490fd5b823b156105c257879285600088611fc78296611fa896611fb86040519a8b998a988997634058856760e11b89523060048a01523360248a0152604489015288606489015260e0608489015260e4880190613c75565b90848783030160a4880152613c75565b918483030160c48501526139d4565b03925af180156105b657611fdd575b8080611e94565b611fe690613a29565b38611fd6565b60405163f9532c3960e01b8152600490fd5b6040516345d40ad560e01b8152600490fd5b6040516341ce11f960e11b81529081906104dd9033600484016152f2565b508688526098602052604088203360005260205260ff6040600020541615611e49565b50346106125760203660031901126106125760209060043581526101c78252604060018060a01b0391205416604051908152f35b5034610612576060366003190112610612576004356001600160401b03811161070f57906120d260406120be6020943690600401613b5c565b92906120c8613985565b93610e6733614297565b8084526102318552922080546001600160a01b0319166001600160a01b039092169190911790556001606555604051908152f35b5034610612576040366003190112610612576004356024356001600160a01b038116908190036109c057612138614030565b6121428233614210565b81835261012d60209081526040842080546001600160a01b0319168317905590806121ec575b6040513382857f5010f780a0de79bcfb9f3d6fec3cfe29758ef5c5800d575af709bc590bd78ade8880a484846121cc5750507f56e810c8cae84731149f628981d25769a084570b9ba6eebf3c32879e3dce56099250604051908152a1600160655580f35b6040925083600080516020615e28833981519152948352820152a2610eed565b6040516301ffc9a760e01b8152633de3f32360e11b60048201528281602481855afa908115612256578591612239575b50612168576024906040519063da755beb60e01b82526004820152fd5b6122509150833d8511610dcc57610dbe8183613aa8565b3861221c565b6040513d87823e3d90fd5b5034610612576020366003190112610612576020610bd6600435614ff9565b50346106125761228f36613ca9565b6001600160a01b039290918316338114806123af575b156123a0575b60008281526101fe602081815260408084208585528252832080549619909616958690559490939183908390600080516020615e088339815191529080a4159182612391575b8261236e575b5050612301578280f35b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09160006040926101c99283549360018060a01b031985169055845193168352820152a16000604051600080516020615de88339815191523391806123658161530c565b0390a338808280f35b9091508480528252604084209060005281526002604060002054161538806122f7565b6101c9548516821492506122f1565b6123aa8233614629565b6122ab565b508185526101fe6020526040852033600052602052828060406000205416146122a5565b5034610612578060031936011261061257600080516020615e48833981519152546040516001600160a01b039091168152602090f35b50346106125780600319360112610612577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612462576020604051600080516020615e488339815191528152f35b604051635e4c25f160e01b8152600490fd5b50604036600319011261061257612489613959565b6024356001600160401b0381116109c0576124a8903690600401613bdb565b906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116903082146126d557600080516020615e4883398151915290808254169283036126c3578392612502336145a3565b604051906321f7434760e01b825281806125236020978894600484016152f2565b0381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd35787916126a6575b501561060e577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612598575050506125959150613d33565b80f35b8316906040516352d1902d60e01b81528381600481865afa60009181612677575b506125d05760405163e5ec176960e01b8152600490fd5b03612665576125de83613d33565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a283511580159061265d575b61261e575b5050505080f35b823b1561264e575082600092839261264495519201905af461263e613d7a565b90613f14565b5038808080612617565b63369891e760e01b8152600490fd5b506001612612565b6040516308373ebf60e41b8152600490fd5b90918582813d831161269f575b61268e8183613aa8565b8101031261061257505190386125b9565b503d612684565b6126bd9150843d8611610dcc57610dbe8183613aa8565b38612558565b6040516364cd8d1960e01b8152600490fd5b604051631932df4560e01b8152600490fd5b5034610612576040366003190112610612576001600160401b036004358181116109c057612719903690600401613b3e565b906024359081116109c057612732903690600401613c5a565b815191815183036127c45761274683613ac9565b936127546040519586613aa8565b838552601f1961276385613ac9565b013660208701375b8381106127885760405160208082528190610bb390820188613c75565b6001906127b36001600160a01b036127a08386613e0c565b51166127ac8387613e0c565b5190613daa565b6127bd8288613e0c565b520161276b565b60405163133933f760e21b8152600490fd5b50346106125780600319360112610612576127f033615acc565b801561286e575b15612848574760018060a01b036101ca8380808086868654166204baf0f161281d613d7a565b5015612827578380f35b604493505416906040519163292264c360e21b835260048301526024820152fd5b604051634baa2a4d60e01b81523360048201526000602482015260206044820152606490fd5b50336000908152600080516020615e68833981519152602052604090205460221615156127f7565b50346106125760208060031936011261070f576128b1613959565b906001600160a01b03907f00000000000000000000000000000000000000000000000000000000000000008216903082146126d557600080516020615e4883398151915291838354169081036126c357818561292b92612910336145a3565b6040516321f7434760e01b81529384928392600484016152f2565b0381877f0000000000000000000000000000000000000000000000000000000000000000165afa908115612abd578691612aa0575b5015610b205760405191818301938385106001600160401b03861117611b0b578460405286845260ff7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354166000146129c157505050505061259590613d33565b6040516352d1902d60e01b8152908616928082600481875afa918291600093612a6f575b50506129fd5760405163e5ec176960e01b8152600490fd5b0361266557612a0b84613d33565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2815115801590612a67575b612a4a575050505080f35b833b1561264e575061264492600092839251915af461263e613d7a565b506000612a3f565b8181949293943d8311612a99575b612a878183613aa8565b810103126106125750519038806129e5565b503d612a7d565b612ab79150823d8411610dcc57610dbe8183613aa8565b38612960565b6040513d88823e3d90fd5b5060a036600319011261061257612add613959565b6001600160401b03906064358281116109bc57612afe9036906004016139f9565b9091608435938411610b2057612b30612b1e610eed953690600401613b5c565b949093612b29614030565b3691613ae0565b90604435906024359061468b565b5034610612576040366003190112610612576040612b5a61396f565b9160043581526101fe602052209060018060a01b03166000526020526020604060002054604051908152f35b50346106125760a036600319011261061257612ba0613959565b612ba861396f565b6001600160401b0390604435828111610b2057612bc9903690600401613c5a565b9160643581811161060e57612be2903690600401613c5a565b9060843590811161060e57612bfb903690600401613bdb565b926001600160a01b039085821633141580612eb7575b6105d9578051835181036127c457828516156105c757826101cb541680612e20575b50875b818110612d9c57505060405182851690838816907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180612c79898883613e43565b0390a4833b612c86578680f35b60405163bc197c8160e01b808252336004830152968316602482015260a060448201529485938492612cbc9060a4850190613c75565b838103600319016064850152612cd191613c75565b828103600319016084840152612ce6916139d4565b0392169181865a94602095f1839181612d7c575b50612d5b5750506001612d0b613e88565b6308c379a014612d24575b610496573880808080808680f35b612d2c613ea6565b80612d375750612d16565b60405162461bcd60e51b8152602060048201529081906104dd9060248301906139d4565b6001600160e01b0319161461048c57604051633fbfe7f560e21b8152600490fd5b612d9591925060203d811161052c5761051d8183613aa8565b9038612cfa565b612da68184613e0c565b5190612db28187613e0c565b51828b52609760205260408b20868b1660005260205260406000205481811061053357836001948d52609760205260408d20888b166000526020526040600020612dfd848254613e20565b90558c52609760205260408c20878c166000526020520360406000205501612c36565b803b156105c257604051634058856760e11b81523060048201523360248201528885166044820152868516606482015260e06084820152906000908290818381612e998d612e878d612e7560e486018e613c75565b8581036003190160a487015290613c75565b8381036003190160c4850152906139d4565b03925af180156105b65715612c3357612eb190613a29565b38612c33565b5081861687526098602052604087203360005260205260ff6040600020541615612c11565b503461061257612ef8612f09612ef136613bf6565b9290615bc9565b9163ffffffff602084015116613f3d565b7f00000000000000000000000000000000000000000000000000000000000000008015612f4e5760409283015183516001600160a01b03909116815291046020820152f35b634e487b7160e01b600052601260045260246000fd5b503461061257606036600319011261061257612f7e613959565b6024356000526101fe60205260406000209060018060a01b03166000526020526020604435600217604060002054161515604051908152f35b5034610612576040366003190112610612576001600160401b03906004356024358381116109c057612fed903690600401613bdb565b92612ff88233614210565b81156109c0576040519180600080516020615e28833981519152602094858152806130258782018a6139d4565b0390a283526101c6825260408320918451918211613130576130478354613f50565b601f81116130ed575b5080601f831160011461308b5750839482939492613080575b50508160011b916000199060031b1c191617905580f35b015190503880613069565b90601f198316958486528286209286905b8882106130d5575050836001959697106130bc575b505050811b01905580f35b015160001960f88460031b161c191690553880806130b1565b8060018596829496860151815501950193019061309c565b838552818520601f840160051c810191838510613126575b601f0160051c01905b81811061311b5750613050565b85815560010161310e565b9091508190613105565b634e487b7160e01b84526041600452602484fd5b5034610612578060031936011261061257602060405160088152f35b50346106125760403660031901126106125760043561317d61396f565b8183526102316020819052604084205491926001600160a01b0392831633036131bf5784526020526040832080546001600160a01b0319169190921617905580f35b604051632afb0ecf60e01b8152600490fd5b5034610612576020366003190112610612576131eb613959565b6131f4336145a3565b8180526101fe6020526040822060018060a01b038216600052602052600260406000205416156132275761259590615534565b60405163131dd3a760e31b8152600490fd5b50346106125780600319360112610612576040516367c9b01760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561070357906132a2575b602090604051908152f35b506020813d82116132cc575b816132bb60209383613aa8565b810103126105c25760209051613297565b3d91506132ae565b5034610612576020366003190112610612576132ee613959565b6132f733615acc565b801561330c575b1561284857612595906155b0565b50336000908152600080516020615e68833981519152602052604090205460221615156132fe565b503461061257602036600319011261061257610bb3610b9f6004356154c2565b5060c0366003190112610612576004356001600160401b03811161070f576133809036906004016139f9565b6024356001600160401b0381116109bc5761339f9036906004016139f9565b91906133a9613985565b936084356001600160401b038111613760576133c9903690600401613b3e565b60a4356001600160401b038111610b1c576133e8903690600401613b5c565b9390926134006064356001600160a01b038a16614197565b889587810361374e57895b8181106137185750604051631f63a8f160e11b8152926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa93841561370d578b946136ec575b506001600160a01b0384163b156136e857604051631759616b60e11b815233600482015230602482015260a060448201528b8160206134bb8d6134a860a48501898b614fb2565b8481036003190160648601529087614fb2565b82810360031981016084850152908490520181836001600160a01b038a165af180156136dd576136be575b50918a80949261352a613518956040519c8d978896879563419f5da360e11b8752606060048801526064870191614fb2565b84810360031901602486015291614fb2565b30604483015203926001600160a01b03165af1948515610dd35787956135ca575b50865b85518810156135aa576001600160a01b036135698988613e0c565b5151166135985761358c6135929160206135838b8a613e0c565b51015190613e20565b97614fea565b9661354e565b60405163995ddc0560e01b8152600490fd5b849550906112c89491602097606435926135c48334613e20565b916147f6565b9094503d8088833e6135dc8183613aa8565b6020828281010312610b1c5781516001600160401b0381116136ba57820190808301601f830112156136ba5781519061361482613ac9565b936136226040519586613aa8565b828552602085019382820160208560061b830101116136b6579360208501945b60208560061b820101861061365e57505050505050933861354b565b60408685850103126136b257604051918260408101106001600160401b03604085011117611b0b5760206040918483839601845261369b8a614fd6565b8152828a0151838201528152019601959150613642565b8c80fd5b8b80fd5b8880fd5b9061352a94929b6136d26135189593613a29565b9b92945090926134e6565b6040513d8e823e3d90fd5b8a80fd5b61370691945060203d6020116106fc576106ee8183613aa8565b9238613461565b6040513d8d823e3d90fd5b968888101561373a5761358c613735918960051b86013590613e20565b61340b565b634e487b7160e01b8b52603260045260248bfd5b60405163263529d560e21b8152600490fd5b8680fd5b503461061257806003193601126106125760405181610193805461378781613f50565b808552916001918083169081156137ec57506001146137b1575b610bb385610b9f81890382613aa8565b835260208084209095505b8284106137d95750505081610bb393610b9f9282010193386137a1565b80548585018701529285019281016137bc565b9050610bb39650610b9f9450602092508593915060ff191682840152151560051b82010193386137a1565b50346106125760203660031901126106125760043563ffffffff60e01b811680910361070f5760209063152a902d60e11b8114908115613904575b81156138c4575b81156138b3575b81156138a2575b8115613891575b8115613880575b506040519015158152f35b630435dd6760e11b14905082613875565b631acf898160e11b8114915061386e565b63709e537f60e01b81149150613867565b63ed78891360e01b81149150613860565b9050636cdb3d1360e11b811480156138f4575b80156138e4575b90613859565b506301ffc9a760e01b81146138de565b506303a24d0760e21b81146138d7565b6344393f0b60e01b81149150613852565b5034610612578060031936011261061257602090604051908152f35b50346106125760403660031901126106125760206112c8613950613959565b60243590613daa565b600435906001600160a01b03821682036105c257565b602435906001600160a01b03821682036105c257565b604435906001600160a01b03821682036105c257565b608435906001600160a01b03821682036105c257565b60005b8381106139c45750506000910152565b81810151838201526020016139b4565b906020916139ed815180928185528580860191016139b1565b601f01601f1916010190565b9181601f840112156105c2578235916001600160401b0383116105c2576020808501948460051b0101116105c257565b6001600160401b038111611b0b57604052565b606081019081106001600160401b03821117611b0b57604052565b604081019081106001600160401b03821117611b0b57604052565b60a081019081106001600160401b03821117611b0b57604052565b602081019081106001600160401b03821117611b0b57604052565b90601f801991011681019081106001600160401b03821117611b0b57604052565b6001600160401b038111611b0b5760051b60200190565b9291613aeb82613ac9565b91613af96040519384613aa8565b829481845260208094019160051b81019283116105c257905b828210613b1f5750505050565b81356001600160a01b03811681036105c2578152908301908301613b12565b9080601f830112156105c257816020613b5993359101613ae0565b90565b9181601f840112156105c2578235916001600160401b0383116105c257602083818601950101116105c257565b6001600160401b038111611b0b57601f01601f191660200190565b929192613bb082613b89565b91613bbe6040519384613aa8565b8294818452818301116105c2578281602093846000960137010152565b9080601f830112156105c257816020613b5993359101613ba4565b60409060031901126105c2576004359060243590565b9291613c1782613ac9565b91613c256040519384613aa8565b829481845260208094019160051b81019283116105c257905b828210613c4b5750505050565b81358152908301908301613c3e565b9080601f830112156105c257816020613b5993359101613c0c565b90815180825260208080930193019160005b828110613c95575050505090565b835185529381019392810192600101613c87565b60609060031901126105c257600435906024356001600160a01b03811681036105c2579060443590565b6020815260606040613cf0845183602086015260808501906139d4565b93602081015182850152015191015290565b9190916040606082019363ffffffff80825116845260208201511660208401528160018060a01b0391015116910152565b803b15613d6857600080516020615e4883398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405163529880eb60e01b8152600490fd5b3d15613da5573d90613d8b82613b89565b91613d996040519384613aa8565b82523d6000602084013e565b606090565b6001600160a01b0316908115613dd757600052609760205260406000209060005260205260406000205490565b604051632188330d60e21b8152600490fd5b805115613df65760200190565b634e487b7160e01b600052603260045260246000fd5b8051821015613df65760209160051b010190565b91908201809211613e2d57565b634e487b7160e01b600052601160045260246000fd5b9091613e5a613b5993604084526040840190613c75565b916020818403910152613c75565b908160209103126105c257516001600160e01b0319811681036105c25790565b60009060033d11613e9557565b905060046000803e60005160e01c90565b600060443d10613b5957604051600319913d83016004833e81516001600160401b03918282113d602484011117613f0357818401948551938411613f0b573d85010160208487010111613f035750613b5992910160200190613aa8565b949350505050565b50949350505050565b15613f1c5790565b805115613f2b57805190602001fd5b6040516350a28c9b60e11b8152600490fd5b81810292918115918404141715613e2d57565b90600182811c92168015613f80575b6020831014613f6a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613f5f565b9060405191826000825492613f9e84613f50565b90818452600194858116908160001461400d5750600114613fca575b5050613fc892500383613aa8565b565b9093915060005260209081600020936000915b818310613ff5575050613fc893508201013880613fba565b85548884018501529485019487945091830191613fdd565b915050613fc894506020925060ff191682840152151560051b8201013880613fba565b600260655414614041576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b9081516001600160401b038111611b0b57610193906140a58254613f50565b601f811161414f575b50602080601f83116001146140eb5750819293946000926140e0575b50508160011b916000199060031b1c1916179055565b0151905038806140ca565b90601f198316958460005282600020926000905b8882106141375750508360019596971061411e575b505050811b019055565b015160001960f88460031b161c19169055388080614114565b806001859682949686015181550195019301906140ff565b600083815260208120601f840160051c8101926020851061418d575b601f0160051c01915b8281106141825750506140ae565b818155600101614174565b909250829061416b565b906141a28282615af9565b80156141df575b156141b2575050565b6064925060405191634baa2a4d60e01b835260018060a01b03166004830152602482015260046044820152fd5b506001600160a01b0382166000908152600080516020615e68833981519152602052604090205460061615156141a9565b9060008181526101fe9081602052604081209360018060a01b03169384825260205260126040822054161591821592614274575b50501561424f575050565b6064925060405191634baa2a4d60e01b83526004830152602482015260106044820152fd5b601292509060409181805260205281812085825260205220541615153880614244565b6142a081615b24565b80156142e1575b156142af5750565b604051634baa2a4d60e01b81526001600160a01b03909116600480830191909152600060248301526044820152606490fd5b506001600160a01b0381166000908152600080516020615e68833981519152602052604090205460061615156142a7565b9092916101c8918254926001840190556040519461432f86613a3c565b81865280602087015260006040870152836000526101c660205260406000209580519687516001600160401b038111611b0b5761436c8254613f50565b98601f8a1161455b575b87989950600097969750602090601f83116001146144c557928288937f1b944478023872bf91b25a13fdba3a686fdb1bf4dbb872f850240fad4b8cc06898969361448198966000926144ba575b50508160011b916000199060031b1c19161781555b60208201516001820155600260408301519101557f5086d1bcea28999da9875111e3592688fbfa821db63214c695ca35768080c2fe6040518061441c339482613cd3565b0390a360008581526101fe602090815260408083206001600160a01b03999099168084529890915281208054600217908190559087908790600080516020615e088339815191529080a4815161448d575b6040519283926040845260408401906139d4565b9060208301520390a390565b84600080516020615e2883398151915260405160208152806144b260208201876139d4565b0390a261446d565b0151905038806143c3565b908360005260206000209160005b601f19851681106145405750837f1b944478023872bf91b25a13fdba3a686fdb1bf4dbb872f850240fad4b8cc0689896936144819896936001938c97601f19811610614527575b505050811b0181556143d8565b015160001960f88460031b161c1916905538808061451a565b8183015184558b9950600190930192602092830192016144d3565b826000526020600020601f830160051c81019a60208410614599575b601f0160051c01995b8a811061458d5750614376565b60008155600101614580565b909a508a90614577565b6001600160a01b03166000818152600080516020615e688339815191526020526040812054600216158015906101fe90614607575b50156145e2575050565b6064925060405191634baa2a4d60e01b83526004830152602482015260026044820152fd5b90508180526020526040812082825260205260026040822054161515386145d8565b9060008181526101fe9081602052604081209360018060a01b03169384825260205260026040822054161591821592614668575b5050156145e2575050565b60029250906040918180526020528181208582526020522054161515388061465d565b6001600160a01b0396959493908781166146a58185615af9565b801561476c575b1561474757506020600498604051998a80926367c9b01760e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa9788156105b657600098614712575b5061470a84613fc89899613f3d565b9134916147f6565b976020893d821161473f575b8161472b60209383613aa8565b81010312610612575096519661470a6146fb565b3d915061471e565b6064908460405191634baa2a4d60e01b83526004830152602482015260046044820152fd5b506000818152600080516020615e68833981519152602052604090205460061615156146ac565b81601f820112156105c25780516147a981613b89565b926147b76040519485613aa8565b818452602082840101116105c257613b5991602080850191016139b1565b908060209392818452848401376000828201840152601f01601f1916010190565b9491979295909660009788978660005261023160205260018060a01b0360406000205416918215614f40575b805115614f18576001600160a01b039061483b90613de9565b5116905b6001600160a01b03821615614ef0575b61485888614ff9565b906001600160a01b03821615614ec8575b600089815261023260205260409020546001600160a01b0316818e8215614ec0575b614893614f68565b5010156148ac57604051633b78763760e21b8152600490fd5b8d8203614e1a576148bb614f68565b506148c4614f68565b63028df28c8082526020820162d91c14908181526040840182815260608501928352838702938785041487151715613e2d5761494161494192614949956305f5e10080910488528061491783518c613f3d565b0482528061492685518c613f3d565b04845261493486518b613f3d565b0485528651905190613e20565b905190613e20565b8303838111613e2d576080820152915b82519384614e1457506000915b60208401516040850151606086015160809096015191959192907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156105c25760405163faa3516f60e01b81526001600160a01b039687166004820152602481019890985298851660448801526064870195909552958316608486015260a485019690965291811660c484015260e48301939093527f00000000000000000000000000000000000000000000000000000000000000008316610104830152610124820193909352916000918391610144918391907f0000000000000000000000000000000000000000000000000000000000000000165af180156105b657614dfc575b50614ab59188916040519384928392636890e5b360e01b84523360048501528960248501528760448501528b606485015260a0608485015260a48401916147d5565b0381836001600160a01b038a165af1908115610dd3578791614c7c575b505193865b8551811015614c3757614aea8187613e0c565b5151614af58161502d565b614afe8161502d565b60018103614b9357506020614b138288613e0c565b5101516040818051810103126136ba576040614b3160208301614fd6565b91015190818911614b815789918291829182916001600160a01b03166204baf0f1614b5a613d7a565b5015614b6f57614b6a905b614fea565b614ad7565b6040516338dcead760e21b8152600490fd5b604051631913cf3760e21b8152600490fd5b80614b9f60029261502d565b03614c2e576020614bb08288613e0c565b510151906060828051810103126136ba57614bcd60208301614fd6565b916060604082015191015190878015159182614c23575b5050614c1157614b6a92614b65918860405192614c0084613a8d565b8d84526001600160a01b0316615065565b604051634cdcfbf960e01b8152600490fd5b141590508738614be4565b614b6a90614fea565b509350935094909350604051928352602083015260018060a01b0316907fb362243af1e2070d7d5bf8d713f2e0fab64203f1b71462afbe20572909788c5e60403392a4565b3d91508188823e614c8d8282613aa8565b6020818381010312610b1c578051906001600160401b0382116136ba57604082820184830103126136ba5760405192614cc584613a57565b828201516001600160401b0381116136e857818301601f82868601010112156136e85780848401015190614cf882613ac9565b92614d066040519485613aa8565b828452602084019181860160208560051b838a8a0101010111614df8576020818888010101925b60208560051b838a8a010101018410614d5a57505050505090602092918452010151602082015238614ad2565b83516001600160401b038111614df4576040888a0184018201858a0103601f190112614df45760405190614d8d82613a57565b602081858c8c01010101516003811015614dee578252604081858c8c0101010151906001600160401b038211614dee579260209392614ddd8b868096958f968a83988d8601950101010101614793565b838201528152019401939050614d2d565b50508f80fd5b8f80fd5b8d80fd5b614ab5929850614e0b90613a29565b60009791614a73565b91614966565b909a50614e25614f68565b50614e2e614f68565b9060008252602082018c6301b3f70891828152604085019283526001606086019262d91c148452151715613e2d57614ea9928f614941926149419160008952614e9c6305f5e1009182614e82855183613f3d565b04845282614e91875183613f3d565b048652875190613f3d565b0485528751905190613e20565b8c038c8111613e2d5760808301528b8e039b614959565b84925061488b565b7f00000000000000000000000000000000000000000000000000000000000000009150614869565b7f0000000000000000000000000000000000000000000000000000000000000000915061484f565b507f00000000000000000000000000000000000000000000000000000000000000009061483f565b7f00000000000000000000000000000000000000000000000000000000000000009250614822565b60405190614f7582613a72565b60006080838281528260208201528260408201528260608201520152565b908160209103126105c257516001600160a01b03811681036105c25790565b81835290916001600160fb1b0383116105c25760209260051b809284830137010190565b51906001600160a01b03821682036105c257565b6000198114613e2d5760010190565b6001600160a01b0390819060409061501090615bc9565b0151168061502857506101ca541680613b5957503090565b905090565b6003111561503757565b634e487b7160e01b600052602160045260246000fd5b908160209103126105c2575180151581036105c25790565b909291926000918183526101c694602094868652604096878620600281015460016150908683613e20565b9201548092116152c957505084865286526002878620016150b2838254613e20565b90556001600160a01b03838116939084156152b8576101cb54168061523f575b508486526097875287862084875287528786206150f0848254613e20565b905583868951878152858a8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628b3392a43b615132575b50505050505050565b61517492869286895180968195829463f23a6e6160e01b9a8b85523360048601528560248601526044850152606484015260a0608484015260a48301906139d4565b03925af1839181615220575b506151f7575050600191615192613e88565b6308c379a0146151c1575b50506151b157505b38808080808080615129565b516377d5b49160e11b8152600490fd5b6151c9613ea6565b91826151d5575061519d565b846104dd91505192839262461bcd60e51b8452600484015260248301906139d4565b6001600160e01b031916039150615210905057506151a5565b51633fbfe7f560e21b8152600490fd5b615238919250853d871161052c5761051d8183613aa8565b9038615180565b803b1561376057868951809263417b2f9760e11b82523060048301523360248301528260448301528760648301528860848301528660a483015260e060c483015281838161529060e482018a6139d4565b03925af180156152ae57156150d2576152a890613a29565b386150d2565b89513d89823e3d90fd5b88516310227bb960e31b8152600490fd5b6084918791868c5193631255c8fd60e01b85526004850152602484015260448301526064820152fd5b6001600160a01b0391821681529116602082015260400190565b6101c9546001600160a01b03808216835260a091821c60208401526101ca548082166040850152821c60608401526101cb549081166080840152811c9082015260c00190565b906020828203126105c25781516001600160401b0381116105c257613b599201614793565b6000805261012d6020527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a6639546001600160a01b039081168015615409575b16806153c45750613b59615417565b60006004916040519283809263e8a3d48560e01b82525afa9081156105b6576000916153ee575090565b613b59913d8091833e6154018183613aa8565b810190615352565b5080604060002054166153b5565b60008080526101c6908160205260409161543383832054613f50565b6154b2575080805261012d602052818120546001600160a01b0391908190831680156154a6575b60248551809581936303a24d0760e21b8352856004840152165afa92831561549c5750809261548857505090565b613b5992503d8091833e6154018183613aa8565b51903d90823e3d90fd5b5082848220541661545a565b81805260205220613b5990613f8a565b6000908082526101c6806020526154dc6040842054613f50565b6155215750816001600160a01b036154f383615b94565b16916024604051809481936303a24d0760e21b835260048301525afa91821561070357809261548857505090565b91613b5992604092825260205220613f8a565b6101c980546001600160a01b038381166001600160a01b03198316179092556040517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09390928392615588929116836152f2565b0390a16000604051600080516020615de88339815191523391806155ab8161530c565b0390a3565b6101ca80546001600160a01b0319166001600160a01b039092169190911790556040516001903390600080516020615de883398151915290806155ab8161530c565b91909160a0818403126105c257604051906001600160401b039060a0830182811184821017611b0b5760405282948151845260208201518381116105c2578161563c918401614793565b602085015260408201518381116105c25781615659918401614793565b604085015261566a60608301614fd6565b606085015260808201519283116105c2576080926156889201614793565b910152565b91956001600160a01b03949093908516918215615aba576156d5966156ec87926101c8549460409b8c519b8c99630f09500f60e31b8b5260c060048c015260c48b01906139d4565b9260248a01526003198984030160448a01526147d5565b9230606487015260848601521660a4840152826000968792038173fcf3ca72cc92f26af413923280c64cb4e8290c2e5af4938415615ab05785928690879661595c575b506020928385019163ffffffff808451168a52610233918287528b8b2054615947578b7f06c5a80e592816bd4f60093568e69affa68b5e378a189b2f59a1121703de47de88836157d08a955191838101516157bd878301519760608401986157b060808c8c51169601519460a084519a8b9a8b528a015260a08901906139d4565b91878303908801526139d4565b91606085015283820360808501526139d4565b0390a15116946157df86615b24565b8015615928575b156159045760806158008d8a015160608b01513391614312565b9801511693878b5261023187528b8b2060018060a01b0319958682541617905551168952845284898920558488526102328452888820918254161790556158478551615c47565b96865b865181101561588b578061586b615864615886938a613e0c565b5130615d13565b615875828c613e0c565b52615880818b613e0c565b50614fea565b61584a565b5091945092955081948281526101fe808652828220338352865260021983832054169284835281875280832033845287528381842055600080516020615e08833981519152933386868680a48483528187528083208684528752600281842054179687928685528152818420908785525282205580a490565b6064868c8e5191634baa2a4d60e01b83526004830152602482015260046044820152fd5b508a80526101fe87528b8b20868c52875260068c8c20541615156157e6565b50969998975050509250505051168152205490565b93505093503d8086843e6159708184613aa8565b82019360608386031261060e578251946001600160401b0395868111610b1c57840160a081830312610b1c578851916159a883613a72565b8151888111610b1857816159bd9184016155f2565b83526020918281015163ffffffff811681036136e857838501528a8101518981116136e857816159f484608093615a089501614793565b8d8701526060810151606087015201614fd6565b608084015281860151888111610b185781615a249188016155f2565b958a810151908982116136e857019080601f83011215610b1857815190615a4a82613ac9565b99615a578d519b8c613aa8565b828b5284808c019360051b850101938285116136b257858101935b858510615a875750505050505050923861572f565b8451838111615aac578791615aa186848094870101614793565b815201940193615a72565b8e80fd5b86513d87823e3d90fd5b6040516329e96fa360e01b8152600490fd5b6001600160a01b03166000908152600080516020615e688339815191526020526040902054602216151590565b6000526101fe60205260406000209060018060a01b0316600052602052600660406000205416151590565b6001600160a01b03166000908152600080516020615e688339815191526020526040902054600616151590565b6001600160a01b03166000818152600080516020615e68833981519152602052604081208054600217908190559190600080516020615e088339815191528180a4565b600090815261012d60205260409020546001600160a01b0390811691908215615bba5750565b60008080526040902054169150565b6040805191615bd783613a3c565b6000908184528183602095828782015201528152816101609182855260018060a01b03928383832054841c16615c385781805285522092825193615c1a85613a3c565b549063ffffffff808316865282821c1690850152821c169082015290565b502092825193615c1a85613a3c565b90615c5182613ac9565b615c5e6040519182613aa8565b8281528092615c6f601f1991613ac9565b019060005b828110615c8057505050565b806060602080938501015201615c74565b9190615c9c81615c47565b9260005b828110615cac57505050565b8060051b820135601e19833603018112156105c2578201908135916001600160401b0383116105c25760200182360381136105c257615cf3615cf991615d0e943691613ba4565b30615d13565b615d038288613e0c565b526158808187613e0c565b615ca0565b90613b599160008060405193615d2885613a3c565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4615d73613d7a565b929015615dd45750815115615d86575090565b3b15615d8f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612d375750805190602001fdfe3be6d3a1d957610f7e900c66889b874cdc9f0c22901aa8be6ec3d2d04c14ca0f35fb03d0d293ef5b362761900725ce891f8f766b5a662cdd445372355448e7ca6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f4301e3e862ad13c0503d3de32ba4e2e40c90733d1da23c9df4d0addbcf6508a2646970667358221220b537232ad5225d6d5273d013bd0e17520710166f0c3c6d938bbf50085897502a64736f6c63430008110033000000000000000000000000ecfc2ee50409e459c554a2b0376f882ce916d853000000000000000000000000bc50029836a59a4e5e1bb8988272f46eba0f99000000000000000000000000007777777f279eba3d3ad8f4e708545291a6fdba8b00000000000000000000000077777770ca269366c7208afcf36fe2c6f7f7608b