[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "DuplicatedNonce", "type": "error" }, { "inputs": [], "name": "EtherNotSent", "type": "error" }, { "inputs": [], "name": "HitMaximum", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "MetadataFrozen", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NonExistentToken", "type": "error" }, { "inputs": [], "name": "NotEligible", "type": "error" }, { "inputs": [], "name": "NotStarted", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "RoleNotExisted", "type": "error" }, { "inputs": [], "name": "RunOut", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "UnmatchedEther", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "RoundChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "TotalMintedChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "maxMint", "type": "uint256" }, { "internalType": "uint256", "name": "mintPrice", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoleInRoundParams[]", "name": "params", "type": "tuple[]" }, { "internalType": "bool", "name": "replace", "type": "bool" } ], "name": "addAllowedRolesInRound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoleAllocationParams[]", "name": "params", "type": "tuple[]" }, { "internalType": "bool", "name": "replace", "type": "bool" } ], "name": "addRolesAllocation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "maxMint", "type": "uint256" }, { "internalType": "uint256", "name": "mintPrice", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoleInRoundParams[]", "name": "_rolesInRound", "type": "tuple[]" }, { "internalType": "bool", "name": "_replaceRoleInRound", "type": "bool" }, { "components": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoundAllocationParams[]", "name": "_roundAllocations", "type": "tuple[]" }, { "internalType": "bool", "name": "_replaceRoundAllocations", "type": "bool" }, { "components": [ { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoleAllocationParams[]", "name": "_roleAllocations", "type": "tuple[]" }, { "internalType": "bool", "name": "_replaceRoleAllocations", "type": "bool" } ], "name": "addRolesRounds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoundAllocationParams[]", "name": "params", "type": "tuple[]" }, { "internalType": "bool", "name": "replace", "type": "bool" } ], "name": "addRoundsAllocation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "adminMintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currencyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentRound", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAllAllowedRolesInRounds", "outputs": [ { "components": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "maxMint", "type": "uint256" }, { "internalType": "uint256", "name": "mintPrice", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoleInRoundParams[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllRoleAllocations", "outputs": [ { "components": [ { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoleAllocationParams[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllRoundAllocations", "outputs": [ { "components": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "uint256", "name": "allocation", "type": "uint256" } ], "internalType": "struct ApetimismLaunchpadNFT.RoundAllocationParams[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "round", "type": "uint256" } ], "name": "getAllowedRolesInRoundArr", "outputs": [ { "internalType": "int256[]", "name": "", "type": "int256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getConfigs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" }, { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "int256", "name": "role", "type": "int256" } ], "name": "maxMintableForRole", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "int256", "name": "role", "type": "int256" } ], "name": "maxMintableForTxForRole", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "int256", "name": "role", "type": "int256" }, { "internalType": "uint256", "name": "apetimismFee", "type": "uint256" }, { "internalType": "address", "name": "apetimismAddress", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "role", "type": "int256" } ], "name": "mintPriceForCurrentRoundForRole", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintableLeft", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "int256", "name": "role", "type": "int256" } ], "name": "removeAllowedRoleInRound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransfersFrom", "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": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setCurrencyAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "round_", "type": "uint256" } ], "name": "setCurrentRound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "round", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "setCurrentRoundFromSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isSingleMetadata", "type": "bool" } ], "name": "setIsSingleMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "setMaxMintPerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "setMaxMintPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "hasExtension", "type": "bool" } ], "name": "setMetadataHasExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "setSignerAddressFromSignature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "signerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "transfersFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526005601b556032601c55601e80546001600160b01b0319167575757150f66de824a94e706baa4391d1af621f0401001790553480156200004357600080fd5b506040518060600160405280602981526020016200410e602991396040518060400160405280600481526020016326a522a160e11b81525081600290805190602001906200009392919062000119565b508051620000a990600390602084019062000119565b5050600160005550620000bc33620000c7565b6001600955620001fc565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200012790620001bf565b90600052602060002090601f0160209004810192826200014b576000855562000196565b82601f106200016657805160ff191683800117855562000196565b8280016001018555821562000196579182015b828111156200019657825182559160200191906001019062000179565b50620001a4929150620001a8565b5090565b5b80821115620001a45760008155600101620001a9565b600181811c90821680620001d457607f821691505b60208210811415620001f657634e487b7160e01b600052602260045260246000fd5b50919050565b613f02806200020c6000396000f3fe6080604052600436106102ee5760003560e01c8063715018a611610186578063ac7dc68d116100d7578063d111515d11610085578063d111515d146108fe578063dd06555914610913578063ddddefc714610933578063e985e9c514610953578063f2fde38b1461099c578063f4d40a9c146109bc578063fb0c402b14610a0357600080fd5b8063ac7dc68d14610829578063b88d4fde1461083e578063be4f182c14610851578063c23dc68f14610871578063c2873f041461089e578063c87b56dd146108be578063c9d48579146108de57600080fd5b80638da5cb5b116101345780638da5cb5b1461075657806395d89b411461077457806399a2557a14610789578063a22cb465146107a9578063a2309ff8146107c9578063a4fb233c146107e2578063abdc30331461080257600080fd5b8063715018a614610689578063748a500a1461069e578063796b89ec146106b35780638462151c146106d3578063894760691461070057806389b5a8c2146107205780638a19c8bc1461074057600080fd5b80633bc91e28116102405780635b7633d0116101ee5780635b7633d0146105a35780635bbb2177146105c9578063616cdb1e146105f65780636352211e146106165780636c22e06e146106365780636e453d621461064957806370a082311461066957600080fd5b80633bc91e28146104d95780633ccfd60b146104f95780633d6a57451461050e5780633e9dbed01461052e57806342842e0e14610550578063511e1d511461056357806355f804b31461058357600080fd5b80631c1cb3231161029d5780631c1cb3231461040f5780631e14d44b1461042f57806323b872dd1461044f5780632fdea6541461046257806332ab9bbe1461048257806332cb6b0c146104a25780633aeb7501146104b957600080fd5b80620319df146102fa57806301ffc9a71461032557806306fdde0314610355578063081812fc14610377578063095ea7b3146103af5780630ebbb09c146103c457806318160ddd146103f257600080fd5b366102f557005b600080fd5b34801561030657600080fd5b5061030f610a23565b60405161031c9190613198565b60405180910390f35b34801561033157600080fd5b506103456103403660046131fd565b610b11565b604051901515815260200161031c565b34801561036157600080fd5b5061036a610b31565b60405161031c9190613272565b34801561038357600080fd5b50610397610392366004613285565b610bc3565b6040516001600160a01b03909116815260200161031c565b6103c26103bd3660046132ba565b610c07565b005b3480156103d057600080fd5b506103e46103df3660046132ba565b610ca7565b60405190815260200161031c565b3480156103fe57600080fd5b5060015460005403600019016103e4565b34801561041b57600080fd5b50602054610397906001600160a01b031681565b34801561043b57600080fd5b506103c261044a366004613285565b610cc5565b6103c261045d3660046132e4565b610cd2565b34801561046e57600080fd5b506103c261047d366004613470565b610e64565b34801561048e57600080fd5b506103c261049d366004613593565b610f3f565b3480156104ae57600080fd5b506103e4620186a081565b3480156104c557600080fd5b506103c26104d43660046136aa565b610f89565b3480156104e557600080fd5b506103c26104f4366004613285565b610faf565b34801561050557600080fd5b506103c2610fea565b34801561051a57600080fd5b506103c26105293660046132ba565b610ffe565b34801561053a57600080fd5b5061054361101d565b60405161031c919061376e565b6103c261055e3660046132e4565b611232565b34801561056f57600080fd5b506103c261057e3660046137c5565b611252565b34801561058f57600080fd5b506103c261059e3660046137fa565b6113b4565b3480156105af57600080fd5b50601e54610397906201000090046001600160a01b031681565b3480156105d557600080fd5b506105e96105e4366004613842565b6113f3565b60405161031c91906138f2565b34801561060257600080fd5b506103c2610611366004613285565b6114a5565b34801561062257600080fd5b50610397610631366004613285565b6114b2565b6103c2610644366004613945565b6114bd565b34801561065557600080fd5b506103c26106643660046139b2565b611892565b34801561067557600080fd5b506103e46106843660046139cf565b6118b4565b34801561069557600080fd5b506103c2611902565b3480156106aa57600080fd5b5061030f611914565b3480156106bf57600080fd5b506103c26106ce3660046139cf565b6119f9565b3480156106df57600080fd5b506106f36106ee3660046139cf565b611a23565b60405161031c91906139ea565b34801561070c57600080fd5b506103c261071b3660046139cf565b611b10565b34801561072c57600080fd5b506103c261073b366004613a22565b611c19565b34801561074c57600080fd5b506103e4601f5481565b34801561076257600080fd5b506008546001600160a01b0316610397565b34801561078057600080fd5b5061036a611c5b565b34801561079557600080fd5b506106f36107a4366004613a7f565b611c6a565b3480156107b557600080fd5b506103c26107c4366004613ab2565b611df3565b3480156107d557600080fd5b50600054600019016103e4565b3480156107ee57600080fd5b506103c26107fd366004613ade565b611e64565b34801561080e57600080fd5b50610817611eb6565b60405161031c96959493929190613b25565b34801561083557600080fd5b506103e4611f85565b6103c261084c366004613b66565b611f9a565b34801561085d57600080fd5b506103c261086c366004613bc1565b611fde565b34801561087d57600080fd5b5061089161088c366004613285565b61215d565b60405161031c9190613be3565b3480156108aa57600080fd5b506103c26108b93660046139b2565b6121ad565b3480156108ca57600080fd5b5061036a6108d9366004613285565b6121c8565b3480156108ea57600080fd5b506103c26108f9366004613bf1565b612328565b34801561090a57600080fd5b506103c2612395565b34801561091f57600080fd5b506103c261092e366004613470565b6123ac565b34801561093f57600080fd5b506103e461094e3660046132ba565b6124b7565b34801561095f57600080fd5b5061034561096e366004613c27565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b3480156109a857600080fd5b506103c26109b73660046139cf565b612657565b3480156109c857600080fd5b506103e46109d7366004613285565b6017546000908152600e60209081526040808320601f5484528252808320938352929052206003015490565b348015610a0f57600080fd5b506106f3610a1e366004613285565b6126d5565b6012546060906000816001600160401b03811115610a4357610a43613320565b604051908082528060200260200182016040528015610a8857816020015b6040805180820190915260008082526020820152815260200190600190039081610a615790505b5060185460009081526013602052604081209192505b83811015610b08576000838281518110610aba57610aba613c5a565b6020026020010151905060128281548110610ad757610ad7613c5a565b6000918252602080832090910154808452825284815260409091205491015280610b0081613c86565b915050610a9e565b50909392505050565b6000610b1c82612791565b80610b2b5750610b2b82612791565b92915050565b606060028054610b4090613ca1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c90613ca1565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b6000610bce826127df565b610beb576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610c12826114b2565b9050336001600160a01b03821614610c4b57610c2e813361096e565b610c4b576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610cbe610cb684846124b7565b601b54612814565b9392505050565b610ccd61282a565b601c55565b6000610cdd82612884565b9050836001600160a01b0316816001600160a01b031614610d105760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417610d5d57610d40863361096e565b610d5d57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610d8457604051633a954ecd60e21b815260040160405180910390fd5b8015610d8f57600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040902055600160e11b8316610e1a5760018401600081815260046020526040902054610e18576000548114610e185760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b610e6c61282a565b8015610e945760188054906000610e8283613c86565b90915550610e949050601260006130ba565b6018546000908152601360205260408120905b8351811015610f39576000848281518110610ec457610ec4613c5a565b6020908102919091018101518051818301516000828152938790526040909320929092559150610ef56012826128ed565b610f2f57601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444018190555b5050600101610ea7565b50505050565b60005b8251811015610f8257610f708585858481518110610f6257610f62613c5a565b602002602001015185611f9a565b80610f7a81613c86565b915050610f42565b5050505050565b610f9161282a565b610f9b8686611252565b610fa58484610e64565b610e5c82826123ac565b610fb761282a565b601f81905560405181907fe13ec1fa9c3ede43997fc070c234a83909ba45575dd0ad079ea7138418cc846590600090a250565b610ff261282a565b610ffc3347612948565b565b61100661282a565b61100f816129c5565b6110198282612a0e565b5050565b6017546000908152600f60205260408120606091805b60115481101561108c578260006011838154811061105357611053613c5a565b9060005260206000200154815260200190815260200160002054826110789190613cdc565b91508061108481613c86565b915050611033565b506000816001600160401b038111156110a7576110a7613320565b60405190808252806020026020018201604052801561110357816020015b6110f06040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001906001900390816110c55790505b5090506000805b6011548110156112285760006011828154811061112957611129613c5a565b6000918252602080832090910154808352908890526040822054909250905b81811015611212576017546000908152601060209081526040808320868452909152812080548390811061117e5761117e613c5a565b60009182526020808320909101546017548352600e825260408084208885528352808420828552909252908220895191935091908990899081106111c4576111c4613c5a565b60209081029190910181015187815290810184905260028301546040820152600383015460608201529050876111f981613c86565b985050505050808061120a90613c86565b915050611148565b505050808061122090613c86565b91505061110a565b5090949350505050565b61124d83838360405180602001604052806000815250611f9a565b505050565b61125a61282a565b8015611282576017805490600061127083613c86565b909155506112829050601160006130ba565b6017546000908152600e60209081526040808320600f8352818420601090935290832090925b8551811015610e5c5760008682815181106112c5576112c5613c5a565b60209081029190910181015180516000818152888452604080822084860180518452955290819020828155935160018501558201516002840155606082015160038401556004830154919350919060ff1615611323575050506113ac565b60048101805460ff191660019081179091556000838152602088815260408083208054850190558882528220868201518154948501825590835291209091015561136e6011836128ed565b6113a857601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68018290555b5050505b6001016112a8565b6113bc61282a565b601a5460ff16156113e05760405163777821ff60e11b815260040160405180910390fd5b805161101990601d9060208401906130d8565b6060816000816001600160401b0381111561141057611410613320565b60405190808252806020026020018201604052801561144957816020015b61143661315c565b81526020019060019003908161142e5790505b50905060005b82811461149c5761147786868381811061146b5761146b613c5a565b9050602002013561215d565b82828151811061148957611489613c5a565b602090810291909101015260010161144f565b50949350505050565b6114ad61282a565b601b55565b6000610b2b82612884565b6114c5612a28565b601f546114e557604051636f312cbd60e01b815260040160405180910390fd5b83600088126114ff576114fc88601087901b613cdc565b90505b61154d8182898960405160200161153693929190928352602083019190915260601b6001600160601b031916604082015260540190565b604051602081830303815290604052868686612a82565b6017546000908152600e60209081526040808320601f548452909152812090808a126115765750885b60008181526020839052604090206004015460ff166115c55760008080526020839052604090206004015460ff166115c157604051637c75aa6f60e11b815260040160405180910390fd5b5060005b6115ce8b6129c5565b6000808b126115da5750895b8b6115e53383610ca7565b101561160457604051633ce4251960e01b815260040160405180910390fd5b50600081815260208390526040812060030154611621908d613cf4565b6000858152600d60209081526040909120600190555490915081906001600160a01b03161561164e575060005b80341461166e57604051630551cf2960e01b815260040160405180910390fd5b50611679338d612a0e565b601f54600090815260166020526040812080548e929061169a908490613cdc565b9091555050336000908152600a6020526040812080548e92906116be908490613cdc565b9091555050336000908152600b60209081526040808320601f5484528252808320858452909152812080548e92906116f7908490613cdc565b9091555050336000908152600c60209081526040808320858452909152812080548e9290611726908490613cdc565b909155506000905061271061173b8c84613cf4565b6117459190613d13565b6020549091506001600160a01b03161561186f576020546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b039091169081906323b872dd90606401602060405180830381600087803b1580156117ad57600080fd5b505af11580156117c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e59190613d35565b5060405163a9059cbb60e01b81526001600160a01b038c811660048301526024820184905282169063a9059cbb90604401602060405180830381600087803b15801561183057600080fd5b505af1158015611844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118689190613d35565b5050611879565b6118798a82612948565b50505050506118886001600955565b5050505050505050565b61189a61282a565b601e80549115156101000261ff0019909216919091179055565b60006001600160a01b0382166118dd576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b61190a61282a565b610ffc6000612af4565b6015546060906000816001600160401b0381111561193457611934613320565b60405190808252806020026020018201604052801561197957816020015b60408051808201909152600080825260208201528152602001906001900390816119525790505b5060195460009081526014602052604081209192505b83811015610b085760008382815181106119ab576119ab613c5a565b60200260200101519050601582815481106119c8576119c8613c5a565b60009182526020808320909101548084528252848152604090912054910152806119f181613c86565b91505061198f565b611a0161282a565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b60606000806000611a33856118b4565b90506000816001600160401b03811115611a4f57611a4f613320565b604051908082528060200260200182016040528015611a78578160200160208202803683370190505b509050611a8361315c565b60015b838614611b0457611a9681612b46565b9150816040015115611aa757611afc565b81516001600160a01b031615611abc57815194505b876001600160a01b0316856001600160a01b03161415611afc5780838780600101985081518110611aef57611aef613c5a565b6020026020010181815250505b600101611a86565b50909695505050505050565b611b1861282a565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a082319060240160206040518083038186803b158015611b6357600080fd5b505afa158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b9190613d52565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611be157600080fd5b505af1158015611bf5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124d9190613d35565b60005b8151811015610f3957611c498484848481518110611c3c57611c3c613c5a565b6020026020010151610cd2565b80611c5381613c86565b915050611c1c565b606060038054610b4090613ca1565b6060818310611c8c57604051631960ccad60e11b815260040160405180910390fd5b600080611c9860005490565b90506001851015611ca857600194505b80841115611cb4578093505b6000611cbf876118b4565b905084861015611cde5785850381811015611cd8578091505b50611ce2565b5060005b6000816001600160401b03811115611cfc57611cfc613320565b604051908082528060200260200182016040528015611d25578160200160208202803683370190505b50905081611d38579350610cbe92505050565b6000611d438861215d565b905060008160400151611d54575080515b885b888114158015611d665750848714155b15611de257611d7481612b46565b9250826040015115611d8557611dda565b82516001600160a01b031615611d9a57825191505b8a6001600160a01b0316826001600160a01b03161415611dda5780848880600101995081518110611dcd57611dcd613c5a565b6020026020010181815250505b600101611d56565b505050928352509095945050505050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b905090565b611e9b858686604051602001611e84929190918252602082015260400190565b604051602081830303815290604052858585612a82565b6000858152600d6020526040902060019055610f8284610faf565b601a54601b54601c54601e54601d8054600095869586956060958795869560ff958616959192610100810483169216908390611ef190613ca1565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1d90613ca1565b8015611f6a5780601f10611f3f57610100808354040283529160200191611f6a565b820191906000526020600020905b815481529060010190602001808311611f4d57829003601f168201915b50505050509250955095509550955095509550909192939495565b6000805460001901611e5f90620186a0613d6b565b611fa5848484610cd2565b6001600160a01b0383163b15610f3957611fc184848484612b66565b610f39576040516368d2bf6b60e11b815260040160405180910390fd5b611fe661282a565b6017546000818152600e6020908152604080832086845282528083208584528252808320938352600f9091529020600482015460ff166120395760405163d73251d760e01b815260040160405180910390fd5b600080835560018301819055600283018190556003830181905560048301805460ff1916905584815260208290526040812080549161207783613d82565b909155505060175460009081526010602090815260408083208784529091528120805490915b818110156120ea57858382815481106120b8576120b8613c5a565b906000526020600020015414156120d8576120d38382612c5e565b6120ea565b806120e281613c86565b91505061209d565b50600086815260208490526040902054610e5c575060125460005b8181101561215457866012828154811061212157612121613c5a565b906000526020600020015414156121425761213d601282612c5e565b612154565b8061214c81613c86565b915050612105565b50505050505050565b61216561315c565b61216d61315c565b600183108061217e57506000548310155b156121895792915050565b61219283612b46565b90508060400151156121a45792915050565b610cbe83612cd3565b6121b561282a565b601e805460ff1916911515919091179055565b60606121d3826127df565b6121f057604051634a1850bf60e11b815260040160405180910390fd5b601d80546121fd90613ca1565b1515905061221957505060408051602081019091526000815290565b601e5460ff16156122b657601d805461223190613ca1565b80601f016020809104026020016040519081016040528092919081815260200182805461225d90613ca1565b80156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b50505050509050919050565b604080516020810190915260008152601e54610100900460ff16156122f35750604080518082019091526005815264173539b7b760d91b60208201525b601d6122fe84612cec565b8260405160200161231193929190613db5565b604051602081830303815290604052915050919050565b612355858686604051602001611e8492919091825260601b6001600160601b031916602082015260340190565b5050506000918252600d602052604090912060019055601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61239d61282a565b601a805460ff19166001179055565b6123b461282a565b80156123dc57601980549060006123ca83613c86565b909155506123dc9050601560006130ba565b6019546000908152601460205260408120905b8351811015610f3957600084828151811061240c5761240c613c5a565b6020908102919091018101518082015181516000908152928690526040832055601554909250815b81811015612470578351601580548390811061245257612452613c5a565b9060005260206000200154141561246857600192505b600101612434565b50816124ac578251601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47501555b5050506001016123ef565b6001600160a01b0382166000818152600a6020908152604080832054601854845260138352818420601f5480865290845282852054601954865260148552838620888752855283862054878752600b86528487208388528652848720898852865284872054978752600c86528487208988528652848720548388526016909652938620549596929587959194939215806125515750848110155b8061255c5750838210155b806125695750601c548710155b806125745750848110155b15612589576000975050505050505050610b2b565b6017546000908152600e60209081526040808320601f54845282528083208c84529091529020600481015460ff16156125c457806002015496505b8684106125dc57600098505050505050505050610b2b565b600088601c546125ec9190613d6b565b905060006125fa868a613d6b565b90506000612608858a613d6b565b90506000612616878a613d6b565b905061264461263761263161262b8787612814565b85612814565b83612814565b61263f611f85565b612814565b9f9e505050505050505050505050505050565b61265f61282a565b6001600160a01b0381166126c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6126d281612af4565b50565b601754600090815260106020908152604080832084845290915281208054606092816001600160401b0381111561270e5761270e613320565b604051908082528060200260200182016040528015612737578160200160208202803683370190505b50905060005b8281101561149c5783818154811061275757612757613c5a565b906000526020600020015482828151811061277457612774613c5a565b60209081029190910101528061278981613c86565b91505061273d565b60006301ffc9a760e01b6001600160e01b0319831614806127c257506380ac58cd60e01b6001600160e01b03198316145b80610b2b5750506001600160e01b031916635b5e139f60e01b1490565b6000816001111580156127f3575060005482105b8015610b2b575050600090815260046020526040902054600160e01b161590565b60008183106128235781610cbe565b5090919050565b6008546001600160a01b03163314610ffc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016126c0565b600081806001116128d4576000548110156128d457600081815260046020526040902054600160e01b81166128d2575b80610cbe5750600019016000818152600460205260409020546128b4565b505b604051636f96cda160e11b815260040160405180910390fd5b8154600090815b8181101561293d578385828154811061290f5761290f613c5a565b9060005260206000200154141561292b57600192505050610b2b565b8061293581613c86565b9150506128f4565b506000949350505050565b80612951575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461299e576040519150601f19603f3d011682016040523d82523d6000602084013e6129a3565b606091505b505090508061124d576040516328316c4d60e11b815260040160405180910390fd5b600081116129e65760405163162908e360e11b815260040160405180910390fd5b806129ef611f85565b10156126d25760405163671317e960e11b815260040160405180910390fd5b611019828260405180602001604052806000815250612d88565b60026009541415612a7b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016126c0565b6002600955565b6000858152600d602052604090205415612aaf5760405163256f5cdd60e11b815260040160405180910390fd5b601e546201000090046001600160a01b0316612acd85858585612dee565b6001600160a01b031614610f8257604051638baa579f60e01b815260040160405180910390fd5b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b612b4e61315c565b600082815260046020526040902054610b2b90612ea8565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612b9b903390899088908890600401613e66565b602060405180830381600087803b158015612bb557600080fd5b505af1925050508015612be5575060408051601f3d908101601f19168201909252612be291810190613e99565b60015b612c40573d808015612c13576040519150601f19603f3d011682016040523d82523d6000602084013e612c18565b606091505b508051612c38576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b81548290612c6e90600190613d6b565b81548110612c7e57612c7e613c5a565b9060005260206000200154828281548110612c9b57612c9b613c5a565b906000526020600020018190555081805480612cb957612cb9613eb6565b600190038181906000526020600020016000905590555050565b612cdb61315c565b610b2b612ce783612884565b612ea8565b60606000612cf983612eeb565b60010190506000816001600160401b03811115612d1857612d18613320565b6040519080825280601f01601f191660200182016040528015612d42576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612d7b57612d80565b612d4c565b509392505050565b612d928383612fc3565b6001600160a01b0383163b1561124d576000548281035b612dbc6000868380600101945086612b66565b612dd9576040516368d2bf6b60e11b815260040160405180910390fd5b818110612da9578160005414610f8257600080fd5b600060018580519060200120604051602001612e3691907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015612e94573d6000803e3d6000fd5b5050604051601f1901519695505050505050565b612eb061315c565b6001600160a01b03821681526001600160401b0360a083901c166020820152600160e01b82161515604082015260e89190911c606082015290565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612f2a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612f56576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612f7457662386f26fc10000830492506010015b6305f5e1008310612f8c576305f5e100830492506008015b6127108310612fa057612710830492506004015b60648310612fb2576064830492506002015b600a8310610b2b5760010192915050565b60005481612fe45760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461309357808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460010161305b565b50816130b157604051622e076360e81b815260040160405180910390fd5b60005550505050565b50805460008255906000526020600020908101906126d29190613183565b8280546130e490613ca1565b90600052602060002090601f016020900481019282613106576000855561314c565b82601f1061311f57805160ff191683800117855561314c565b8280016001018555821561314c579182015b8281111561314c578251825591602001919060010190613131565b50613158929150613183565b5090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b5b808211156131585760008155600101613184565b602080825282518282018190526000919060409081850190868401855b828110156131da578151805185528601518685015292840192908501906001016131b5565b5091979650505050505050565b6001600160e01b0319811681146126d257600080fd5b60006020828403121561320f57600080fd5b8135610cbe816131e7565b60005b8381101561323557818101518382015260200161321d565b83811115610f395750506000910152565b6000815180845261325e81602086016020860161321a565b601f01601f19169290920160200192915050565b602081526000610cbe6020830184613246565b60006020828403121561329757600080fd5b5035919050565b80356001600160a01b03811681146132b557600080fd5b919050565b600080604083850312156132cd57600080fd5b6132d68361329e565b946020939093013593505050565b6000806000606084860312156132f957600080fd5b6133028461329e565b92506133106020850161329e565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561335857613358613320565b60405290565b604051608081016001600160401b038111828210171561335857613358613320565b604051601f8201601f191681016001600160401b03811182821017156133a8576133a8613320565b604052919050565b60006001600160401b038211156133c9576133c9613320565b5060051b60200190565b600082601f8301126133e457600080fd5b813560206133f96133f4836133b0565b613380565b82815260069290921b8401810191818101908684111561341857600080fd5b8286015b8481101561345757604081890312156134355760008081fd5b61343d613336565b81358152848201358582015283529183019160400161341c565b509695505050505050565b80151581146126d257600080fd5b6000806040838503121561348357600080fd5b82356001600160401b0381111561349957600080fd5b6134a5858286016133d3565b92505060208301356134b681613462565b809150509250929050565b600082601f8301126134d257600080fd5b813560206134e26133f4836133b0565b82815260059290921b8401810191818101908684111561350157600080fd5b8286015b848110156134575780358352918301918301613505565b60006001600160401b0383111561353557613535613320565b613548601f8401601f1916602001613380565b905082815283838301111561355c57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261358457600080fd5b610cbe8383356020850161351c565b600080600080608085870312156135a957600080fd5b6135b28561329e565b93506135c06020860161329e565b925060408501356001600160401b03808211156135dc57600080fd5b6135e8888389016134c1565b935060608701359150808211156135fe57600080fd5b5061360b87828801613573565b91505092959194509250565b600082601f83011261362857600080fd5b813560206136386133f4836133b0565b82815260079290921b8401810191818101908684111561365757600080fd5b8286015b8481101561345757608081890312156136745760008081fd5b61367c61335e565b813581528482013585820152604080830135908201526060808301359082015283529183019160800161365b565b60008060008060008060c087890312156136c357600080fd5b86356001600160401b03808211156136da57600080fd5b6136e68a838b01613617565b9750602089013591506136f882613462565b9095506040880135908082111561370e57600080fd5b61371a8a838b016133d3565b95506060890135915061372c82613462565b9093506080880135908082111561374257600080fd5b5061374f89828a016133d3565b92505060a087013561376081613462565b809150509295509295509295565b602080825282518282018190526000919060409081850190868401855b828110156131da5781518051855286810151878601528581015186860152606090810151908501526080909301929085019060010161378b565b600080604083850312156137d857600080fd5b82356001600160401b038111156137ee57600080fd5b6134a585828601613617565b60006020828403121561380c57600080fd5b81356001600160401b0381111561382257600080fd5b8201601f8101841361383357600080fd5b612c568482356020840161351c565b6000806020838503121561385557600080fd5b82356001600160401b038082111561386c57600080fd5b818501915085601f83011261388057600080fd5b81358181111561388f57600080fd5b8660208260051b85010111156138a457600080fd5b60209290920196919550909350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611b04576139218385516138b6565b928401926080929092019160010161390e565b803560ff811681146132b557600080fd5b600080600080600080600080610100898b03121561396257600080fd5b88359750602089013596506040890135955061398060608a0161329e565b94506080890135935061399560a08a01613934565b925060c0890135915060e089013590509295985092959890939650565b6000602082840312156139c457600080fd5b8135610cbe81613462565b6000602082840312156139e157600080fd5b610cbe8261329e565b6020808252825182820181905260009190848201906040850190845b81811015611b0457835183529284019291840191600101613a06565b600080600060608486031215613a3757600080fd5b613a408461329e565b9250613a4e6020850161329e565b915060408401356001600160401b03811115613a6957600080fd5b613a75868287016134c1565b9150509250925092565b600080600060608486031215613a9457600080fd5b613a9d8461329e565b95602085013595506040909401359392505050565b60008060408385031215613ac557600080fd5b613ace8361329e565b915060208301356134b681613462565b600080600080600060a08688031215613af657600080fd5b8535945060208601359350613b0d60408701613934565b94979396509394606081013594506080013592915050565b861515815285602082015284604082015260c060608201526000613b4c60c0830186613246565b93151560808301525090151560a090910152949350505050565b60008060008060808587031215613b7c57600080fd5b613b858561329e565b9350613b936020860161329e565b92506040850135915060608501356001600160401b03811115613bb557600080fd5b61360b87828801613573565b60008060408385031215613bd457600080fd5b50508035926020909101359150565b60808101610b2b82846138b6565b600080600080600060a08688031215613c0957600080fd5b85359450613c196020870161329e565b9350613b0d60408701613934565b60008060408385031215613c3a57600080fd5b613c438361329e565b9150613c516020840161329e565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613c9a57613c9a613c70565b5060010190565b600181811c90821680613cb557607f821691505b60208210811415613cd657634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115613cef57613cef613c70565b500190565b6000816000190483118215151615613d0e57613d0e613c70565b500290565b600082613d3057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613d4757600080fd5b8151610cbe81613462565b600060208284031215613d6457600080fd5b5051919050565b600082821015613d7d57613d7d613c70565b500390565b600081613d9157613d91613c70565b506000190190565b60008151613dab81856020860161321a565b9290920192915050565b600080855481600182811c915080831680613dd157607f831692505b6020808410821415613df157634e487b7160e01b86526022600452602486fd5b818015613e055760018114613e1657613e43565b60ff19861689528489019650613e43565b60008c81526020902060005b86811015613e3b5781548b820152908501908301613e22565b505084890196505b505050505050613e5c613e568287613d99565b85613d99565b9695505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613e5c90830184613246565b600060208284031215613eab57600080fd5b8151610cbe816131e7565b634e487b7160e01b600052603160045260246000fdfea264697066735822122065df640619d44c09e73891d732f202b31d4d73904d6e767a8bfec8712e564b7a64736f6c634300080900334d616e746c65204a6f75726e6579202d2042792045766572797468696e6720426c6f636b636861696e