[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "CannotIncreaseMaxMintableSupply", "type": "error" }, { "inputs": [], "name": "CosignerNotSet", "type": "error" }, { "inputs": [], "name": "GlobalWalletLimitOverflow", "type": "error" }, { "inputs": [], "name": "InitialOwnerCannotBeZero", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientStageTimeGap", "type": "error" }, { "inputs": [], "name": "InvalidCosignSignature", "type": "error" }, { "inputs": [], "name": "InvalidLimitArgsLength", "type": "error" }, { "inputs": [], "name": "InvalidProof", "type": "error" }, { "inputs": [], "name": "InvalidStage", "type": "error" }, { "inputs": [], "name": "InvalidStageArgsLength", "type": "error" }, { "inputs": [], "name": "InvalidStartAndEndTimestamp", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "type": "error" }, { "inputs": [], "name": "Mintable", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NewSupplyLessThanTotalSupply", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NoSupplyLeft", "type": "error" }, { "inputs": [], "name": "NotAuthorized", "type": "error" }, { "inputs": [], "name": "NotEnoughValue", "type": "error" }, { "inputs": [], "name": "NotMintable", "type": "error" }, { "inputs": [], "name": "NotSupported", "type": "error" }, { "inputs": [], "name": "NotTransferable", "type": "error" }, { "inputs": [], "name": "Reentrancy", "type": "error" }, { "inputs": [], "name": "RoyaltyOverflow", "type": "error" }, { "inputs": [], "name": "RoyaltyReceiverIsZeroAddress", "type": "error" }, { "inputs": [], "name": "StageSupplyExceeded", "type": "error" }, { "inputs": [], "name": "TimestampExpired", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "WalletGlobalLimitExceeded", "type": "error" }, { "inputs": [], "name": "WalletStageLimitExceeded", "type": "error" }, { "inputs": [], "name": "WithdrawFailed", "type": "error" }, { "inputs": [], "name": "WrongMintCurrency", "type": "error" }, { "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": "minter", "type": "address" } ], "name": "AuthorizedMinterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" } ], "name": "AuthorizedMinterRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "activeStage", "type": "uint256" } ], "name": "SetActiveStage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "SetBaseURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "cosigner", "type": "address" } ], "name": "SetCosigner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "SetGlobalWalletLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "SetMaxMintableSupply", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintCurrency", "type": "address" } ], "name": "SetMintCurrency", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "mintable", "type": "bool" } ], "name": "SetMintable", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "timestampExpirySeconds", "type": "uint256" } ], "name": "SetTimestampExpirySeconds", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "suffix", "type": "string" } ], "name": "SetTokenURISuffix", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "transferable", "type": "bool" } ], "name": "SetTransferable", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "TokenRoyaltySet", "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": "stage", "type": "uint256" }, { "indexed": false, "internalType": "uint80[]", "name": "price", "type": "uint80[]" }, { "indexed": false, "internalType": "uint80[]", "name": "mintFee", "type": "uint80[]" }, { "indexed": false, "internalType": "uint32[]", "name": "walletLimit", "type": "uint32[]" }, { "indexed": false, "internalType": "bytes32[]", "name": "merkleRoot", "type": "bytes32[]" }, { "indexed": false, "internalType": "uint24[]", "name": "maxStageSupply", "type": "uint24[]" }, { "indexed": false, "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "name": "UpdateStage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintCurrency", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "WithdrawERC20", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "addAuthorizedMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "uint256", "name": "cosignNonce", "type": "uint256" } ], "name": "assertValidCosign", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint32", "name": "limit", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "authorizedMint", "outputs": [], "stateMutability": "payable", "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": "", "type": "uint256[]" } ], "stateMutability": "view", "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": "contractNameAndVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" }, { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "getActiveStageFromTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "bool", "name": "waiveMintFee", "type": "bool" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "cosignNonce", "type": "uint256" } ], "name": "getCosignDigest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCosignNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCosigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getGlobalWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getMaxMintableSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintCurrency", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNumberStages", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "stage", "type": "uint256" } ], "name": "getStageInfo", "outputs": [ { "components": [ { "internalType": "uint80[]", "name": "price", "type": "uint80[]" }, { "internalType": "uint80[]", "name": "mintFee", "type": "uint80[]" }, { "internalType": "uint32[]", "name": "walletLimit", "type": "uint32[]" }, { "internalType": "bytes32[]", "name": "merkleRoot", "type": "bytes32[]" }, { "internalType": "uint24[]", "name": "maxStageSupply", "type": "uint24[]" }, { "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "internalType": "struct MintStageInfo1155", "name": "", "type": "tuple" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTimestampExpirySeconds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "initialOwner", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "minter", "type": "address" } ], "name": "isAuthorizedMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint32", "name": "limit", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "qty", "type": "uint32" } ], "name": "ownerMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "removeAuthorizedMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "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", "name": "cosigner", "type": "address" } ], "name": "setCosigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "setGlobalWalletLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "setMaxMintableSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint80[]", "name": "price", "type": "uint80[]" }, { "internalType": "uint80[]", "name": "mintFee", "type": "uint80[]" }, { "internalType": "uint32[]", "name": "walletLimit", "type": "uint32[]" }, { "internalType": "bytes32[]", "name": "merkleRoot", "type": "bytes32[]" }, { "internalType": "uint24[]", "name": "maxStageSupply", "type": "uint24[]" }, { "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "internalType": "struct MintStageInfo1155[]", "name": "newStages", "type": "tuple[]" } ], "name": "setStages", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestampExpirySeconds", "type": "uint256" } ], "name": "setTimestampExpirySeconds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "transferable", "type": "bool" } ], "name": "setTransferable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newURI", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri_", "type": "string" }, { "internalType": "uint256[]", "name": "maxMintableSupply", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "globalWalletLimit", "type": "uint256[]" }, { "internalType": "address", "name": "mintCurrency", "type": "address" }, { "internalType": "address", "name": "fundReceiver", "type": "address" }, { "components": [ { "internalType": "uint80[]", "name": "price", "type": "uint80[]" }, { "internalType": "uint80[]", "name": "mintFee", "type": "uint80[]" }, { "internalType": "uint32[]", "name": "walletLimit", "type": "uint32[]" }, { "internalType": "bytes32[]", "name": "merkleRoot", "type": "bytes32[]" }, { "internalType": "uint24[]", "name": "maxStageSupply", "type": "uint24[]" }, { "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "internalType": "struct MintStageInfo1155[]", "name": "initialStages", "type": "tuple[]" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator", "type": "uint96" } ], "name": "setup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "totalMintedByAddress", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60808060405234620000c4575f549060ff8260081c1662000072575060ff8082161062000037575b604051615aa89081620000c98239f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f62000027565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062fdd58e1461035357806301ffc9a71461034e578063020451381461034957806302fe53051461034457806304634d8d1461033f57806306fdde031461033a578063077f224a146103355780630e89341c1461033057806316dc705c1461032b57806322fe44c3146103265780632569296214610321578063274a204b1461031c5780632a55205a146103175780632d759d0f146103125780632eb2c2d61461030d5780632ed6d5e8146103085780633115bba71461030357806333bbbf06146102fe5780633ccfd60b146102f9578063424aa884146102f4578063475ae039146102ef5780634ae0402f146102ea5780634e1273f4146102e55780634f558e79146102e057806354d1f13d146102db5780635944c753146102d65780635f710f5c146102d157806370da24ee146102cc578063715018a6146102c757806372bbedb8146102c25780637f7a0531146102bd578063842392c2146102b85780638d3a3e38146102b35780638da5cb5b146102ae5780638febc54b146102a957806395d89b41146102a457806397cf84fc1461029f5780639823560c1461029a5780639cd2370714610295578063a22cb46514610290578063a3759f601461028b578063ac56bf3914610286578063bd85b03914610281578063c3db27c11461027c578063e8e61bb814610277578063e985e9c514610272578063f04e283e1461026d578063f242432a14610268578063f2fde38b14610263578063f9a3e83f1461025e578063fee81cf4146102595763ff1b4ba914610254575f80fd5b6123e5565b6123b3565b6122a8565b61226d565b6120e8565b61209b565b61203d565b611f79565b611eed565b611ec3565b611e19565b611d1e565b611abc565b611a5a565b6119fb565b6119c3565b61191e565b6118be565b611894565b61185c565b61181f565b6117dd565b6117bf565b611776565b611759565b6116f2565b611659565b611615565b6115e9565b61152e565b6114ae565b61144a565b611424565b61135b565b611329565b611286565b61118b565b610fb5565b610e71565b610de8565b610cea565b610ca1565b610b7d565b610a97565b6109d0565b6108ab565b6107cf565b6105fd565b61056e565b6104e0565b610435565b6103f4565b600435906001600160a01b038216820361036e57565b5f80fd5b604435906001600160a01b038216820361036e57565b602435906001600160a01b038216820361036e57565b606435906001600160a01b038216820361036e57565b608435906001600160a01b038216820361036e57565b60c435906001600160a01b038216820361036e57565b35906001600160a01b038216820361036e57565b3461036e57604036600319011261036e57602061041b610412610358565b602435906124e1565b604051908152f35b6001600160e01b031981160361036e57565b3461036e57602036600319011261036e5761048a60043561045581610423565b8060e01c6301ffc9a7632a55205a82149114179081156104db575b811561048e575b5060405190151581529081906020820190565b0390f35b6001600160e01b031916636cdb3d1360e11b8114915081156104ca575b81156104b9575b505f610477565b6301ffc9a760e01b1490505f6104b2565b6303a24d0760e21b811491506104ab565b610470565b3461036e57602036600319011261036e576001600160a01b03610501610358565b61050961390f565b805f80516020615a5383398151915255167faea1573caf7b4fdd079b947d86c1be6c725642c47582f8f9bd2c7d2a30bf0bd95f80a2005b9181601f8401121561036e5782359167ffffffffffffffff831161036e576020838186019501011161036e57565b3461036e57602036600319011261036e5760043567ffffffffffffffff811161036e576105b46105a56105b9923690600401610540565b6105ad61390f565b3691610f64565b61392b565b005b602435906001600160601b038216820361036e57565b604435906001600160601b038216820361036e57565b60e435906001600160601b038216820361036e57565b3461036e57604036600319011261036e57610616610358565b6001600160601b036106266105bb565b61062e61390f565b16906127108211610696578060601b908115610689576001600160a01b03602091847f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef941768aa4ec00224afccfdb7556040519485521692a2005b63b4457eaa5f526004601cfd5b63350a88b35f526004601cfd5b634e487b7160e01b5f525f60045260245ffd5b90600182811c921680156106e4575b60208310146106d057565b634e487b7160e01b5f52602260045260245ffd5b91607f16916106c5565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761071e57604052565b6106ee565b6040810190811067ffffffffffffffff82111761071e57604052565b6020810190811067ffffffffffffffff82111761071e57604052565b90601f8019910116810190811067ffffffffffffffff82111761071e57604052565b91908251928382525f5b8481106107a7575050825f602080949584010152601f8019910116010190565b602081830181015184830182015201610787565b9060206107cc92818152019061077d565b90565b3461036e575f36600319011261036e576040515f60ca546107ef816106b6565b808452906020906001908181169081156108815750600114610828575b61048a8561081c8187038261075b565b604051918291826107bb565b60ca5f90815293507f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee15b83851061086e5750505050810160200161081c8261048a61080c565b8054868601840152938201938101610852565b86955061048a9693506020925061081c94915060ff191682840152151560051b820101929361080c565b3461036e57606036600319011261036e5767ffffffffffffffff60043581811161036e576108dd903690600401610540565b60249291923591821161036e576108fb610943923690600401610540565b90610904610372565b925f549561092960ff8860081c1615809881996109c2575b81156109a2575b506125f1565b8661093a600160ff195f5416175f55565b61098b57612875565b61094957005b61095761ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b61099d61010061ff00195f5416175f55565b612875565b303b159150816109b4575b505f610923565b6001915060ff16145f6109ad565b600160ff821610915061091c565b3461036e5760208060031936011261036e576040515f916067546109f3816106b6565b80845290600190818116908115610a775750600114610a1d575b61048a8461081c8188038261075b565b60675f9081529294507f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae5b828410610a64575050508161048a9361081c9282010193610a0d565b8054858501870152928501928101610a48565b60ff1916858501525050151560051b820101915061081c8161048a610a0d565b3461036e57602036600319011261036e577f0f1c5629c9ab6d9b97fd6801d012d74903c2eab7df1abec22bb54f9a055476456020600435610ad661390f565b807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0155604051908152a1005b6044359063ffffffff8216820361036e57565b6064359063ffffffff8216820361036e57565b6024359063ffffffff8216820361036e57565b359063ffffffff8216820361036e57565b9181601f8401121561036e5782359167ffffffffffffffff831161036e576020808501948460051b01011161036e57565b60a036600319011261036e57610b91610358565b602435610b9c610b02565b610ba4610b15565b9060843567ffffffffffffffff811161036e57610bc5903690600401610b4c565b929091335f5260d560205260ff60405f20541615610c8f5760405194610bea86610723565b60018652600360fc1b602087015260cd54811015610c8a5760cd5f52807f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154151580610c51575b610c3f576105b996613bea565b60405163800113cb60e01b8152600490fd5b50805f526097602052610c6e63ffffffff831660405f2054612a9d565b610c84610c7a836129ad565b90549060031b1c90565b10610c32565b612999565b60405163ea8e4eb560e01b8152600490fd5b5f36600319011261036e5763389a75e1600c52335f526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a2005b3461036e57604036600319011261036e57600435602435610d0961390f565b60d154821015610dd65760cd54821015610c8a5760cd5f52817f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154151580610dc2575b610db057610dab81610d9b7f0c899f003b7b88b925c6cdfe9b56bc4df2b91107f0f6d1cec1c3538d156bbe4893610d83866129e2565b90919082549060031b91821b915f19901b1916179055565b6040519081529081906020820190565b0390a2005b604051630590c51360e01b8152600490fd5b50610dcf610c7a836129ad565b8111610d4d565b6040516307ed98ed60e31b8152600490fd5b3461036e57604036600319011261036e576024356004355f5268aa4ec00224afccfdb7908160205260405f20548060601c928315610e5f575b5061048a908360601b1892835f1904831184023d3d3e61271060405194859402049083602090939291936001600160a01b0360408201951681520152565b54606081901c9350905061048a610e21565b3461036e57602036600319011261036e5760043560cd54811015610c8a5760209060cd5f527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154604051908152f35b60405190610ece82610702565b565b67ffffffffffffffff811161071e5760051b60200190565b9080601f8301121561036e576020908235610f0281610ed0565b93610f10604051958661075b565b81855260208086019260051b82010192831161036e57602001905b828210610f39575050505090565b81358152908301908301610f2b565b67ffffffffffffffff811161071e57601f01601f191660200190565b929192610f7082610f48565b91610f7e604051938461075b565b82948184528183011161036e578281602093845f960137010152565b9080601f8301121561036e578160206107cc93359101610f64565b3461036e5760a036600319011261036e57610fce610358565b610fd6610388565b9067ffffffffffffffff9060443582811161036e57610ff9903690600401610ee8565b9160643581811161036e57611012903690600401610ee8565b9060843590811161036e5761102b903690600401610f9a565b926001600160a01b0393848416943386148015611156575b61104c90612a17565b61105983518551146140d7565b8616611066811515614149565b611072848489886153f8565b5f5b8351811015611112578061108a60019286612b2c565b5161110a6111028b6110bc61109f868c612b2c565b51948c6110f3876110d2836110bc865f52606560205260405f2090565b906001600160a01b03165f5260205260405f2090565b546110df828210156141a3565b03916110bc845f52606560205260405f2090565b555f52606560205260405f2090565b918254612a9d565b905501611074565b50938691946105b9966040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb33918061114d8a8a83614215565b0390a4336155f9565b50855f52606660205261104c60ff6111823360405f20906001600160a01b03165f5260205260405f2090565b54169050611043565b3461036e575f36600319011261036e576111a361390f565b60d0546001600160a01b03168015611274576111c360cf5491309061423a565b908082106112625761123c7fbe7426aee8a34d0263892b55ce65ce81d8f4c806eb4719e59015ea49feb92d22926111f95f60cf55565b61121e6112068285612a9d565b9361121960d0546001600160a01b031690565b614268565b60d0546001600160a01b031660d2546001600160a01b0316906142c3565b60d054604080516001600160a01b03909216825260208201929092529081908101610986565b604051631e9acf1760e31b8152600490fd5b60405163a47ca0b760e01b8152600490fd5b3461036e57606036600319011261036e5761129f610358565b6024356112aa610b02565b906112b361390f565b60cd54811015610c8a5760cd5f52807f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e01541515806112fa575b610c3f576105b992612aaa565b50805f52609760205261131763ffffffff831660405f2054612a9d565b611323610c7a836129ad565b106112ed565b3461036e575f36600319011261036e5760206001600160a01b035f80516020615a538339815191525416604051908152f35b3461036e575f36600319011261036e5761137361390f565b5f80808060cf54730b98151bedee73f9ba5f2c7b72dea02d38ce49fc5af1611399612acb565b5015611412576113a85f60cf55565b475f808080846113c060d2546001600160a01b031690565b5af16113ca612acb565b501561140057610986610d9b7f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d9260cf54612a9d565b604051631d42c86760e21b8152600490fd5b6040516312171d8360e31b8152600490fd5b3461036e575f36600319011261036e5760206001600160a01b0360d05416604051908152f35b3461036e57602036600319011261036e576001600160a01b0361146b610358565b61147361390f565b16805f5260d560205260405f2060ff1981541690557fc6711413797b8a562634e98c95d50e7619d39702ed5b82ce335dc93546c3a88c5f80a2005b3461036e575f36600319011261036e5760207f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0154604051908152f35b9081518082526020808093019301915f5b828110611509575050505090565b8351855293810193928101926001016114fb565b9060206107cc9281815201906114ea565b3461036e57604036600319011261036e5760043567ffffffffffffffff80821161036e573660238301121561036e57816004013561156b81610ed0565b92611579604051948561075b565b8184526020916024602086019160051b8301019136831161036e57602401905b8282106115d2578560243586811161036e5761048a916115c06115c6923690600401610ee8565b90612b40565b6040519182918261151d565b8380916115de846103e0565b815201910190611599565b3461036e57602036600319011261036e576004355f526097602052602060405f20541515604051908152f35b5f36600319011261036e5763389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2005b3461036e57606036600319011261036e57600435611675610388565b906001600160601b036116866105d1565b61168e61390f565b16916127108311610696578060601b908115610689576001600160a01b03602091857f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c94865f5268aa4ec00224afccfdb785521760405f20556040519586521693a3005b3461036e57602036600319011261036e576001600160a01b03611713610358565b61171b61390f565b16805f5260d560205260405f20600160ff198254161790557fe6be4d6cc04eb0219337b22db08c688969a9ec8e34d9a0a2ba38a114e050f1ae5f80a2005b3461036e575f36600319011261036e57602060c954604051908152f35b5f36600319011261036e5761178961390f565b638b78c6d8195f81547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3600160ff1b9055005b3461036e57602036600319011261036e57602061041b600435612c4f565b3461036e57602036600319011261036e5760043567ffffffffffffffff811161036e576118116105b9913690600401610b4c565b9061181a61390f565b614ecf565b3461036e57602036600319011261036e576001600160a01b03611840610358565b165f5260d5602052602060ff60405f2054166040519015158152f35b3461036e57604036600319011261036e57602061188b61187a610358565b61188660243591612e32565b612b2c565b51604051908152f35b3461036e575f36600319011261036e576020638b78c6d819546001600160a01b0360405191168152f35b3461036e5760a036600319011261036e576118d7610358565b6118df610b28565b6064359067ffffffffffffffff821161036e57602092611906611914933690600401610f9a565b906084359260443591612d7e565b6040519015158152f35b3461036e575f36600319011261036e576040515f60cb5461193e816106b6565b80845290602090600190818116908115610881575060011461196a5761048a8561081c8187038261075b565b60cb5f90815293507fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb5b8385106119b05750505050810160200161081c8261048a61080c565b8054868601840152938201938101611994565b3461036e57602036600319011261036e5761048a6119e76119e2610358565b612e32565b6040519182916020835260208301906114ea565b3461036e57602036600319011261036e5760043560ce54811015610c8a5760209060ce5f527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0154604051908152f35b60243590811515820361036e57565b3461036e57602036600319011261036e5760043580151580910361036e5760207fbcde07732ba7563e295b3edc0bf5ec939a471d93d850a58a6f2902c0ed32372891611aa461390f565b60ff1960cc541660ff82161760cc55604051908152a1005b3461036e57604036600319011261036e57611ad5610358565b611add611a4b565b6001600160a01b03821691823314611b555781611b12611b23926110bc336001600160a01b03165f52606660205260405f2090565b9060ff801983541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608490fd5b9081518082526020808093019301915f5b828110611bdf575050505090565b83516001600160501b031685529381019392810192600101611bd1565b9081518082526020808093019301915f5b828110611c1b575050505090565b835162ffffff1685529381019392810192600101611c0d565b9193929060608352611c53815160e06060860152610140850190611bc0565b946020611c718184015197605f199889888303016080890152611bc0565b96604084015197818782030160a088015282808a5192838152019901905f5b818110611d04575050509060c0611cd6859493611cc16107cc9a9b6060611cf6990151838c830301868d01526114ea565b906080870151908a83030160e08b0152611bfc565b9360a08101516101008901520151610120870152858303908601526114ea565b9160408184039101526114ea565b825163ffffffff168b529984019991840191600101611c90565b3461036e5760208060031936011261036e57600435906040905f60c08351611d4581610702565b60608082528060208301528086830152808083015260808201528260a0820152015260c954831015611e0857611d7a33612e32565b9260d154611d8781612afa565b925f5b828110611db55750505090611daa611da461048a93612c16565b506132a8565b925193849384611c34565b5f84815260d383528681208282528352868120338252602052604090205463ffffffff1690611de48187612b2c565b51918201809211611e0357600191611dfc8288612b2c565b5201611d8a565b612a89565b815163e82a532960e01b8152600490fd5b3461036e5761010036600319011261036e5767ffffffffffffffff60043581811161036e57611e4c903690600401610540565b60243583811161036e57611e64903690600401610ee8565b60443584811161036e57611e7c903690600401610ee8565b90611e8561039e565b611e8d6103b4565b9060a43596871161036e57611ea96105b9973690600401610b4c565b949093611eb46103ca565b96611ebd6105e7565b98613562565b3461036e57602036600319011261036e576004355f526097602052602060405f2054604051908152f35b3461036e575f36600319011261036e57611f6b604051611f0c81610723565b601581527f455243313135354d496e697469616c697a61626c650000000000000000000000602082015261048a604051611f4581610723565b60058152640312e302e360dc1b602082015260405193849360408552604085019061077d565b90838203602085015261077d565b3461036e57604036600319011261036e57600435602435611f9861390f565b60d154821015610dd657611fae610c7a836129ad565b151580612029575b61201757611fcc825f52609760205260405f2090565b54811061200557610dab81610d9b7fc95161027a9b2f0376fa8fa5f504100ccc4748c73f4e479bac3778d02ee5621c93610d83866129ad565b60405163fb7af64960e01b8152600490fd5b60405163430b83b160e11b8152600490fd5b50612036610c7a836129ad565b8111611fb6565b3461036e57604036600319011261036e57602060ff61208f61205d610358565b6001600160a01b0361206d610388565b91165f526066845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b602036600319011261036e576120af610358565b6120b761390f565b63389a75e1600c52805f526020600c2090815442116120db575f6105b99255614420565b636f5e88185f526004601cfd5b3461036e5760a036600319011261036e57612101610358565b612109610388565b90604435606435906084359367ffffffffffffffff851161036e576121356105b9953690600401610f9a565b936001600160a01b03808216903382148015612238575b61215590612a17565b831690612163821515614149565b61218061216f866157b4565b612178886157b4565b9086866153f8565b845f526065602052856121a78460405f20906001600160a01b03165f5260205260405f2090565b546121b4828210156141a3565b865f526065602052036121db8460405f20906001600160a01b03165f5260205260405f2090565b556121f2846110bc875f52606560205260405f2090565b6121fd878254612a9d565b9055604080518681526020810188905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291a4336158d2565b50815f52606660205261215560ff6122643360405f20906001600160a01b03165f5260205260405f2090565b5416905061214c565b602036600319011261036e57612281610358565b61228961390f565b8060601b1561229b576105b990614420565b637448fbae5f526004601cfd5b60c036600319011261036e576004356122bf610b28565b6122c7610b02565b67ffffffffffffffff9260643584811161036e576122e9903690600401610b4c565b909460a43590811161036e57612303903690600401610540565b68929eee149b4bd212689691308854146123a657612325913089553691610f64565b9360cd54841015610c8a5760cd5f52837f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154151580612377575b610c3f57612372956084359433614060565b389055005b50835f52609760205261239463ffffffff871660405f2054612a9d565b6123a0610c7a866129ad565b10612360565b63ab143c065f526004601cfd5b3461036e57602036600319011261036e576123cc610358565b63389a75e1600c525f52602080600c2054604051908152f35b3461036e5760a036600319011261036e576123fe610358565b612406610b28565b6044359081151580920361036e575f80516020615a5383398151915254916001600160a01b038316156124cf5760209361041b9360405192868401943060601b86526001600160601b0319809460601b16603486015263ffffffff60e01b9060e01b16604885015260f81b604c84015260601b16604d820152606435606182015246608182015260843560a182015260a181526124a281610702565b5190206020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042090565b6040516353bd4fb360e11b8152600490fd5b6001600160a01b0381161561251957612515915f52606560205260405f20906001600160a01b03165f5260205260405f2090565b5490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e6572000000000000000000000000000000000000000000006064820152608490fd5b906001600160601b039061259661390f565b16906127108211610696578060601b908115610689576001600160a01b03602091847f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef941768aa4ec00224afccfdb7556040519485521692a2565b156125f857565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b81811061266e575050565b5f8155600101612663565b90601f8211612686575050565b610ece9160ca5f527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee1906020601f840160051c830193106126cf575b601f0160051c0190612663565b90915081906126c2565b90601f82116126e6575050565b610ece9160675f527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae906020601f840160051c830193106126cf57601f0160051c0190612663565b90601f821161273b575050565b610ece9160cb5f527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb906020601f840160051c830193106126cf57601f0160051c0190612663565b919067ffffffffffffffff811161071e576127a8816127a360cb546106b6565b61272e565b5f601f82116001146127e65781906127d693945f926127db575b50508160011b915f199060031b1c19161790565b60cb55565b013590505f806127c2565b60cb5f52601f198216937fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb915f5b86811061284b5750836001959610612832575b505050811b0160cb55565b01355f19600384901b60f8161c191690555f8080612827565b90926020600181928686013581550194019101612814565b604051906128708261073f565b5f8252565b6001600160a01b038516156129875767ffffffffffffffff821161071e576128a7826128a260ca546106b6565b612679565b5f90601f83116001146128fb5782610ece9695936128e695936128de935f926127db5750508160011b915f199060031b1c19161790565b60ca55612783565b6128f66128f1612863565b613a88565b613aa5565b60ca5f52601f198316917f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee1925f5b81811061296f5750926001928592610ece9998966128e6989610612956575b505050811b0160ca55612783565b01355f19600384901b60f8161c191690555f8080612948565b91936020600181928787013581550195019201612929565b604051633358897d60e21b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b60cd54811015610c8a5760cd5f527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e01905f90565b60ce54811015610c8a5760ce5f527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a01905f90565b15612a1e57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152608490fd5b634e487b7160e01b5f52601160045260245ffd5b91908201809211611e0357565b610ece929163ffffffff60405193612ac18561073f565b5f855216916142fd565b3d15612af5573d90612adc82610f48565b91612aea604051938461075b565b82523d5f602084013e565b606090565b90612b0482610ed0565b612b11604051918261075b565b8281528092612b22601f1991610ed0565b0190602036910137565b8051821015610c8a5760209160051b010190565b9190918051835103612bab57612b568151612afa565b905f5b8151811015612ba45780612b93612b82612b7560019486612b2c565b516001600160a01b031690565b612b8c8389612b2c565b51906124e1565b612b9d8286612b2c565b5201612b59565b5090925050565b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608490fd5b60c954811015610c8a5760079060c95f52027f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2801905f90565b60c954905f5b828110612c6e5760405163e82a532960e01b8152600490fd5b6005612c7982612c16565b50015482101580612c97575b612c9157600101612c55565b91505090565b506006612ca382612c16565b5001548210612c85565b5f80516020615a538339815191525491936001600160a01b0383169283156124cf5784612d3e612d449260405160208101913060601b83526001600160601b031990818960601b16603484015263ffffffff60e01b8c60e01b166048840152600160f81b604c84015260601b16604d8201525f60618201524660818201528560a182015260a181526124a281610702565b85615179565b612d7457612d5b94612d5592613801565b90615179565b612d705760405162b7fad960e11b8152600490fd5b5f90565b5050505050600190565b90935f80516020615a5383398151915254926001600160a01b0384169384156124cf5785612e10612e169260405160208101913060601b83526001600160601b031990818a60601b16603484015263ffffffff60e01b8d60e01b166048840152600160f81b604c84015260601b16604d8201528560618201524660818201528660a182015260a181526124a281610702565b86615179565b612e2757612d5b95612d5593613887565b505050505050600190565b60d154612e3e81612afa565b9160c954905f5b838110612e53575050505090565b5f5b838110612e655750600101612e45565b806001915f52612ec4612eb4612eab612ea187602060d38152604090815f20908a5f52525f20906001600160a01b03165f5260205260405f2090565b5463ffffffff1690565b63ffffffff1690565b612ebe858a612b2c565b51612a9d565b612ece8489612b2c565b5201612e55565b90604080518093805492612efa612ef0858560209181520190565b925f5260205f2090565b935f915b816002840110612f7e5750610ece945491818110612f64575b818110612f46575b10612f2d575b50038361075b565b60a01c6001600160501b031681526020905b015f612f25565b605083901c6001600160501b03168452926001906020019301612f1f565b6001600160501b0383168452926001906020019301612f17565b93509160016060600392612fd888546001600160501b03612fa9848284166001600160501b03169052565b612fc360208501828460501c166001600160501b03169052565b8984019160a01c166001600160501b03169052565b01950191019093918693612efe565b90604051918281549182825260209260208301915f5260205f20935f905b82821061301b57505050610ece9250038361075b565b855484526001958601958895509381019390910190613005565b90604080518093805492613050612ef0858560209181520190565b935f915b8160098401106131b25750610ece94549181811061319c575b818110613182575b818110613168575b81811061314e575b818110613134575b81811061311a575b818110613100575b8181106130e6575b8181106130cc575b106130ba5750038361075b565b60d81c62ffffff168152602090612f3f565b60c083901c62ffffff1684529260019060200193016130ad565b60a883901c62ffffff1684529260019060200193016130a5565b609083901c62ffffff16845292600190602001930161309d565b607883901c62ffffff168452926001906020019301613095565b606083901c62ffffff16845292600190602001930161308d565b604883901c62ffffff168452926001906020019301613085565b603083901c62ffffff16845292600190602001930161307d565b601883901c62ffffff168452926001906020019301613075565b62ffffff8316845292600190602001930161306d565b9350916001610140600a92613299885462ffffff6131d68482841662ffffff169052565b6131ec60208501828460181c1662ffffff169052565b6132018a8501828460301c1662ffffff169052565b61322d606061321b818701848660481c1662ffffff169052565b828460808801921c1662ffffff169052565b61324360a08501828460781c1662ffffff169052565b61328660c061325d818701848660901c1662ffffff169052565b61327360e08701848660a81c1662ffffff169052565b82846101008801921c1662ffffff169052565b61012084019160d81c1662ffffff169052565b01950191019093918693613054565b906040918251906132b882610702565b81936132c382612ed5565b83526001906132d3828401612ed5565b6020908186015260028401825193846132ff6132f58454809360209181520190565b935f5260205f2090565b5f905b8260078301106134a1579361336d93889692936006999460c09b999754928583831061347f575b83831061345b575b89848410613436575b50838310613411575b8383106133ec575b8383106133c7575b8383106133b0575b5050106133a3575b509050038361075b565b85015261337c60038201612fe7565b606085015261338d60048201613035565b6080850152600581015460a08501520154910152565b60e01c815201805f613363565b63ffffffff858f1c16865290940193015f8561335b565b856133e283949763ffffffff8860a01c1663ffffffff169052565b0194019085613353565b8561340783949763ffffffff8860801c1663ffffffff169052565b019401908561334b565b8561342c83949763ffffffff8860601c1663ffffffff169052565b0194019085613343565b956134508163ffffffff8886979a1c1663ffffffff169052565b01940190858961333a565b8561347583949763ffffffff88851c1663ffffffff169052565b0194019085613331565b8561349783949763ffffffff881663ffffffff169052565b0194019085613329565b93836101006008926135578a61354c8b6134f38c54936134e263ffffffff936134d18986891663ffffffff169052565b63ffffffff87821c86161690890152565b63ffffffff85821c84161690870152565b61350a60608285828901921c1663ffffffff169052565b61352160808285828901921c1663ffffffff169052565b61353860a08285828901921c1663ffffffff169052565b60c09083828701921c1663ffffffff169052565b60e090811c90830152565b019501910190613302565b91979593999692989461357361390f565b88518a5103613693575f5b8a518110156135c357613591818b612b2c565b511515806135a6575b610db05760010161357e565b506135b1818c612b2c565b516135bc828c612b2c565b511061359a565b5061362f6105b495989b6135f4613658949596999c6135ef6136609a9d6135ea835160d155565b6136a5565b613753565b613606600160ff1960cc54161760cc55565b6001600160a01b031673ffffffffffffffffffffffffffffffffffffffff1960d054161760d055565b6001600160a01b031673ffffffffffffffffffffffffffffffffffffffff1960d254161760d255565b6105ad613af9565b80613683575b50506001600160a01b03821661367a575050565b610ece91612584565b61368c91614ecf565b5f80613666565b6040516302c3f8e160e21b8152600490fd5b80519067ffffffffffffffff821161071e57600160401b821161071e5760cd548260cd5580831061371d575b5060208091019060cd5f525f5b8381106136eb5750505050565b82517f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e820155918101916001016136de565b61374d90837f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e9182019101612663565b5f6136d1565b80519067ffffffffffffffff821161071e57600160401b821161071e5760ce548260ce558083106137cb575b5060208091019060ce5f525f5b8381106137995750505050565b82517fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a8201559181019160010161378c565b6137fb90837fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a9182019101612663565b5f61377f565b915f80516020615a5383398151915254906001600160a01b038216156124cf576107cc936040519260208401943060601b86526001600160601b0319809360601b16603486015263ffffffff60e01b9060e01b1660488501525f604c85015260601b16604d8301525f606183015246608183015260a182015260a181526124a281610702565b929190915f80516020615a5383398151915254916001600160a01b038316156124cf576107cc946040519360208501953060601b87526001600160601b0319809360601b16603487015263ffffffff60e01b9060e01b1660488601525f604c86015260601b16604d840152606183015246608183015260a182015260a181526124a281610702565b638b78c6d81954330361391e57565b6382b429005f526004601cfd5b90815167ffffffffffffffff811161071e576139518161394c6067546106b6565b6126d9565b602080601f83116001146139915750819061398193945f926139865750508160011b915f199060031b1c19161790565b606755565b015190505f806127c2565b90601f198316946139c360675f527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae90565b925f905b8782106139fe5750508360019596106139e6575b505050811b01606755565b01515f1960f88460031b161c191690555f80806139db565b806001859682949686015181550195019301906139c7565b15613a1d57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608490fd5b610ece906105b460ff5f5460081c16613aa081613a16565b613a16565b638b78c6d819908154613aec576001600160a01b031690811560ff1b821790555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3565b630dc149f05f526004601cfd5b7f0f1c5629c9ab6d9b97fd6801d012d74903c2eab7df1abec22bb54f9a05547645602061012c807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0155604051908152a1565b9190916001600160501b0380809416911601918211611e0357565b9190916001600160501b0380809416911602918216918203611e0357565b91909163ffffffff80809416911601918211611e0357565b9291613ba782610ed0565b91613bb5604051938461075b565b829481845260208094019160051b810192831161036e57905b828210613bdb5750505050565b81358152908301908301613bce565b9491959390929342905f916001600160a01b039182613c1d5f80516020615a53833981519152546001600160a01b031690565b16614030575b50613c2d90612c4f565b93613c3a611da486612c16565b9215614019575f965b60d0546001600160a01b03169283161591828b8a8a83613fe7575b505050613fd5578a9560808601898962ffffff613c88613c7f848651612b2c565b5162ffffff1690565b16613f72575b50613c9d9150610c7a906129e2565b613f2c575b604086018b8963ffffffff998a928d84613cca613cc0838951612b2c565b5163ffffffff1690565b16613ee9575b50505050505060608601613ce58a8251612b2c565b51613e00575b50505050610ece98613d3c613d37613d2f613d238a98613d5998613d9c9b988e8c613d8e9a15613db7575b505050508516809c613b66565b6001600160501b031690565b60cf54612a9d565b60cf55565b613d7a613d668a6110bc88613d59885f5260d360205260405f2090565b905f5260205260405f2090565b91613d75835463ffffffff1690565b613b84565b63ffffffff1663ffffffff19825416179055565b5f5260d460205260405f2090565b613da7838254612a9d565b9055613db1612863565b926142fd565b613de4613ded92613ddf613dd2613d2394613df79851612b2c565b516001600160501b031690565b613b4b565b858b1690613b66565b90309033906153a3565b5f808e8c613d16565b918b613e6c613e7193613e1c8d613e75979d9a9b9c9d51612b2c565b5160405160609490941b6bffffffffffffffffffffffff19166020850190815260e089901b6001600160e01b0319166034860152601885529093613e6160388261075b565b519020933691613b9c565b61534b565b1590565b613ed75785168015159081613eaa575b50613e98575f8080809796959497613ceb565b60405163b4f3729b60e01b8152600490fd5b9050613ed0612eab8b613d75612ea18d6110bc8d613d598b5f5260d360205260405f2090565b115f613e85565b6040516309bde33960e01b8152600490fd5b613f13612eab93613d75612ea1613cc0956110bc86613d59613f1a9b5f5260d360205260405f2090565b9551612b2c565b911611613e98575f87898e8e8d613cd0565b9550613f48613f3b898c6152e4565b63ffffffff8d1690612a9d565b613f54610c7a8a6129e2565b10613f60578a95613ca2565b60405163751304ed60e11b8152600490fd5b81613fa6613fb594959b63ffffffff613f9d613fad96613d59613c7f975f5260d460205260405f2090565b54911690612a9d565b9451612b2c565b62ffffff1690565b10613fc4578a955f8989613c8e565b60405162d0844960e21b8152600490fd5b604051630717c22560e51b8152600490fd5b61400f9350614007613d239392613ddf613dd263ffffffff948d51612b2c565b911690613b66565b34108b8a8a613c5e565b61402a613dd2876020860151612b2c565b96613c43565b905061404e9192506140458661188633612e32565b51908933612cad565b90614057615282565b5f613c2d613c23565b9590939196949294425f926001600160a01b0392836140935f80516020615a53833981519152546001600160a01b031690565b166140a4575b5050613c2d90612c4f565b6140c6919450613c2d92506140bc8861188633612e32565b5190858c33612d7e565b926140d0816152b9565b905f614099565b156140de57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608490fd5b1561415057565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156141aa57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152608490fd5b909161422c6107cc936040845260408401906114ea565b9160208184039101526114ea565b602460106020939284936014526f70a082310000000000000000000000005f525afa601f3d11166020510290565b604460105f8093602095730b98151bedee73f9ba5f2c7b72dea02d38ce49fc6014526034526fa9059cbb00000000000000000000000082525af13d1560015f51141716156142b6575f603452565b6390b8ec185f526004601cfd5b60105f60449260209582956014526034526fa9059cbb00000000000000000000000082525af13d1560015f51141716156142b6575f603452565b939091926001600160a01b0385169384156143d15761431b846157b4565b93614325826157b4565b965f5b8651811015614366578061433e6001928b612b2c565b5161435e61110261434f848c612b2c565b515f52609760205260405f2090565b905501614328565b5091939650919350610ece94614388826110bc855f52606560205260405f2090565b614393858254612a9d565b905560408051848152602081018690525f9133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629190a433615840565b60405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b6001600160a01b0316638b78c6d819908082547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3801560ff1b179055565b80545f82558061446f575050565b610ece915f526003600260205f20920104810190612663565b90600160401b811161071e5781548183558082106144a557505050565b610ece925f526003600260205f2092600a8380848801048601960602806144d1575b5001040190612663565b6144ec905f198701908154905f199060200360031b1c169055565b5f6144c7565b80545f825580614500575050565b610ece915f52600760205f20910160031c810190612663565b90600160401b811161071e57815481835580821061453657505050565b610ece925f52600760205f2091601c82850160031c84019460021b1680614564575b500160031c0190612663565b61457f905f198601908154905f199060200360031b1c169055565b5f614558565b8054905f815581614594575050565b5f5260205f20908101905b8181106145aa575050565b5f815560010161459f565b80545f8255806145c3575050565b610ece915f52600a600960205f20920104810190612663565b90600160401b811161071e5781548183558082106145f957505050565b610ece925f52600a600960205f209260038380848801048601960602806144d1575001040190612663565b60c9545f60c955806146335750565b60079080600702906007820403611e035760c95f527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d28908101905b81811061467a57505050565b806146858492614461565b61469160018201614461565b61469d600282016144f2565b6146a960038201614585565b6146b5600482016145b5565b5f60058201555f60068201550161466e565b9190811015610c8a5760051b8101359060de198136030182121561036e570190565b5f19810191908211611e0357565b903590601e198136030182121561036e570180359067ffffffffffffffff821161036e57602001918160051b3603831361036e57565b35906001600160501b038216820361036e57565b929161474c82610ed0565b9161475a604051938461075b565b829481845260208094019160051b810192831161036e57905b8282106147805750505050565b83809161478c8461472d565b815201910190614773565b92916147a282610ed0565b916147b0604051938461075b565b829481845260208094019160051b810192831161036e57905b8282106147d65750505050565b8380916147e284610b3b565b8152019101906147c9565b359062ffffff8216820361036e57565b929161480882610ed0565b91614816604051938461075b565b829481845260208094019160051b810192831161036e57905b82821061483c5750505050565b838091614848846147ed565b81520191019061482f565b90805167ffffffffffffffff811161071e5761486f8184614488565b6148816020809301935f5260205f2090565b9060039260038204935f5b85811061490c5750506003840280830392036148aa575b5050505050565b93905f945f5b8281106148c7575050505001555f808080806148a3565b90919295826149016001926148e38a516001600160501b031690565b9085600a0260031b916001600160501b03809116831b921b19161790565b9701939291016148b0565b5f805b83811061492357508582015560010161488c565b97908461495b60019261493d85516001600160501b031690565b908c600a0260031b916001600160501b03809116831b921b19161790565b9201980161490f565b90805167ffffffffffffffff811161071e576149808184614519565b6149926020809301935f5260205f2090565b908060031c925f5b848110614a135750600719821690910390816149b7575050505050565b93905f945f5b8281106149d4575050505001555f808080806148a3565b9091929582614a086001926149ed8a5163ffffffff1690565b908560021b60031b9163ffffffff809116831b921b19161790565b9701939291016149bd565b5f805b60088110614a2b57508482015560010161499a565b969083614a5d600192614a42855163ffffffff1690565b908b60021b60031b9163ffffffff809116831b921b19161790565b92019701614a16565b81519167ffffffffffffffff831161071e57600160401b831161071e578154838355808410614ac0575b506020809101915f5260205f20905f5b848110614aae575050505050565b83518382015592810192600101614aa0565b825f528360205f2091820191015b818110614adb5750614a90565b5f8155600101614ace565b90805167ffffffffffffffff811161071e57614b0281846145dc565b614b146020809301935f5260205f2090565b90600a92600a8204935f5b858110614b96575050600a84028083039203614b3c575050505050565b93905f945f5b828110614b59575050505001555f808080806148a3565b9091929582614b8b600192614b718a5162ffffff1690565b908560030260031b9162ffffff809116831b921b19161790565b970193929101614b42565b5f805b838110614bad575085820155600101614b1f565b979084614bdd600192614bc3855162ffffff1690565b908c60030260031b9162ffffff809116831b921b19161790565b92019801614b99565b60c95490600160401b82101561071e57614c086001926001810160c955612c16565b929092614d60578151805167ffffffffffffffff811161071e57614c2c8186614488565b602080920192614c3f865f5260205f2090565b9160039360038204945f5b868110614d0a575050600385028083039203614cc1575b50505050505060c081614c7d6020600694015160018601614853565b614c8e604082015160028601614964565b614c9f606082015160038601614a66565b614cb0608082015160048601614ae6565b60a081015160058501550151910155565b9491905f955f5b828110614ce3575050505050015560c060065f808080614c61565b90919282614cfe86996148e38498516001600160501b031690565b98019493929101614cc8565b5f805b838110614d205750868201558401614c4a565b989084614d578892614d3985516001600160501b031690565b908d600a0260031b916001600160501b03809116831b921b19161790565b92019901614d0d565b6106a3565b9190808252602080920192915f5b828110614d81575050505090565b9091929382806001926001600160501b03614d9b8961472d565b16815201950193929101614d73565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161036e5760209260051b809284830137010190565b9190808252602080920192915f5b828110614e03575050505090565b90919293828060019262ffffff614e19896147ed565b16815201950193929101614df5565b9997959293614e4b614e5b929c9e9d9c60209460e08e9b999b8181520191614d65565b9083958c85818503910152614d65565b89810360408b01528281520194915f5b828110614ea9575050505082614e9f9492614e91928860c0999896036060890152614daa565b918483036080860152614de7565b9460a08201520152565b90919295828060019263ffffffff614ec08b610b3b565b16815201970193929101614e6b565b614ed7614624565b5f5b828110614ee557505050565b6001811015615110575b614efa8184846146c7565b60a00135614f098285856146c7565b60c00135614f1691615913565b614f218184846146c7565b614f2a9061592d565b614f358184846146c7565b80614f3f916146f7565b9084614f4c8482876146c7565b60208101614f59916146f7565b90614f658684896146c7565b60408101614f72916146f7565b90614f7e88868b6146c7565b60608101614f8b916146f7565b919092614f998a888d6146c7565b60808101614fa6916146f7565b9590968c8c614fb6818c846146c7565b60a001359a614fc4926146c7565b60c0013599614fd1610ec1565b9b3690614fdd92614741565b8b523690614fea92614741565b60208a01523690614ffa92614797565b6040880152369061500a92613b9c565b6060860152369061501a926147fd565b608084015260a083015260c082015261503290614be6565b8061503e8185856146c7565b80615048916146f7565b6150538387876146c7565b60208101615060916146f7565b8761506f86828a9795976146c7565b6040810161507c916146f7565b90828a8961508b8184846146c7565b60608101615098916146f7565b936150a49291936146c7565b608081016150b1916146f7565b9490938d8c6150c1818a846146c7565b60a00135986150cf926146c7565b60c00135976040519b8c9b6150e49b8d614e28565b037f4fcf5c64a6ebb6fdad18474d5b1bd187bb9d9f9df516c804929b9d7901b7d39191a2600101614ed9565b60a061511d8285856146c7565b013561516160c0615137615130856146e9565b87876146c7565b01357f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e015490612a9d565b1115614eef57604051636bc1af9360e01b8152600490fd5b92916001600160a01b035f94168061519057505050565b90919293506040805191845f5260209283850151835282855114615232575b60418551146151f8575b5f606052808352630b135d3f60e11b9485825260049687830152602482019687948552815186019081604493848601925afa503d01915afa9151141690565b6060808601515f1a85528386015181526001858160805f825afa5184183d1517156152245750506151b9565b5f9091529252509392505050565b82850151601b8160ff1c0185527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6060911681526001858160805f825afa5184183d1517156152245750506151af565b7f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e015442036152ac57565b6326c69d1a5f526004601cfd5b7f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e01544203116152ac57565b60c9545f928392905b8284106152fb575050505090565b90919293845f5263ffffffff61533484602060d38152604090815f2090875f52525f20906001600160a01b03165f5260205260405f2090565b54168101809111611e0357936001019291906152ed565b91909180518061535c575b50501490565b919060209060208082019160059560051b0101925b81518111851b9081528282519118528160405f2091019383851015615397579390615371565b50925050505f80615356565b601c5f60649281946020966040519860605260405260601b602c526f23b872dd000000000000000000000000600c525af13d1560015f51141716156153eb575f606052604052565b637939f4245f526004601cfd5b6001600160a01b03908116159291836154cb575b1615928361545c575b5050159081615453575b508061543e575b61542c57565b60405163dc8d8db760e01b8152600490fd5b5061544e613e7160cc5460ff1690565b615426565b9050155f61541f565b91925f9491945b85518110156154be578061547960019288612b2c565b516154b76154878388612b2c565b5161549a835f52609760205260405f2090565b546154a7828210156159e0565b03915f52609760205260405f2090565b5501615463565b5092915092505f80615415565b93949192905f5b845181101561550157806154e860019289612b2c565b516154f961110261434f848a612b2c565b9055016154d2565b50909291949361540c565b9081602091031261036e57516107cc81610423565b93906107cc959361555491615562946001600160a01b03809216885216602087015260a0604087015260a08601906114ea565b9084820360608601526114ea565b91608081840391015261077d565b5f9060033d1161557c57565b905060045f803e5f5160e01c90565b5f60443d106107cc57604051600319913d83016004833e815167ffffffffffffffff918282113d6024840111176155e8578184019485519384116155f0573d850101602084870101116155e857506107cc9291016020019061075b565b949350505050565b50949350505050565b9493919092813b61560d575b505050505050565b5f6001600160a01b0360209561563b6040519889978896879463bc197c8160e01b9d8e875260048701615521565b0393165af15f9181615783575b506156fe57615655615570565b6308c379a0146156cf575b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608490fd5b0390fd5b6156d761558b565b806156e25750615660565b60405162461bcd60e51b81529081906156cb90600483016107bb565b6001600160e01b03191603615718575f8080808080615605565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b6157a691925060203d6020116157ad575b61579e818361075b565b81019061550c565b905f615648565b503d615794565b604051906157c182610723565b60018252602082016020368237825115610c8a575290565b909260a0926001600160a01b036107cc96951683525f602084015260408301526060820152816080820152019061077d565b91926107cc95949160a0946001600160a01b03809216855216602084015260408301526060820152816080820152019061077d565b9390803b61584f575050505050565b61587e935f6001600160a01b036020956040519788968795869363f23a6e6160e01b9c8d8652600486016157d9565b0393165af15f91816158b1575b5061589857615655615570565b6001600160e01b03191603615718575f808080806148a3565b6158cb91925060203d6020116157ad5761579e818361075b565b905f61588b565b9493919092813b6158e557505050505050565b5f6001600160a01b0360209561563b6040519889978896879463f23a6e6160e01b9d8e87526004870161580b565b101561591b57565b604051631750215560e11b8152600490fd5b61593781806146f7565b905060d154809114918215926159c6575b82156159ac575b8215615992575b8215615977575b505061596557565b604051634f7ee04f60e11b8152600490fd5b61598791925060808101906146f7565b905014155f8061595d565b9150806159a260608401846146f7565b9050141591615956565b9150806159bc60408401846146f7565b905014159161594f565b9150806159d660208401846146f7565b9050141591615948565b156159e757565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152608490fdfe7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e00a2646970667358221220ad9ab995e63561d4bde85a31d7acd04470095951c7b1d83e018a637d66280a7964736f6c63430008160033