[ { "inputs": [ { "internalType": "contract IGlobals", "name": "globals", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "voter", "type": "address" } ], "name": "AlreadyVotedError", "type": "error" }, { "inputs": [], "name": "BadPreciousListError", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "proposalHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "actualHash", "type": "bytes32" } ], "name": "BadProposalHashError", "type": "error" }, { "inputs": [ { "internalType": "enum PartyGovernance.ProposalStatus", "name": "status", "type": "uint8" } ], "name": "BadProposalStatusError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "minAmount", "type": "uint256" } ], "name": "BelowMinWithdrawAmountError", "type": "error" }, { "inputs": [], "name": "CannotDisableRageQuitAfterInitializationError", "type": "error" }, { "inputs": [], "name": "CannotEnableRageQuitIfNotDistributionsRequireVoteError", "type": "error" }, { "inputs": [], "name": "CannotModifyTotalVotingPowerAndAcceptError", "type": "error" }, { "inputs": [ { "internalType": "uint40", "name": "rageQuitTimestamp", "type": "uint40" } ], "name": "CannotRageQuitError", "type": "error" }, { "inputs": [], "name": "DistributionsRequireVoteError", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "bytes", "name": "errData", "type": "bytes" } ], "name": "EthTransferFailed", "type": "error" }, { "inputs": [ { "internalType": "uint40", "name": "maxExecutableTime", "type": "uint40" }, { "internalType": "uint40", "name": "timestamp", "type": "uint40" } ], "name": "ExecutionTimeExceededError", "type": "error" }, { "inputs": [ { "internalType": "uint40", "name": "rageQuitTimestamp", "type": "uint40" } ], "name": "FixedRageQuitTimestampError", "type": "error" }, { "inputs": [ { "internalType": "int192", "name": "i192", "type": "int192" } ], "name": "Int192ToUint96CastOutOfRange", "type": "error" }, { "inputs": [ { "internalType": "uint16", "name": "bps", "type": "uint16" } ], "name": "InvalidBpsError", "type": "error" }, { "inputs": [], "name": "InvalidDelegateError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "InvalidGovernanceParameter", "type": "error" }, { "inputs": [], "name": "InvalidNewHostError", "type": "error" }, { "inputs": [], "name": "InvalidTokenOrderError", "type": "error" }, { "inputs": [], "name": "MismatchedPreciousListLengths", "type": "error" }, { "inputs": [ { "internalType": "contract IERC20", "name": "token", "type": "address" } ], "name": "NotATokenError", "type": "error" }, { "inputs": [], "name": "NotAuthorized", "type": "error" }, { "inputs": [], "name": "NotMinted", "type": "error" }, { "inputs": [], "name": "NothingToBurnError", "type": "error" }, { "inputs": [], "name": "OnlyDelegateCallError", "type": "error" }, { "inputs": [], "name": "OnlyWhenEmergencyActionsAllowedError", "type": "error" }, { "inputs": [], "name": "OnlyWhenEnabledError", "type": "error" }, { "inputs": [], "name": "PartyNotStartedError", "type": "error" }, { "inputs": [ { "internalType": "uint40", "name": "currentTime", "type": "uint40" }, { "internalType": "uint40", "name": "cancelTime", "type": "uint40" } ], "name": "ProposalCannotBeCancelledYetError", "type": "error" }, { "inputs": [ { "internalType": "contract IERC20", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenTransferFailedError", "type": "error" }, { "inputs": [], "name": "TooManyHosts", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "v", "type": "uint256" } ], "name": "Uint256ToInt192CastOutOfRange", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "v", "type": "uint256" } ], "name": "Uint256ToUint96CastOutOfRange", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnsafeRecipient", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "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": "address", "name": "authority", "type": "address" } ], "name": "AuthorityAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "authority", "type": "address" } ], "name": "AuthorityRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "votingPower", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum ITokenDistributor.TokenType", "name": "tokenType", "type": "uint8" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "DistributionCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "amountEth", "type": "uint256" } ], "name": "EmergencyExecute", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EmergencyExecuteDisabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldHost", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newHost", "type": "address" } ], "name": "HostStatusTransferred", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "intrinsicVotingPower", "type": "uint256" } ], "name": "PartyCardIntrinsicVotingPowerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" } ], "name": "PartyDelegateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": false, "internalType": "uint40", "name": "timestamp", "type": "uint40" }, { "indexed": false, "internalType": "uint96", "name": "delegatedVotingPower", "type": "uint96" }, { "indexed": false, "internalType": "uint96", "name": "intrinsicVotingPower", "type": "uint96" }, { "indexed": false, "internalType": "bool", "name": "isDelegated", "type": "bool" } ], "name": "PartyVotingSnapshotCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "weight", "type": "uint256" } ], "name": "ProposalAccepted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalCancelled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "executor", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "nextProgressData", "type": "bytes" } ], "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalPassed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "host", "type": "address" } ], "name": "ProposalVetoed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "proposer", "type": "address" }, { "components": [ { "internalType": "uint40", "name": "maxExecutableTime", "type": "uint40" }, { "internalType": "uint40", "name": "cancelDelay", "type": "uint40" }, { "internalType": "bytes", "name": "proposalData", "type": "bytes" } ], "indexed": false, "internalType": "struct PartyGovernance.Proposal", "name": "proposal", "type": "tuple" } ], "name": "Proposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "contract IERC20[]", "name": "withdrawTokens", "type": "address[]" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" } ], "name": "RageQuit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint40", "name": "oldRageQuitTimestamp", "type": "uint40" }, { "indexed": false, "internalType": "uint40", "name": "newRageQuitTimestamp", "type": "uint40" } ], "name": "RageQuitSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "IMPL", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_ID", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "abdicateAuthority", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newPartyHost", "type": "address" } ], "name": "abdicateHost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "uint256", "name": "snapIndex", "type": "uint256" } ], "name": "accept", "outputs": [ { "internalType": "uint256", "name": "totalVotes", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "authority", "type": "address" } ], "name": "addAuthority", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "components": [ { "internalType": "uint40", "name": "maxExecutableTime", "type": "uint40" }, { "internalType": "uint40", "name": "cancelDelay", "type": "uint40" }, { "internalType": "bytes", "name": "proposalData", "type": "bytes" } ], "internalType": "struct PartyGovernance.Proposal", "name": "proposal", "type": "tuple" } ], "name": "cancel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "votingPower", "type": "uint96" } ], "name": "decreaseTotalVotingPower", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint96", "name": "votingPower", "type": "uint96" } ], "name": "decreaseVotingPower", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "impl", "type": "address" }, { "internalType": "bytes", "name": "callData", "type": "bytes" } ], "name": "delegateCallAndRevert", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegate", "type": "address" } ], "name": "delegateVotingPower", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "delegationsByVoter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableEmergencyExecute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "enum ITokenDistributor.TokenType", "name": "tokenType", "type": "uint8" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "distribute", "outputs": [ { "components": [ { "internalType": "enum ITokenDistributor.TokenType", "name": "tokenType", "type": "uint8" }, { "internalType": "uint256", "name": "distributionId", "type": "uint256" }, { "internalType": "contract Party", "name": "party", "type": "address" }, { "internalType": "address payable", "name": "feeRecipient", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint128", "name": "memberSupply", "type": "uint128" }, { "internalType": "uint128", "name": "fee", "type": "uint128" }, { "internalType": "uint96", "name": "totalShares", "type": "uint96" } ], "internalType": "struct ITokenDistributor.DistributionInfo", "name": "distInfo", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "targetAddress", "type": "address" }, { "internalType": "bytes", "name": "targetCallData", "type": "bytes" }, { "internalType": "uint256", "name": "amountEth", "type": "uint256" } ], "name": "emergencyExecute", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "emergencyExecuteDisabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "components": [ { "internalType": "uint40", "name": "maxExecutableTime", "type": "uint40" }, { "internalType": "uint40", "name": "cancelDelay", "type": "uint40" }, { "internalType": "bytes", "name": "proposalData", "type": "bytes" } ], "internalType": "struct PartyGovernance.Proposal", "name": "proposal", "type": "tuple" }, { "internalType": "contract IERC721[]", "name": "preciousTokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "preciousTokenIds", "type": "uint256[]" }, { "internalType": "bytes", "name": "progressData", "type": "bytes" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "name": "execute", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "feeBps", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "voter", "type": "address" }, { "internalType": "uint40", "name": "timestamp", "type": "uint40" } ], "name": "findVotingPowerSnapshotIndex", "outputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getDistributionShareOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getGovernanceValues", "outputs": [ { "components": [ { "internalType": "uint40", "name": "voteDuration", "type": "uint40" }, { "internalType": "uint40", "name": "executionDelay", "type": "uint40" }, { "internalType": "uint16", "name": "passThresholdBps", "type": "uint16" }, { "internalType": "uint96", "name": "totalVotingPower", "type": "uint96" } ], "internalType": "struct ProposalStorage.GovernanceValues", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProposalEngineOpts", "outputs": [ { "components": [ { "internalType": "bool", "name": "enableAddAuthorityProposal", "type": "bool" }, { "internalType": "bool", "name": "allowArbCallsToSpendPartyEth", "type": "bool" }, { "internalType": "bool", "name": "allowOperators", "type": "bool" }, { "internalType": "enum ProposalStorage.DistributionsConfig", "name": "distributionsConfig", "type": "uint8" } ], "internalType": "struct ProposalStorage.ProposalEngineOpts", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProposalExecutionEngine", "outputs": [ { "internalType": "contract IProposalExecutionEngine", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint40", "name": "maxExecutableTime", "type": "uint40" }, { "internalType": "uint40", "name": "cancelDelay", "type": "uint40" }, { "internalType": "bytes", "name": "proposalData", "type": "bytes" } ], "internalType": "struct PartyGovernance.Proposal", "name": "proposal", "type": "tuple" } ], "name": "getProposalHash", "outputs": [ { "internalType": "bytes32", "name": "proposalHash", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "getProposalStateInfo", "outputs": [ { "internalType": "enum PartyGovernance.ProposalStatus", "name": "status", "type": "uint8" }, { "components": [ { "internalType": "uint40", "name": "proposedTime", "type": "uint40" }, { "internalType": "uint40", "name": "passedTime", "type": "uint40" }, { "internalType": "uint40", "name": "executedTime", "type": "uint40" }, { "internalType": "uint40", "name": "completedTime", "type": "uint40" }, { "internalType": "uint96", "name": "votes", "type": "uint96" }, { "internalType": "uint96", "name": "totalVotingPower", "type": "uint96" }, { "internalType": "uint8", "name": "numHosts", "type": "uint8" }, { "internalType": "uint8", "name": "numHostsAccepted", "type": "uint8" }, { "internalType": "uint40", "name": "voteDuration", "type": "uint40" }, { "internalType": "uint40", "name": "executionDelay", "type": "uint40" }, { "internalType": "uint16", "name": "passThresholdBps", "type": "uint16" } ], "internalType": "struct PartyGovernance.ProposalStateValues", "name": "values", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "voter", "type": "address" }, { "internalType": "uint40", "name": "timestamp", "type": "uint40" }, { "internalType": "uint256", "name": "snapIndex", "type": "uint256" } ], "name": "getVotingPowerAt", "outputs": [ { "internalType": "uint96", "name": "votingPower", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getVotingPowerShareOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "votingPower", "type": "uint96" } ], "name": "increaseTotalVotingPower", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint96", "name": "votingPower", "type": "uint96" } ], "name": "increaseVotingPower", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "components": [ { "internalType": "address[]", "name": "hosts", "type": "address[]" }, { "internalType": "uint40", "name": "voteDuration", "type": "uint40" }, { "internalType": "uint40", "name": "executionDelay", "type": "uint40" }, { "internalType": "uint16", "name": "passThresholdBps", "type": "uint16" }, { "internalType": "uint96", "name": "totalVotingPower", "type": "uint96" }, { "internalType": "uint16", "name": "feeBps", "type": "uint16" }, { "internalType": "address payable", "name": "feeRecipient", "type": "address" } ], "internalType": "struct PartyGovernance.GovernanceOpts", "name": "governance", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "enableAddAuthorityProposal", "type": "bool" }, { "internalType": "bool", "name": "allowArbCallsToSpendPartyEth", "type": "bool" }, { "internalType": "bool", "name": "allowOperators", "type": "bool" }, { "internalType": "enum ProposalStorage.DistributionsConfig", "name": "distributionsConfig", "type": "uint8" } ], "internalType": "struct ProposalStorage.ProposalEngineOpts", "name": "proposalEngine", "type": "tuple" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "customizationPresetId", "type": "uint256" } ], "internalType": "struct Party.PartyOptions", "name": "options", "type": "tuple" }, { "internalType": "contract IERC721[]", "name": "preciousTokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "preciousTokenIds", "type": "uint256[]" }, { "internalType": "address[]", "name": "authorities", "type": "address[]" }, { "internalType": "uint40", "name": "rageQuitTimestamp", "type": "uint40" } ], "internalType": "struct Party.PartyInitData", "name": "initData", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isAuthority", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isHost", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastProposalId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastTotalVotingPowerChangeTimestamp", "outputs": [ { "internalType": "uint40", "name": "", "type": "uint40" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "votingPower", "type": "uint256" }, { "internalType": "address", "name": "delegate", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintedVotingPower", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numHosts", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "preciousListHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint40", "name": "maxExecutableTime", "type": "uint40" }, { "internalType": "uint40", "name": "cancelDelay", "type": "uint40" }, { "internalType": "bytes", "name": "proposalData", "type": "bytes" } ], "internalType": "struct PartyGovernance.Proposal", "name": "proposal", "type": "tuple" }, { "internalType": "uint256", "name": "latestSnapIndex", "type": "uint256" } ], "name": "propose", "outputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "contract IERC20[]", "name": "withdrawTokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "minWithdrawAmounts", "type": "uint256[]" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "rageQuit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rageQuitTimestamp", "outputs": [ { "internalType": "uint40", "name": "", "type": "uint40" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": "uint40", "name": "newRageQuitTimestamp", "type": "uint40" } ], "name": "setRageQuit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenCount", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "veto", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "votingPowerByTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60e0346200037557601f19906001600160401b03601f620063973881900382810186168501848111868210176200037957859282916040528339602094859181010312620003755751936001600160a01b03851685036200037557620000646200038d565b935f90818652620000746200038d565b92828452306080528760a05286518681116200036157600854976001988981811c9116801562000356575b858210146200034257908188849311620002ee575b5084908883116001146200028c57869262000280575b50505f19600383901b1c191690881b176008555b83519586116200026c576009548781811c9116801562000261575b838210146200024d5785811162000204575b50819486116001146200019d5750509183949184939462000191575b50501b915f199060031b1c1916176009555b60c052604051615fe99081620003ae82396080518161171f015260a051818181610fff0152818161135001528181612a7c015281816136f4015281816139730152615190015260c05181818161309201526159bb0152f35b015192505f8062000127565b600983528183209493928692918316915b88838310620001e95750505010620001d0575b505050811b0160095562000139565b01515f1960f88460031b161c191690555f8080620001c1565b858701518855909601959485019487935090810190620001ae565b600984528284208680890160051c820192858a1062000243575b0160051c019088905b828110620002375750506200010b565b85815501889062000227565b925081926200021e565b634e487b7160e01b84526022600452602484fd5b90607f1690620000f9565b634e487b7160e01b83526041600452602483fd5b015190505f80620000ca565b90848b9416916008885286882092885b88828210620002d75750508411620002be575b505050811b01600855620000de565b01515f1960f88460031b161c191690555f8080620002af565b8385015186558e979095019493840193016200029c565b909150600886528486208880850160051c82019287861062000338575b918c91869594930160051c01915b82811062000329575050620000b4565b8881558594508c910162000319565b925081926200030b565b634e487b7160e01b86526022600452602486fd5b90607f16906200009f565b634e487b7160e01b84526041600452602484fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b60405190602082016001600160401b03811183821017620003795760405256fe60806040526004361015610021575b361561001f5734156131cf575b5f80fd5b005b5f3560e01c806301ffc9a71461042657806302403f711461042157806306fdde031461041c578063081812fc146104175780630935847914610412578063095ea7b31461040d5780630d4d151314610408578063158ef93e1461040357806316399ea2146103fe5780631d28dec7146103f95780632330f247146103f457806323b872dd146103ef57806324a9d853146103ea57806326defa73146103e557806327cb04b4146103e0578063287b4399146103db5780632a55205a146103d65780632fd75a27146103d1578063305a0721146103cc57806333b9d8c4146103c75780633846b6d2146103c25780633e4011b9146103bd5780634121c931146103b857806342842e0e146103b357806342966c68146103ae57806343bc8831146103a957806346904840146103a457806352a702b51461039f57806356973ee51461039a5780635c60da1b1461039a5780636210f6b2146103955780636352211e146103905780636fd44cfd1461038b57806370a082311461038657806374cb30411461038157806378cfabac14610340578063791fec561461037c5780638518a7451461037757806395d89b41146103725780639cd288941461036d5780639f181b5e14610368578063a22cb46514610363578063a25632fd1461035e578063b20240ee14610359578063b80f55c914610354578063b88d4fde1461034f578063c43683a11461034a578063c87b56dd14610345578063caf6aa4b14610340578063cc7b9d061461033b578063ccb3601114610336578063cd36324914610331578063cf67f3441461032c578063d1a35cba14610327578063d3c989af14610322578063d7faa2621461031d578063e6f26d9a14610318578063e7265a9514610313578063e8a3d4851461030e578063e985e9c514610309578063eb2931b714610304578063f0689b47146102ff578063f3ff955a146102fa578063fea44a56146102f55763fffc559d0361000e57612b2a565b612a46565b61291a565b612880565b612840565b6127e9565b6127d4565b6126a2565b61267e565b612661565b61259e565b612471565b612437565b6123ee565b61231c565b6120f6565b61183b565b6120e0565b612054565b611e72565b611e37565b611d26565b611b75565b611a82565b611a50565b611a2a565b611987565b61190d565b611865565b61181e565b6117ca565b61179e565b61176e565b61174e565b61170a565b6116cd565b6116a6565b61167f565b611622565b611544565b611282565b6111f2565b6110c6565b611078565b610fa0565b610f55565b610f3f565b610eea565b610e2a565b610dab565b610d88565b610d71565b610d05565b610ba0565b610aff565b610ade565b61096e565b61088b565b610851565b61081f565b610744565b61051d565b61043d565b6001600160e01b031981160361001b57565b3461001b57602036600319011261001b5761049960043561045d8161042b565b63ffffffff60e01b16630a85bd0160e11b81149081156104ee575b81156104ae575b811561049d575b5060405190151581529081906020820190565b0390f35b63152a902d60e11b1490505f610486565b90506301ffc9a760e01b811480156104de575b80156104ce575b9061047f565b50635b5e139f60e01b81146104c8565b506380ac58cd60e01b81146104c1565b630271189760e51b81149150610478565b6001600160601b0381160361001b57565b359061051b826104ff565b565b3461001b57604036600319011261001b5760043560243561053d816104ff565b6105456154da565b60018060601b039061058c6105618284600e5460601c166147a9565b600e8054600160601b600160c01b03191660609290921b600160601b600160c01b0316919091179055565b1690805f52600f60205260405f2090815491838303928311610603577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7936105fe936105ee92556105e86105df84615cfa565b9160170b6154f1565b90614619565b6040519081529081906020820190565b0390a1005b61327c565b5f91031261001b57565b90600182811c92168015610640575b602083101461062c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610621565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b0382111761067957604052565b61064a565b61016081019081106001600160401b0382111761067957604052565b6001600160401b03811161067957604052565b61010081019081106001600160401b0382111761067957604052565b90601f801991011681019081106001600160401b0382111761067957604052565b5f5b8381106106fb5750505f910152565b81810151838201526020016106ec565b90602091610724815180928185528580860191016106ea565b601f01601f1916010190565b90602061074192818152019061070b565b90565b3461001b575f8060031936011261081c576040518160085461076581610612565b808452906001908181169081156107f4575060011461079b575b6104998461078f818803826106c9565b60405191829182610730565b60088352602094507ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee35b8284106107e157505050816104999361078f928201019361077f565b80548585018701529285019281016107c5565b610499965061078f9450602092508593915060ff191682840152151560051b8201019361077f565b80fd5b3461001b57602036600319011261001b576004355f52600c602052602060018060a01b0360405f205416604051908152f35b3461001b57604036600319011261001b576020610872602435600435613d1d565b604051908152f35b6001600160a01b0381160361001b57565b3461001b57604036600319011261001b576004356108a88161087a565b6024355f818152600a602052604081205490926001600160a01b0391821691903383141580610945575b6109345761090b816108ec865f52600c60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b6040516282b42960e81b8152600490fd5b5061096961096561095e3361095987610c8c565b610cf0565b5460ff1690565b1590565b6108d2565b3461001b57606036600319011261001b576104995f80516020615ef48339815191526105ee610a786004356109a28161087a565b610aad6044356109b18161087a565b6109b96154da565b600e5460018060601b03808260601c1691815f80516020615f148339815191525460601c16926109ea602435615bce565b9380151580610ac7575b610aba575b5050600e80546001600160601b0319166001600160601b0392841660010184169283161790559788968792600e54610a479061056190879060601c6001600160601b0316613290565b613290565b84169384610a5d855f52600f60205260405f2090565b556040516001600160601b0390911681529081906020820190565b0390a2610a94610a8785610ca5565b546001600160a01b031690565b6001600160a01b038116610ab2575b5060170b836146ff565b615deb565b91505f610aa3565b03821692506001826109f9565b50610ad282826147a9565b848087169116106109f4565b3461001b575f36600319011261001b57602060ff5f54166040519015158152f35b3461001b57602036600319011261001b57610b81610b4a600435610b22816104ff565b610b2a6154da565b5f80516020615f148339815191525460601c6001600160601b03166147a9565b5f80516020615f148339815191528054600160601b600160c01b03191660609290921b600160601b600160c01b0316919091179055565b5f80516020615f34833981519152604080515f81525f196020820152a1005b3461001b57602036600319011261001b57600435610bbc61351d565b805f52600660205260405f20610bd9610bd4826132eb565b614be9565b610be281611f5c565b600181141580610c78575b80610c64575b610c43575080546001600160a01b03166001600160a01b03191790556040513381527fc2131db10d833d6b93ae553fa450ea0f6c0c2dfb0160cb3309468bf72718f3eb90602090a261001f614ddc565b604051630821641d60e21b8152908190610c609060048301613cbc565b0390fd5b50610c6e81611f5c565b6004811415610bf3565b50610c8281611f5c565b6003811415610bed565b6001600160a01b03165f908152600d6020526040902090565b6001600160a01b03165f90815260046020526040902090565b6001600160a01b03165f90815260036020526040902090565b6001600160a01b03165f908152600b6020526040902090565b9060018060a01b03165f5260205260405f2090565b3461001b57602036600319011261001b57600435610d228161087a565b60018060a01b03165f526010602052602060ff60405f2054166040519015158152f35b606090600319011261001b57600435610d5d8161087a565b90602435610d6a8161087a565b9060443590565b3461001b5761001f610d8236610d45565b91615855565b3461001b575f36600319011261001b57602061ffff5f5460101c16604051908152f35b3461001b57602036600319011261001b57600435610dc88161087a565b303303610e18576001600160a01b03165f818152601060205260408120805460ff19166001179055907f550a8ae64ec9d6640b6f168a26d3e6364b90defe8110c92135aa775b279e54ea8280a280f35b60405163ea8e4eb560e01b8152600490fd5b3461001b57602036600319011261001b57600435610e478161087a565b610e4f61351d565b6001600160a01b03811615610e705760405163640c1a3360e01b8152600490fd5b6005549060ff8216908115610603577fddffcdb3bb07c5efc18b0918cf4e3e88c7d42cc05156cdadb2ec12c3b5ff892f9260ff6105fe935f1901169060ff191617600555610eca610ec033610cbe565b805460ff19169055565b604080513381526001600160a01b03909216602083015290918291820190565b3461001b575f8060031936011261081c57610f036154da565b33808252601060205260408220805460ff191690557f272215cde179041f7a3e8da6f8aabc7c8fc1336ccd73aba698cb825a80d3be488280a280f35b3461001b576040366003190112156159a0575f80fd5b3461001b57602036600319011261001b576020610872600435615481565b9181601f8401121561001b578235916001600160401b03831161001b576020838186019501011161001b57565b606036600319011261001b57600435610fb88161087a565b6024356001600160401b03811161001b57610fd7903690600401610f73565b604051635c9fcd8560e11b8152600b60048201529192916001600160a01b03906020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115611073575f91611045575b50163303610e185761001f926044359261414e565b611066915060203d811161106c575b61105e81836106c9565b81019061357c565b5f611030565b503d611054565b613591565b3461001b575f36600319011261001b575f80516020615f94833981519152546040516001600160a01b039091168152602090f35b64ffffffffff81160361001b57565b359061051b826110ac565b3461001b57604036600319011261001b5760206108726004356110e88161087a565b602435906110f5826110ac565b613490565b6040519061051b8261067e565b6040519060e082018281106001600160401b0382111761067957604052565b6040519060a082018281106001600160401b0382111761067957604052565b6040519061051b8261065e565b6001600160401b03811161067957601f01601f191660200190565b91909161117981611152565b61118660405191826106c9565b8093828252821161001b5781815f9384602080950137010152565b9291926111ad82611152565b916111bb60405193846106c9565b82948184528183011161001b578281602093845f960137010152565b9080601f8301121561001b57816020610741933591016111a1565b3461001b57604036600319011261001b5760043561120f8161087a565b6024356001600160401b03811161001b5761122e9036906004016111d7565b9030330361001b575f828192602082519201905af461127061127e61125161411f565b604051928391602083019515158652604080840152606083019061070b565b03601f1981018352826106c9565b5190fd5b3461001b576003196040368201811361001b576004803592602435906001600160401b03821161001b57606090823603011261001b576112c0613c84565b6112d2845f52600660205260405f2090565b6112eb60028201546112e636858701611b09565b614dfb565b6112f4816132eb565b916112fe83614be9565b61130781611f5c565b60058103611529575061131f60246113299201614106565b64ffffffffff1690565b8451631106aeeb60e21b808252600f8287019081526020966001600160a01b0396909492937f000000000000000000000000000000000000000000000000000000000000000088169289908290819083010381865afa9485156110735789915f9661150a575b508a51938491825281806113aa8a8201906017602083019252565b03915afa8015611073576113e7948a935f926114db575b50806114cb575b50806114b9575b5001516113e29064ffffffffff1661131f565b613421565b9081421061149357865f80888861142b8961140f42600160271b1764ffffffffff168b613a4a565b5f80516020615f9483398151915254166001600160a01b031690565b915163e0a8f6f560e01b9181019182526024810186905261144f8160448101611270565b51915af461145b61411f565b901561148e57507f416e669c63d9a3a5e36ee7cc7e2104b8db28ccd286aa18966e98fa230c73b08c5f80a261001f614ddc565b6141d4565b610c6086519283926303861c4b60e41b845264ffffffffff809216914216908401613fa9565b808410156113cf5792506113e26113cf565b808511156113c85793505f6113c8565b6114fc9192508a3d8c11611503575b6114f481836106c9565b810190614110565b905f6113c1565b503d6114ea565b611522919650823d8411611503576114f481836106c9565b945f61138f565b8551630821641d60e21b8152908190610c6090828801613cbc565b3461001b5761155236610d45565b919061155f838284615855565b803b15159283611585575b50505061157357005b604051633da6393160e01b8152600490fd5b604051630a85bd0160e11b8082523360048301526001600160a01b0394851660248301526044820192909252608060648201525f6084820181905291945092602092849260a4928492165af1908115611073575f916115f4575b506001600160e01b03191614155f808061156a565b611615915060203d811161161b575b61160d81836106c9565b810190615d2c565b5f6115df565b503d611603565b3461001b57602036600319011261001b57604051604081018181106001600160401b0382111761067957604052600181526020810190602036833780511561167a5761001f9160043590526116756154da565b615508565b61344c565b3461001b575f36600319011261001b57602064ffffffffff600e5460c01c16604051908152f35b3461001b575f36600319011261001b575f54604051602091821c6001600160a01b03168152f35b3461001b57602036600319011261001b5760206004356116ec8161087a565b60018060a01b038091165f526004825260405f205416604051908152f35b3461001b575f36600319011261001b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461001b575f36600319011261001b57602060ff60055416604051908152f35b3461001b57602036600319011261001b57602061178c600435615cfa565b6040516001600160a01b039091168152f35b3461001b575f36600319011261001b57600e5460405160609190911c6001600160601b03168152602090f35b3461001b57602036600319011261001b576004356117e78161087a565b6001600160a01b0316801561180c575f52600b602052602060405f2054604051908152f35b60405163d92e233d60e01b8152600490fd5b3461001b575f36600319011261001b576020600254604051908152f35b3461001b57602036600319011261001b576004355f52600f602052602060405f2054604051908152f35b3461001b57602036600319011261001b57610b81610b4a600435611888816104ff565b6118906154da565b5f80516020615f148339815191525460601c6001600160601b0316613290565b634e487b7160e01b5f52602160045260245ffd5b600311156118ce57565b6118b0565b9190916060608082019380511515835260208101511515602084015260408101511515604084015201519060038210156118ce5760600152565b3461001b575f36600319011261001b57611925613258565b506040516119328161065e565b60ff5f80516020615f548339815191525481811615158352818160081c1615156020840152818160101c161515604084015260181c169060038210156118ce57610499916060820152604051918291826118d3565b3461001b575f8060031936011261081c57604051816009546119a881610612565b808452906001908181169081156107f457506001146119d1576104998461078f818803826106c9565b60098352602094507f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5b828410611a1757505050816104999361078f928201019361077f565b80548585018701529285019281016119fb565b3461001b575f36600319011261001b57602064ffffffffff5f5460c01c16604051908152f35b3461001b575f36600319011261001b57600e546040516001600160601b039091168152602090f35b8015150361001b57565b3461001b57604036600319011261001b57600435611a9f8161087a565b60243590611aac82611a78565b335f52600d602052611ac18160405f20610cf0565b9115159160ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b91909160608184031261001b57604051906001600160401b039060608301828111848210176106795760405282948135611b42816110ac565b84526020820135611b52816110ac565b6020850152604082013592831161001b57604092611b7092016111d7565b910152565b3461001b57604036600319011261001b576004356001600160401b03811161001b57611ba8610499913690600401611b09565b611bb0613c84565b7fea77d064c7d953e57748855e7b0751ea190d1df7505615a4e39336d4d548f688611d0e611bdf6002546139f2565b92611be984600255565b611d00611bf46133a6565b6060810151611cc9906001600160601b031691611cbd611c1660055460ff1690565b91611cae611c29825164ffffffffff1690565b611c99611c4d6040611c43602087015164ffffffffff1690565b95015161ffff1690565b95611c8f611c596110fa565b4264ffffffffff168152995f60208c0181905260408c0181905260608c0181905260808c01526001600160601b031660a08b0152565b60ff1660c0890152565b5f60e088015264ffffffffff16610100870152565b64ffffffffff16610120850152565b61ffff16610140830152565b611cd2836133fa565b611ce4875f52600660205260405f2090565b906002611cf9895f52600660205260405f2090565b0155613a6f565b604051918291338684613c39565b0390a1611d1d60243582613d1d565b506105ee614ddc565b3461001b575f36600319011261001b57611d3e613258565b506080604051611d4d8161065e565b5f80516020615f148339815191525464ffffffffff808216928381526020810191808460281c1683526040820190606061ffff93848760501c168452019360018060601b03809660601c168552604051968752511660208601525116604084015251166060820152f35b6001600160401b0381116106795760051b60200190565b9291611dd982611db7565b91611de760405193846106c9565b829481845260208094019160051b810192831161001b57905b828210611e0d5750505050565b81358152908301908301611e00565b9080601f8301121561001b5781602061074193359101611dce565b3461001b57602036600319011261001b576004356001600160401b03811161001b57611e6a61001f913690600401611e1c565b6116756154da565b3461001b57608036600319011261001b57600435611e8f8161087a565b602435611e9b8161087a565b604435916064356001600160401b03811161001b57611ebe903690600401610f73565b9092611ecb858285615855565b803b15159384611ee2575b50505050905061157357005b611f0c94505f6020949660405196879586948593630a85bd0160e11b9b8c86523360048701615d41565b03926001600160a01b03165af1908115611073575f91611f3e575b506001600160e01b0319161415805f808080611ed6565b611f56915060203d811161161b5761160d81836106c9565b5f611f27565b600811156118ce57565b9060088210156118ce5752565b61016061051b929493611f8b83610180810197611f66565b805164ffffffffff166020840152602081015164ffffffffff166040840152604081015164ffffffffff166060840152606081015164ffffffffff16608084015260808101516001600160601b031660a084015260a08101516001600160601b031660c084015260c081015160ff1660e084015260e0810151612016610100918286019060ff169052565b81015161202f610120918286019064ffffffffff169052565b81015190612049610140928386019064ffffffffff169052565b015161ffff16910152565b3461001b57602036600319011261001b576120c8604061014081516120788161067e565b5f91818380935282602082015282858201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152015260043581526006602052206132eb565b6120d181614be9565b61049960405192839283611f73565b3461001b576020366003190112156159a0575f80fd5b3461001b575f36600319011261001b57602060405160028152f35b81601f8201121561001b5780359161212883611db7565b9261213660405194856106c9565b808452602092838086019260051b82010192831161001b578301905b828210612160575050505090565b838091833561216e8161087a565b815201910190612152565b359061ffff8216820361001b57565b359061051b8261087a565b91909160e08184031261001b576121a8611107565b928135916001600160401b03831161001b576121cb60c092612228948301612111565b85526121d9602082016110bb565b60208601526121ea604082016110bb565b60408601526121fb60608201612179565b606086015261220c60808201610510565b608086015261221d60a08201612179565b60a086015201612188565b60c0830152565b919082608091031261001b576040516122478161065e565b60608193803561225681611a78565b8352602081013561226681611a78565b6020840152604081013561227981611a78565b6040840152013590600382101561001b5760600152565b91906101008382031261001b576122a5611126565b926001600160401b03813581811161001b57836122c3918401612193565b85526122d2836020840161222f565b602086015260a082013581811161001b57836122ef9184016111d7565b604086015260c082013590811161001b5760e09261230e9183016111d7565b606085015201356080830152565b3461001b5760031960203682011261001b576004908135916001600160401b039182841161001b5760a090843603011261001b57612358611126565b918382013581811161001b5761237390833691870101612290565b8352602484013581811161001b5761239090833691870101612111565b6020840152604484013581811161001b576123b090833691870101611e1c565b6040840152606484013590811161001b5761001f936123d96084926123e4943691840101612111565b6060850152016110bb565b6080820152612fc2565b3461001b57606036600319011261001b5760206124256004356124108161087a565b60243561241c816110ac565b604435916132a9565b6040516001600160601b039091168152f35b3461001b57602036600319011261001b576004356001600160401b03811161001b5761087261246c6020923690600401611b09565b6133fa565b3461001b57602036600319011261001b5760043561248e816110ac565b61249661351d565b64ffffffffff9064ab2cb21860828216811461256b5760ff5f80516020615f548339815191525460181c166124ca816118c4565b1561255957600e5460c01c64ffffffffff1692831690646b5b567bfe821491821561254f575b5050612530577f33d3074d42e98b5940d3d8364ba0f3421c4fde9db929c3d1c2899a36c5b216f29161252182615094565b6105fe60405192839283613fa9565b60405163066a813560e51b815264ffffffffff83166004820152602490fd5b1490505f806124f0565b60405163064023b360e51b8152600490fd5b604051635f07128f60e01b8152600490fd5b6002111561001b57565b600211156118ce57565b9060028210156118ce5752565b3461001b57608036600319011261001b576101006125d96024356125c18161257d565b6044356125cd8161087a565b60643591600435613694565b61265f60e0604051926125ed848251612591565b6020810151602085015260018060a01b03806040830151166040860152806060830151166060860152608082015116608085015261263a60a082015160a086019060018060801b03169052565b60c0818101516001600160801b03169085015201516001600160601b031660e0830152565bf35b3461001b575f36600319011261001b576020600154604051908152f35b3461001b575f36600319011261001b57602060ff5f5460081c166040519015158152f35b3461001b57604036600319011261001b577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce76105fe6004356105ee6024356126e9816104ff565b82816126f36154da565b600e5460601c6001600160601b03165f80516020615f14833981519152546001600160601b039260609190911c83169081151590816127bb575b506127ac575b506127725f80516020615ef4833981519152926127566105618761279695613290565b612768855f52600f60205260405f2090565b5495168095613421565b80612785855f52600f60205260405f2090565b556040519081529081906020820190565b0390a26127a283615cfa565b9060170b90614619565b81900382169350612772612733565b905083806127c985856147a9565b92169116105f61272d565b3461001b575f366003190112156159a0575f80fd5b3461001b57604036600319011261001b57602060ff61283460043561280d8161087a565b6024359061281a8261087a565b6001600160a01b03165f908152600d855260409020610cf0565b54166040519015158152f35b3461001b57602036600319011261001b5760043561285d8161087a565b60018060a01b03165f526003602052602060ff60405f2054166040519015158152f35b60c036600319011261001b576001600160401b0360243581811161001b576128ad60049136908301611b09565b9060443583811161001b576128c59036908301612111565b60643584811161001b576128dc9036908401611e1c565b9060843585811161001b576128f49036908501610f73565b92909160a43596871161001b5761291161001f9736908701610f73565b96909535613fc1565b3461001b57602036600319011261001b5761001f60043561293a8161087a565b61294333614b30565b61294f610a8733610ca5565b6001600160a01b039290838116612a40575033905b808416612a3a5750805b60208301516001600160601b0316936129ef6129b56129b06129ab61299c604089015160018060601b031690565b6001600160601b031660170b90565b6145d4565b615bfa565b918416916129df6129c4611145565b4264ffffffffff168152976001600160601b03166020890152565b6001600160601b03166040870152565b338114156060860152612a028533614a01565b612a0f836108ec33610ca5565b337fad2543a59f1b8c397ab540030b195cbeea5fadc4d5560e9fdf1ca5f750b725065f80a3336147c2565b9061296e565b90612964565b3461001b575f8060031936011261081c57604051635c9fcd8560e11b8152600b60048201526001600160a01b03906020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115611073578391612adc575b501633141580612ac7575b610e1857612ac461420e565b80f35b50612ad761096561095e33610cbe565b612ab8565b612af4915060203d811161106c5761105e81836106c9565b5f612aad565b9181601f8401121561001b578235916001600160401b03831161001b576020808501948460051b01011161001b57565b3461001b57608036600319011261001b5760046001600160401b03813581811161001b57612b5b9036908401612afa565b9160243581811161001b57612b739036908601612afa565b9160443590811161001b57612b8b9036908701612afa565b9560643596612b998861087a565b8615612fb257335f908152601060205260409020612bb69061095e565b92612bcb600e5464ffffffffff9060c01c1690565b93159081612f4a575b600e805464ffffffffff60c01b19166405596590c360c51b1790555f805464ffffffffff60c01b19164260c01b64ffffffffff60c01b16179055612c1787615765565b91888a5f805b8b8210612de8575050612c4192612c3c610b4a93610b2a933691611dce565b61564b565b5f5460101c61ffff1661ffff165f5b888110612c96577f1d1937c6b6f4541f415f6e3e99b2b7a960dcedc201d01deada3d90b8cf77f9578b8b6105fe8f8d8d612c898e615094565b60405195869533876157b1565b612ca9612ca4828b8b615797565b6157a7565b612cb382866150bb565b51612cc9612cc18583613d0a565b612710900490565b80612d6b575b50612cdb838887615797565b35808210612d46575090818e612cf99493612cfe575b5050506139f2565b612c50565b6001600160a01b039280841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03612d375750612d2f9216615a8a565b5f808e612cf1565b612d419350615ae5565b612d2f565b60408051632d9eac9360e01b8152808b01938452602084019290925290918291010390fd5b9081612d7691613483565b906001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03612db9575f54612db3919060201c6001600160a01b0316615a8a565b5f612ccf565b5f54612de39190612ddd9060201c6001600160a01b03165b6001600160a01b031690565b84615ae5565b612db3565b91509150612dfd612dd1612ca4848d8d615797565b6001600160a01b039091161015612f3957879073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee612e43612dd180612ca4858f612e3d8383838c615797565b98615797565b14818b8b5f935f14612ed05750505050475b5f5b8d8d818310612e765750505050612e6d906139f2565b8b908b92612c1d565b612eab612e9d612e97612e9186612ecb9796612ebb96615797565b35615481565b86613d0a565b670de0b6b3a7640000900490565b612eb5868b6150bb565b51613421565b612ec5858a6150bb565b526139f2565b612e57565b612ee192612dd192612ca492615797565b6040516370a0823160e01b815230818b0190815290916020918291849182908190850103915afa9283156110735792612f1c575b5050612e55565b612f329250803d10611503576114f481836106c9565b5f80612f15565b604051633a67cf6d60e01b81528690fd5b64ffffffffff8516646b5b567bfe8103612f65575b50612bd4565b64ab2cb218608114908115612fa8575b50612f80575f612f5f565b505060405163a16caf5360e01b815264ffffffffff9093169183019182525081906020010390fd5b905042115f612f75565b50604051630c48157760e11b8152fd5b5f90815460ff81166131be5760ff1916600190811783557f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c88380a18082519260408401519360608101519461305160808301519661304c602085519501519361304760208801516040890151908764ffffffffff608060608d01519c015116996150cf565b614ed4565b614fb4565b8161318f575b505084915b613131575b5050508061306d575050565b604051635c9fcd8560e11b8152601660048201526001600160a01b03906020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115611073578491613113575b501690813b1561310f5760405163fc9968df60e01b8152600481019190915291908290602490829084905af18015611073576130fc5750565b8061310961051b9261069a565b80610608565b8280fd5b61312b915060203d811161106c5761105e81836106c9565b5f6130c3565b805182101561318a57828261318361317661315d6131508597876150bb565b516001600160a01b031690565b6001600160a01b03165f90815260106020526040902090565b805460ff19166001179055565b019161305c565b613061565b6060919350015161319f816118c4565b6131a8816118c4565b15612559576131b78392615094565b5f80613057565b60405162dc149f60e41b8152600490fd5b3660041161001b575f356001600160e01b03191663bc197c8160e01b81148015613248575b8015613238575b613227575f80516020615f94833981519152546001600160a01b0316613221368061116d565b90615c41565b602090604051908152818101604052f35b50630a85bd0160e11b81146131fb565b5063f23a6e6160e01b81146131f4565b604051906132658261065e565b5f6060838281528260208201528260408201520152565b634e487b7160e01b5f52601160045260245ffd5b6001600160601b03918216908216019190821161060357565b916132b791610741936144e6565b6060810151156132d7575f905b602001516001600160601b031690613290565b60408101516001600160601b0316906132c4565b9061051b61ffff6132fa6110fa565b845464ffffffffff8082168352602882901c81166020840152605082901c81166040840152607882901c8116606084015260a09190911c6080830152909461339490600101546001600160601b03811660a088015291606083901c60ff1660c0880152606883901c60ff1660e088015264ffffffffff607084901c8216166101008801528260981c1661012087019064ffffffffff169052565b60c01c1661014084019061ffff169052565b604051906133b38261065e565b5f80516020615f148339815191525464ffffffffff8082168452602882901c166020840152605081901c61ffff166040840152606090811c6001600160601b031690830152565b9060408201916060835191825160208401208552209252565b906001820180921161060357565b9190820180921161060357565b8115613438570490565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b805482101561167a575f5260205f2001905f90565b5f1981019190821161060357565b9190820391821161060357565b6001600160a01b03165f9081526007602052604081208054925b8383106134c857505050806134bf57505f1990565b61074190613475565b9091928084018085116106035760011c906134f26134e68386613460565b505464ffffffffff1690565b64ffffffffff8481169116111561350d5750925b91906134aa565b935061351890613413565b613506565b335f52600360205260ff60405f20541615610e1857565b60405190613541826106ad565b8160e05f918281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b519061051b8261087a565b9081602091031261001b57516107418161087a565b6040513d5f823e3d90fd5b6040919493926135b0826060810197612591565b6001600160a01b031660208201520152565b51906001600160801b038216820361001b57565b519061051b826104ff565b908161010091031261001b5761367160e0604051926135ff846106ad565b805161360a8161257d565b84526020810151602085015261362260408201613571565b604085015261363360608201613571565b606085015261364460808201613571565b608085015261365560a082016135c2565b60a085015261366660c082016135c2565b60c0850152016135d6565b60e082015290565b1561368057565b634e487b7160e01b5f52600160045260245ffd5b909261369e613534565b506136a7613957565b3033036138b1575b5f80516020615f148339815191525460601c6001600160601b03161561389f57604051635c9fcd8560e11b8152600c60048201526001600160a01b03906020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa8015611073578261375c917fdda962f630bf2f85c8412f305206a4f363688481dd632689f88ad7022e4cc233935f91613881575b501693604051918291888a8461359c565b0390a1613767614ddc565b5f549361ffff828660201c169560101c169561378281612587565b801561383b576137ff93925f9697926137a96001846137a36137b296612587565b14613679565b16948386615ae5565b60405163eedaf00d60e01b81526001600160a01b03948516600482015230602482015295909316604486015261ffff90921660648501526101009392849284929091839182906084820190565b03925af1918215611073575f9261381557505090565b6107419250803d10613834575b61382c81836106c9565b8101906135e1565b503d613822565b5050604051631d1972a760e11b81523060048201526001600160a01b0390941660248501525061ffff9093166044830152610100928391839190829081606481016137ff565b613899915060203d811161106c5761105e81836106c9565b5f61374b565b6040516311bf009f60e21b8152600490fd5b60ff5f80516020615f548339815191525460181c166138cf816118c4565b613930576138dc33614b30565b60408101516001600160601b031615908161390a575b50156136af5760405163ea8e4eb560e01b8152600490fd5b6020015161392991506001600160601b03165b6001600160601b031690565b155f6138f2565b604051632e31362d60e01b8152600490fd5b9081602091031261001b575161074181611a78565b6040516331a1aa3360e11b8152601560048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611073575f916139c4575b506139b257565b604051632fb3e88560e01b8152600490fd5b6139e5915060203d81116139eb575b6139dd81836106c9565b810190613942565b5f6139ab565b503d6139d3565b5f1981146106035760010190565b805464ffffffffff60281b191660289290921b64ffffffffff60281b16919091179055565b805464ffffffffff60501b191660509290921b64ffffffffff60501b16919091179055565b805464ffffffffff60781b191660789290921b64ffffffffff60781b16919091179055565b90613c1d610140600161051b94613aa6613a8e865164ffffffffff1690565b825464ffffffffff191664ffffffffff909116178255565b613ac1613abb602087015164ffffffffff1690565b82613a00565b613adc613ad6604087015164ffffffffff1690565b82613a25565b613af7613af1606087015164ffffffffff1690565b82613a4a565b6080850151613b29906001600160601b031682546001600160a01b031660a09190911b6001600160a01b031916178255565b60a0850151910180546001600160601b0319166001600160601b0390921691909117815592613b79613b5f60c083015160ff1690565b855460ff60601b191660609190911b60ff60601b16178555565b613ba4613b8a60e083015160ff1690565b855460ff60681b191660689190911b60ff60681b16178555565b613bdc613bba61010083015164ffffffffff1690565b855464ffffffffff60701b191660709190911b64ffffffffff60701b16178555565b613c14613bf261012083015164ffffffffff1690565b855464ffffffffff60981b191660989190911b64ffffffffff60981b16178555565b015161ffff1690565b815461ffff60c01b191660c09190911b61ffff60c01b16179055565b916107419360409160c093855260018060a01b0316602085015260608285015264ffffffffff8082511660608601526020820151166080850152015191606060a0820152019061070b565b613c8d33614b30565b60408101516001600160601b03908116159182613cad575b5050610e1857565b60200151161590505f80613ca5565b60208101929161051b9190611f66565b64ffffffffff9081165f19019190821161060357565b60ff1660ff81146106035760010190565b906127109182810292818404149015171561060357565b8181029291811591840414171561060357565b90613d30825f52600660205260405f2090565b91613d3a836132eb565b90613d4482614be9565b613d4d81611f5c565b600181141580613f95575b80613f81575b610c4357505f5460c01c64ffffffffff1664ffffffffff9081164214613f6c576003850194613d9061095e3388610cf0565b613f5457613dc961391d95613dac613176610741993390610cf0565b613dc3613dbe875164ffffffffff1690565b613ccc565b336132a9565b937fea45672a2d92b09ff2dd48aa67615f8b5c79d7808b7282fc026a24e00283f78d613e586080830196613e17613e0a82610a428b5160018060601b031690565b6001600160601b03168952565b613e2361095e33610cbe565b613f2e575b613e328486613a6f565b604080518881523360208201526001600160601b03909216908201529081906060820190565b0390a182613e6e602083015164ffffffffff1690565b16159081613ecf575b50613e8f575b505090516001600160601b0316919050565b613e9b91421690613a00565b7fe36f8b7448daff4a52e2945db0d1d7a436279cc1d527a45c27835dcbd27f336d5f80a2613ec7614ddc565b5f8080613e7d565b9050613f26613f1f610140613f15613ef8613ef361391d8b5160018060601b031690565b613cf3565b60a0860151613f0f906001600160601b031661391d565b9061342e565b93015161ffff1690565b61ffff1690565b11155f613e77565b613f4f60e08501613f48613f43825160ff1690565b613ce2565b60ff169052565b613e28565b604051630b517d8f60e41b8152336004820152602490fd5b6040516001621af97960e21b03198152600490fd5b50613f8b81611f5c565b6004811415613d5e565b50613f9f81611f5c565b6003811415613d58565b64ffffffffff91821681529116602082015260400190565b93949196929096613fd0613957565b613fd8613c84565b613fea855f52600660205260405f2090565b97613ff960028a015482614dfb565b614002896132eb565b9661400c88614be9565b61401581611f5c565b60048114908115806140f2575b610c435761402f90611f5c565b6140ae575b6140416109658585614dab565b61409c576140849861407661407e9261406e6109659b6140698f64ffffffffff421690613a4a565b614b79565b9736916111a1565b9636916111a1565b956143c2565b61408b5750565b805464ffffffffff60781b19169055565b604051633b43666f60e01b8152600490fd5b815164ffffffffff9081164281106140d257506140cd9042168b613a25565b614034565b604051632f7e600560e21b8152918291610c609142169060048401613fa9565b506140fc81611f5c565b6005811415614022565b35610741816110ac565b9081602091031261001b575190565b3d15614149573d9061413082611152565b9161413e60405193846106c9565b82523d5f602084013e565b606090565b90939260ff5f5460081c166141dc575f806040518588823780868101838152039084865af161417b61411f565b90156141d457506141c97f66cf5924183d7d44caa75d9268a169d7c1422fef43848743d5e1ba32d5833acf949560405194859460018060a01b031685526060602086015260608501916141ee565b9060408301520390a1565b602081519101fd5b6040516304e71fd360e31b8152600490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b61010061ff00195f5416175f557f447e75484d6bdb571b4a92ae14018db7b6dd41f3f02360690c554e1d48f46f875f80a1565b9081518082526020808093019301915f5b828110614260575050505090565b835185529381019392810192600101614252565b919060209283815281518482015261429b8483015160e0604084015261010083019061070b565b906142cf6142bb604085015193601f19948585830301606086015261070b565b60608501518484830301608085015261070b565b92608081015160a083015260a081015193838382030160c08401528680865192838152019501905f5b81811061431c5750505061074194955060c060e09101519282850301910152614241565b82516001600160a01b0316875295880195918801916001016142f8565b81601f8201121561001b57805161434f81611152565b9261435d60405194856106c9565b8184526020828401011161001b5761074191602080850191016106ea565b9060208282031261001b5781516001600160401b03811161001b576107419201614339565b6001600160a01b0390911681526040602082018190526107419291019061070b565b95935f9593929194604087960151946143d9611107565b898152602081019690965260408601526060850152608084015260a083015260c08201525f80516020615f94833981519152546001600160a01b03169060405161443881611270602082019463a7c8a3f960e01b865260248301614274565b51915af461444461411f565b901561148e578060208061445d9351830101910161437b565b907fc98fbf8f20b11b050a9541d12aee1c11fcd31e8e42975cc885fb3d33a6accc826040518061448e8533836143a0565b0390a2614499614ddc565b511590565b906040516144ab8161065e565b915464ffffffffff81168352602881901c6001600160601b039081166020850152608882901c16604084015260e81c60ff1615156060830152565b91906144f0613258565b6001600160a01b0384165f9081526007602052604090209093909283548061451b575b505050505090565b80821090816145b2575b81614572575b5061456157509061453b91613490565b906001820161454c57808080614513565b61074192509061455b91613460565b5061449e565b915050610741925061455b91613460565b61457c9150613475565b8114801561458b575b5f61452b565b506145a16134e661459b83613413565b86613460565b64ffffffffff808516911611614585565b90506145c16134e68387613460565b64ffffffffff8086169116111590614525565b60170b906001600160bf1b0382136001600160bf1b031983121761060357565b601791820b910b01906001600160bf1b031982126001600160bf1b0383131761060357565b9061051b9161462781614b30565b906001600160a01b038061463a83610ca5565b5416806146f757508182915b602085015160408601516001600160601b039182169761466d926129b0921660170b6145f4565b906146ae8184169185169261469e614683611145565b4264ffffffffff168152996001600160601b031660208b0152565b6001600160601b03166040890152565b8181141560608801526146c18784614a01565b6146ce846108ec85610ca5565b7fad2543a59f1b8c397ab540030b195cbeea5fadc4d5560e9fdf1ca5f750b725065f80a36147c2565b918291614646565b9161051b9261470d81614b30565b9161471a610a8783610ca5565b6001600160a01b0392908381166147a3575080915b80841661479d575081925b602085015160408601516001600160601b0391821697614767926129b092614762911661299c565b6145f4565b9061477d8184169186169261469e614683611145565b8181141560608801526147908784614a01565b6146ce856108ec85610ca5565b9261473a565b9161472f565b6001600160601b03918216908216039190821161060357565b90936001600160a01b038381169491928515801561494e575b61493c578116908616958187141580614932575b6148d7575b508403614803575b5050505050565b6148a79461483361481385614b30565b602081015160409095015190946001600160601b03908116911690613290565b94146148b1575b5060408101516148a2919061489990614862906060906001600160601b03165b930151151590565b9161488961486e611145565b4264ffffffffff168152966001600160601b03166020880152565b6001600160601b03166040860152565b15156060840152565b614a01565b5f808080806147fc565b6040015190926148a2916148d091906001600160601b03165b906147a9565b929061483a565b806148e461492c92614b30565b60208101519091906148a290614910906001600160601b031660408801516001600160601b03166148ca565b92614899614862606061485a604085015160018060601b031690565b5f6147f4565b50858714156147ef565b60405163e5ec2d2560e01b8152600490fd5b50818716156147db565b91906149c557805182546020830151604084015160609094015164ffffffffff9093166001600160f01b03199092169190911760289190911b600160281b600160881b03161760889290921b600160881b600160e81b03169190911790151560e81b60ff60e81b16179055565b634e487b7160e01b5f525f60045260245ffd5b80549190600160401b83101561067957826149fb91600161051b95018155613460565b90614958565b81516020830151604084015164ffffffffff9493614ac2939092908616917f59c8109016c9c9310894a72309b48d2a442208dacb537923fca808618ce57102916001600160601b03908116911690614aa6614a5f6060890151151590565b6040805164ffffffffff90971687526001600160601b039384166020880152929093169185019190915290151560608401526001600160a01b038416929081906080820190565b0390a26001600160a01b03165f90815260076020526040902090565b9182549081614ad7575b505061051b916149d8565b614afa614aef61455b614ae985613475565b87613460565b5164ffffffffff1690565b90614b0d61131f855164ffffffffff1690565b911614614b1a5780614acc565b61051b92614b2a6149fb92613475565b90613460565b90614b39613258565b6001600160a01b039092165f90815260076020526040902080549081614b5d575050565b9192505f19810191908211610603576107419161455b91613460565b608081015160a08201515f9291614b9c916001600160601b039081169116614d5d565b614bc7575b8060ff60e08160c0614bba950151169201511690614d91565b614bc15790565b60021790565b60019150614ba1565b91909164ffffffffff8080941691160191821161060357565b64ffffffffff80614bff835164ffffffffff1690565b1615614d5757614c1a61131f604084015164ffffffffff1690565b614d25576080820180519092906001600160601b0390811614614d1d5781421692614c4d602083015164ffffffffff1690565b838116614c9357505080614c7c610100614c6f614c82945164ffffffffff1690565b92015164ffffffffff1690565b90614bd0565b161115614c8e57600190565b600290565b614caf90614c7c610120859795969496015164ffffffffff1690565b161115614d165751614cd8906001600160601b031660a08301516001600160601b031690614d5d565b614d105780614cfc60e0614cf360c0614d0295015160ff1690565b92015160ff1690565b90614d91565b614d0b57600390565b600490565b50600490565b5050600490565b505050600290565b60609091015164ffffffffff1690811615614d5157600160271b80911614614d4c57600690565b600790565b50600590565b50505f90565b6001600160601b0391906127109083168181029181159183041417156106035761270f92614d8c92169061342e565b101590565b60ff168015159182614da257505090565b60ff1614919050565b60015491614db891614dbc565b1490565b6020815160051b9101205f526020815160051b91012060205260405f2090565b5f80516020615f34833981519152604080515f81525f196020820152a1565b614e04906133fa565b90818103614e10575050565b6044925060405191630267877160e11b835260048301526024820152fd5b601f8111614e3a575050565b5f906008825260208220906020601f850160051c83019410614e77575b601f0160051c01915b828110614e6c57505050565b818155600101614e60565b9092508290614e57565b601f8111614e8d575050565b5f906009825260208220906020601f850160051c83019410614eca575b601f0160051c01915b828110614ebf57505050565b818155600101614eb3565b9092508290614eaa565b9081516001600160401b03811161067957614ef981614ef4600854610612565b614e2e565b602080601f8311600114614f3357508192935f92614f28575b50508160011b915f199060031b1c191617600855565b015190505f80614f12565b60085f52601f198316949091907ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3925f905b878210614f9c575050836001959610614f84575b505050811b01600855565b01515f1960f88460031b161c191690555f8080614f79565b80600185968294968601518155019501930190614f65565b9081516001600160401b03811161067957614fd981614fd4600954610612565b614e81565b602080601f831160011461501357508192935f92615008575b50508160011b915f199060031b1c191617600955565b015190505f80614ff2565b60095f52601f198316949091907f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af925f905b87821061507c575050836001959610615064575b505050811b01600955565b01515f1960f88460031b161c191690555f8080615059565b80600185968294968601518155019501930190615045565b600e805464ffffffffff60c01b191660c09290921b64ffffffffff60c01b16919091179055565b805182101561167a5760209160051b010190565b9260a08401926150e1845161ffff1690565b9361271061ffff95818782161161540e575060209182880192615109845164ffffffffff1690565b9764ffffffffff98610e108a821610615436575060608a019361512e855161ffff1690565b91821690811591821561542c575b505061540e5750604097888a0190615159825164ffffffffff1690565b9081168015908115615401575b506153e157508851635c9fcd8560e11b815260026004820152916001600160a01b039080846024817f000000000000000000000000000000000000000000000000000000000000000086165afa8015611073578c61526661530a9861523f8f6153669f61522761521b6153239f614aef615230946152e39f9d6080976152809f9d8f6152709f5f926153bc575b5061520761521592935195869283016118d3565b03601f1981018552846106c9565b16615a1c565b9a5164ffffffffff1690565b935161ffff1690565b9401516001600160601b031690565b9461525861524b611145565b64ffffffffff9099168952565b87019064ffffffffff169052565b61ffff16848d0152565b6001600160601b03166060830152565b64ffffffffff8151165f80516020615f148339815191529182549164ffffffffff60281b602083015160281b169061ffff60501b604084015160501b169260606001811b600160c01b0391015160601b169360018060c01b031916171717179055565b6153026152f289515160ff1690565b60ff1660ff196005541617600555565b5161ffff1690565b63ffff00005f549160101b169063ffff00001916175f55565b60c0850151615361906001600160a01b03165f8054640100000000600160c01b03191660209290921b640100000000600160c01b0316919091179055565b615457565b60ff825151116153a957505f5b81519081518110156153a45761539a6131766153956131508461539f966150bb565b610cbe565b6139f2565b615373565b505050565b5160016211dcdd60e31b03198152600490fd5b61521592506153da61520791833d851161106c5761105e81836106c9565b92506151f3565b8951636dfaf3cd60e01b815264ffffffffff919091166004820152602490fd5b62278d009150115f615166565b6040516323dd0d6d60e11b815261ffff919091166004820152602490fd5b1190505f8061513c565b604051636dfaf3cd60e01b815264ffffffffff919091166004820152602490fd5b90815181510361546f5761546a91614dbc565b600155565b6040516357cc2fc760e01b8152600490fd5b5f80516020615f148339815191525460601c6001600160601b0316905f826154aa575050505f90565b6040918152600f602052205490670de0b6b3a764000091828102928184041490151715610603576107419161342e565b335f52601060205260ff60405f20541615610e1857565b60170b6001600160bf1b03198114610603575f0390565b905f8092815b815181101561560957807f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a61554661560493856150bb565b519661555188615cfa565b976155fc61557a61557361556d845f52600f60205260405f2090565b54615bce565b8094613290565b998861558e845f52600f60205260405f2090565b556155cd604091845f80516020615ef48339815191528451806155b581905f602083019252565b0390a26105e86001600160601b03871660170b6154f1565b6155d683615d72565b5133815260208101929092526001600160601b0390921660408201529081906060820190565b0390a16139f2565b61550e565b5050600e5461562a915061056190849060601c6001600160601b03166147a9565b604080515f81525f1960208201525f80516020615f348339815191529190a1565b91905f9283845b8251811015615741579081615669849386956150bb565b5161567381615cfa565b956156d7575b6156ce92816155fc6156ba61557361556d7f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a965f52600f60205260405f2090565b988b61558e845f52600f60205260405f2090565b92909192615652565b336001600160a01b038716141580615720575b80615707575b156156795760405163ea8e4eb560e01b8152600490fd5b5061571b61096561095e336109598a610c8c565b6156f0565b503361573a612dd1610a87845f52600c60205260405f2090565b14156156ea565b50600e5490945061562a92506105619150849060601c6001600160601b03166147a9565b9061576f82611db7565b61577c60405191826106c9565b828152809261578d601f1991611db7565b0190602036910137565b919081101561167a5760051b0190565b356107418161087a565b6001600160a01b03918216815260806020808301829052908201859052909796959390926001600160fb1b03821161001b5760c0916005959493951b809160a08b013788018360a0820160a08b84030160408c0152520193925f905b83821061582f57505050505090606061051b9294019060018060a01b03169052565b909192939483806001928489356158458161087a565b168152019601949392019061580d565b5f838152600f60205260409020546001600160bf1b03811161598857615899906001600160c01b031660170b61589361588d826154f1565b84614619565b83614619565b6158b1612dd1610a87855f52600a60205260405f2090565b6001600160a01b038083169291830361093457831692831561180c57823314158061596f575b8061594e575b610934576158ed61591692610cd7565b80545f190190556158fd81610cd7565b805460010190556108ec855f52600a60205260405f2090565b61593b61592b845f52600c60205260405f2090565b80546001600160a01b0319169055565b5f80516020615f748339815191525f80a4565b50615967612dd1610a87875f52600c60205260405f2090565b3314156158dd565b5061598361096561095e3361095986610c8c565b6158d7565b6024906040519063e9a5989b60e01b82526004820152fd5b604051635c9fcd8560e11b81526004808201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611073575f916159fe575b50613221363661116d565b615a16915060203d811161106c5761105e81836106c9565b5f6159f3565b5f80516020615f9483398151915280546001600160a01b039283166001600160a01b03198216811790925560405163347d5e2560e21b602082019081525f9586959193615a7592849261127092909116602484016143a0565b51915af4615a8161411f565b90156141d45750565b8115615ae1576001600160a01b0316905f90819081908190855af190615aae61411f565b9115615ab8575050565b610c6060405192839263354db69760e01b8452600484015260406024840152604483019061070b565b5050565b60405163a9059cbb60e01b602082019081526001600160a01b03841660248301526044820185905292949193925f91829190615b248160648101611270565b5190826001600160a01b0388165af1615b3b61411f565b90615b73575b5050604051631702a98760e11b81526001600160a01b0392831660048201529290911660248301526044820152606490fd5b805115615b9d5780602080615b8d93518301019101613942565b615b975780615b41565b92505050565b50925050803b15615bab5750565b604051639fe23a3960e01b81526001600160a01b03919091166004820152602490fd5b6001600160601b0390818111615be2571690565b60249060405190636f55e21560e11b82526004820152fd5b8060170b5f81128015615c31575b615c1957506001600160601b031690565b602490604051906394e08f6160e01b82526004820152fd5b506001600160601b038113615c08565b303b1561001b5760405190633e4011b960e01b82528180615c685f958694600484016143a0565b0381305afa9081615ce3575b50615ccf57615c8161411f565b805181019160408284031261081c57602082015192615c9f84611a78565b6040830151916001600160401b03831161081c5750615cc5926020918201920101614339565b90615cf2576141d4565b634e487b7160e01b81526001600452602490fd5b615cec9061069a565b5f615c74565b602081519101f35b5f908152600a60205260409020546001600160a01b0316908115615d1a57565b604051634d5e5fb360e01b8152600490fd5b9081602091031261001b57516107418161042b565b6001600160a01b039182168152911660208201526040810191909152608060608201819052610741939101916141ee565b5f818152600a60205260408120546001600160a01b0316801561093457808252600b602052604082205f198154019055615db4835f52600a60205260405f2090565b80546001600160a01b03199081169091555f848152600c602052604090209081541690555f80516020615f748339815191528280a4565b90615df68183615e94565b813b15159182615e09575b505061157357565b604051630a85bd0160e11b8082523360048301525f6024830181905260448301949094526080606483015260848201849052935091602091839160a4918391906001600160a01b03165af1908115611073575f91615e76575b506001600160e01b03191614155f80615e01565b615e8e915060203d811161161b5761160d81836106c9565b5f615e62565b6001600160a01b038181169190821561180c57835f52600a60205260405f2054166109345780615ec6615edf92610cd7565b600181540190556108ec845f52600a60205260405f2090565b5f5f80516020615f748339815191528180a456fe84a9a38a0d320e93bcc5ebdabf23f355777c9b2251f0a2eceb54e0bddcf6f728eb054550c406db3b89dc7016369a66aff0ce40188133281942b92e6188c6b1f16bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661ceb054550c406db3b89dc7016369a66aff0ce40188133281942b92e6188c6b1f0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efeb054550c406db3b89dc7016369a66aff0ce40188133281942b92e6188c6b1efa264697066735822122045bd91fe3d3d061af7cc89368f87f03aa3210c97ebe816f8783a32e9e8294eef64736f6c63430008140033000000000000000000000000cede25df327bd1619fe25cda2292e14edac30717