[ { "inputs": [], "name": "ActiveClaimExists", "type": "error" }, { "inputs": [], "name": "AmountCannotBeZero", "type": "error" }, { "inputs": [], "name": "AmountOfSharesMustBeMoreThanMinimalAmount", "type": "error" }, { "inputs": [], "name": "BountyPercentageHigherThanMaxBounty", "type": "error" }, { "inputs": [], "name": "CannotSetToPerviousRewardController", "type": "error" }, { "inputs": [], "name": "CannotTransferToAnotherUserWithActiveWithdrawRequest", "type": "error" }, { "inputs": [], "name": "CannotTransferToSelf", "type": "error" }, { "inputs": [], "name": "ChallengePeriodEnded", "type": "error" }, { "inputs": [], "name": "ChallengedClaimCanOnlyBeApprovedByArbitratorUntilChallengeTimeoutPeriod", "type": "error" }, { "inputs": [], "name": "ClaimAlreadyChallenged", "type": "error" }, { "inputs": [], "name": "ClaimExpired", "type": "error" }, { "inputs": [], "name": "ClaimIdIsNotActive", "type": "error" }, { "inputs": [], "name": "CommitteeAlreadyCheckedIn", "type": "error" }, { "inputs": [], "name": "CommitteeBountyCannotBeMoreThanMax", "type": "error" }, { "inputs": [], "name": "CommitteeNotCheckedInYet", "type": "error" }, { "inputs": [], "name": "DelayPeriodForSettingMaxBountyHadNotPassed", "type": "error" }, { "inputs": [], "name": "DepositSlippageProtection", "type": "error" }, { "inputs": [], "name": "DuplicatedRewardController", "type": "error" }, { "inputs": [], "name": "MaxBountyCannotBeMoreThanMaxBountyLimit", "type": "error" }, { "inputs": [], "name": "MintSlippageProtection", "type": "error" }, { "inputs": [], "name": "NoActiveClaimExists", "type": "error" }, { "inputs": [], "name": "NoPendingMaxBounty", "type": "error" }, { "inputs": [], "name": "NotEnoughFeePaid", "type": "error" }, { "inputs": [], "name": "NotEnoughUserBalance", "type": "error" }, { "inputs": [], "name": "NotSafetyPeriod", "type": "error" }, { "inputs": [], "name": "OnlyArbitratorOrRegistryOwner", "type": "error" }, { "inputs": [], "name": "OnlyCallableByArbitratorOrAfterChallengeTimeOutPeriod", "type": "error" }, { "inputs": [], "name": "OnlyCallableIfChallenged", "type": "error" }, { "inputs": [], "name": "OnlyCommittee", "type": "error" }, { "inputs": [], "name": "OnlyFeeSetter", "type": "error" }, { "inputs": [], "name": "OnlyRegistryOwner", "type": "error" }, { "inputs": [], "name": "RedeemMoreThanMax", "type": "error" }, { "inputs": [], "name": "RedeemSlippageProtection", "type": "error" }, { "inputs": [], "name": "SafetyPeriod", "type": "error" }, { "inputs": [], "name": "SetSharesArraysMustHaveSameLength", "type": "error" }, { "inputs": [], "name": "SystemInEmergencyPause", "type": "error" }, { "inputs": [], "name": "TotalSplitPercentageShouldBeHundredPercent", "type": "error" }, { "inputs": [], "name": "UnchallengedClaimCanOnlyBeApprovedAfterChallengePeriod", "type": "error" }, { "inputs": [], "name": "VestingDurationSmallerThanPeriods", "type": "error" }, { "inputs": [], "name": "VestingDurationTooLong", "type": "error" }, { "inputs": [], "name": "VestingPeriodsCannotBeZero", "type": "error" }, { "inputs": [], "name": "WithdrawMustBeGreaterThanZero", "type": "error" }, { "inputs": [], "name": "WithdrawSlippageProtection", "type": "error" }, { "inputs": [], "name": "WithdrawalFeeTooBig", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "contract IRewardController", "name": "_newRewardController", "type": "address" } ], "name": "AddRewardController", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_claimId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_committee", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_bountyPercentage", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "_tokenLock", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "hacker", "type": "uint256" }, { "internalType": "uint256", "name": "hackerVested", "type": "uint256" }, { "internalType": "uint256", "name": "committee", "type": "uint256" }, { "internalType": "uint256", "name": "hackerHatVested", "type": "uint256" }, { "internalType": "uint256", "name": "governanceHat", "type": "uint256" } ], "indexed": false, "internalType": "struct IHATVault.ClaimBounty", "name": "_claimBounty", "type": "tuple" } ], "name": "ApproveClaim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_claimId", "type": "bytes32" } ], "name": "ChallengeClaim", "type": "event" }, { "anonymous": false, "inputs": [], "name": "CommitteeCheckedIn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_claimId", "type": "bytes32" } ], "name": "DismissClaim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_arbitrator", "type": "address" } ], "name": "SetArbitrator", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum IHATVault.ArbitratorCanChangeBounty", "name": "_arbitratorCanChangeBounty", "type": "uint8" } ], "name": "SetArbitratorCanChangeBounty", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint16", "name": "hackerVested", "type": "uint16" }, { "internalType": "uint16", "name": "hacker", "type": "uint16" }, { "internalType": "uint16", "name": "committee", "type": "uint16" } ], "indexed": false, "internalType": "struct IHATVault.BountySplit", "name": "_bountySplit", "type": "tuple" } ], "name": "SetBountySplit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_challengePeriod", "type": "uint256" } ], "name": "SetChallengePeriod", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_challengeTimeOutPeriod", "type": "uint256" } ], "name": "SetChallengeTimeOutPeriod", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_committee", "type": "address" } ], "name": "SetCommittee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "_depositPause", "type": "bool" } ], "name": "SetDepositPause", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_bountyGovernanceHAT", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_bountyHackerHATVested", "type": "uint256" } ], "name": "SetHATBountySplit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_maxBounty", "type": "uint256" } ], "name": "SetMaxBounty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_maxBounty", "type": "uint256" } ], "name": "SetPendingMaxBounty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "_descriptionHash", "type": "string" } ], "name": "SetVaultDescription", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_duration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_periods", "type": "uint256" } ], "name": "SetVestingParams", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_newFee", "type": "uint256" } ], "name": "SetWithdrawalFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_claimId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_committee", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_bountyPercentage", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "_descriptionHash", "type": "string" } ], "name": "SubmitClaim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_withdrawEnableTime", "type": "uint256" } ], "name": "WithdrawRequest", "type": "event" }, { "inputs": [], "name": "HUNDRED_PERCENT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "HUNDRED_PERCENT_SQRD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_BOUNTY_LIMIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_COMMITTEE_BOUNTY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_UINT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_WITHDRAWAL_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINIMAL_AMOUNT_OF_SHARES", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NULL_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NULL_UINT16", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NULL_UINT32", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "activeClaim", "outputs": [ { "internalType": "bytes32", "name": "claimId", "type": "bytes32" }, { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "uint16", "name": "bountyPercentage", "type": "uint16" }, { "internalType": "address", "name": "committee", "type": "address" }, { "internalType": "uint32", "name": "createdAt", "type": "uint32" }, { "internalType": "uint32", "name": "challengedAt", "type": "uint32" }, { "internalType": "uint256", "name": "bountyGovernanceHAT", "type": "uint256" }, { "internalType": "uint256", "name": "bountyHackerHATVested", "type": "uint256" }, { "internalType": "address", "name": "arbitrator", "type": "address" }, { "internalType": "uint32", "name": "challengePeriod", "type": "uint32" }, { "internalType": "uint32", "name": "challengeTimeOutPeriod", "type": "uint32" }, { "internalType": "bool", "name": "arbitratorCanChangeBounty", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IRewardController", "name": "_rewardController", "type": "address" } ], "name": "addRewardController", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_claimId", "type": "bytes32" }, { "internalType": "uint16", "name": "_bountyPercentage", "type": "uint16" } ], "name": "approveClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bountySplit", "outputs": [ { "internalType": "uint16", "name": "hackerVested", "type": "uint16" }, { "internalType": "uint16", "name": "hacker", "type": "uint16" }, { "internalType": "uint16", "name": "committee", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_claimId", "type": "bytes32" } ], "name": "challengeClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "committee", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "committeeCheckIn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "committeeCheckedIn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "minShares", "type": "uint256" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositPause", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_claimId", "type": "bytes32" } ], "name": "dismissClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "emergencyWithdraw", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getArbitrator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getArbitratorCanChangeBounty", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBountyGovernanceHAT", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBountyHackerHATVested", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getChallengePeriod", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getChallengeTimeOutPeriod", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "contract IRewardController[]", "name": "rewardControllers", "type": "address[]" }, { "internalType": "uint32", "name": "vestingDuration", "type": "uint32" }, { "internalType": "uint32", "name": "vestingPeriods", "type": "uint32" }, { "internalType": "uint16", "name": "maxBounty", "type": "uint16" }, { "components": [ { "internalType": "uint16", "name": "hackerVested", "type": "uint16" }, { "internalType": "uint16", "name": "hacker", "type": "uint16" }, { "internalType": "uint16", "name": "committee", "type": "uint16" } ], "internalType": "struct IHATVault.BountySplit", "name": "bountySplit", "type": "tuple" }, { "internalType": "contract IERC20", "name": "asset", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "committee", "type": "address" }, { "internalType": "bool", "name": "isPaused", "type": "bool" }, { "internalType": "string", "name": "descriptionHash", "type": "string" } ], "internalType": "struct IHATVault.VaultInitParams", "name": "_params", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxBounty", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "maxAssets", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "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": [], "name": "pendingMaxBounty", "outputs": [ { "internalType": "uint16", "name": "maxBounty", "type": "uint16" }, { "internalType": "uint32", "name": "timestamp", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeemAndFee", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdrawAndFee", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "minAssets", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "minAssets", "type": "uint256" } ], "name": "redeemAndClaim", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeemAndClaim", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract HATVaultsRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewardControllers", "outputs": [ { "internalType": "contract IRewardController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_arbitrator", "type": "address" } ], "name": "setArbitrator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum IHATVault.ArbitratorCanChangeBounty", "name": "_arbitratorCanChangeBounty", "type": "uint8" } ], "name": "setArbitratorCanChangeBounty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint16", "name": "hackerVested", "type": "uint16" }, { "internalType": "uint16", "name": "hacker", "type": "uint16" }, { "internalType": "uint16", "name": "committee", "type": "uint16" } ], "internalType": "struct IHATVault.BountySplit", "name": "_bountySplit", "type": "tuple" } ], "name": "setBountySplit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_challengePeriod", "type": "uint32" } ], "name": "setChallengePeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_challengeTimeOutPeriod", "type": "uint32" } ], "name": "setChallengeTimeOutPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_committee", "type": "address" } ], "name": "setCommittee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_depositPause", "type": "bool" } ], "name": "setDepositPause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_bountyGovernanceHAT", "type": "uint16" }, { "internalType": "uint16", "name": "_bountyHackerHATVested", "type": "uint16" } ], "name": "setHATBountySplit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setMaxBounty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_maxBounty", "type": "uint16" } ], "name": "setPendingMaxBounty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_descriptionHash", "type": "string" } ], "name": "setVaultDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_duration", "type": "uint32" }, { "internalType": "uint32", "name": "_periods", "type": "uint32" } ], "name": "setVestingParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setWithdrawalFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "uint16", "name": "_bountyPercentage", "type": "uint16" }, { "internalType": "string", "name": "_descriptionHash", "type": "string" } ], "name": "submitClaim", "outputs": [ { "internalType": "bytes32", "name": "claimId", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenLockFactory", "outputs": [ { "internalType": "contract ITokenLockFactory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "vestingDuration", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vestingPeriods", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "name": "withdrawAndClaim", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdrawAndClaim", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "withdrawEnableStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawRequest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawalFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
608060405234801561001057600080fd5b50615e6280620000216000396000f3fe608060405234801561001057600080fd5b50600436106105045760003560e01c80638da5cb5b11610299578063c9e5552911610167578063db3835bc116100d9578063ef8b30f711610092578063ef8b30f714610a56578063f10284c614610c5c578063f2fde38b14610c64578063f4d0fb9914610c77578063fb45153e14610c8a578063fdc149ef14610c9257600080fd5b8063db3835bc146106d9578063dd62ed3e14610c17578063de0ce17d14610c2a578063e448504114610c38578063e5b5019a14610c4b578063eb6ed33014610c5457600080fd5b8063d52d5ee71161012b578063d52d5ee714610ad1578063d864e74014610ae4578063d8e3496014610aff578063d905777e14610b07578063da6d1be914610b1a578063da80764a14610c0457600080fd5b8063c9e5552914610a69578063ce90930714610a91578063ce96cb7714610a9c578063d085529314610aaf578063d261cfb014610ac257600080fd5b8063a9059cbb1161020b578063bc157ac1116101c4578063bc157ac114610a14578063bddae40e14610a27578063be9efac914610a3a578063c1972f8b14610a4d578063c63d75b6146106e2578063c6e6f59214610a5657600080fd5b8063a9059cbb146109a2578063ac1e5025146109b5578063b0eefabe146109c8578063b3d7f6b9146109db578063b460af94146109ee578063ba08765214610a0157600080fd5b80639da86a291161025d5780639da86a29146109045780639f40a7b31461094e578063a318c1a414610961578063a397a63514610974578063a417e00c1461097c578063a457c2d71461098f57600080fd5b80638da5cb5b146108b057806394bf804d146108c157806395827fdd146108d457806395d89b41146108e75780639d38e5eb146108ef57600080fd5b8063402d267d116103d65780636ff1c9bc116103485780637b103999116103015780637b103999146108475780637faec71a1461085a578063836a10401461086d57806386d192e5146108805780638bc7e8c4146108935780638bfcda251461089d57600080fd5b80636ff1c9bc146107d557806370a08231146107e8578063715018a614610811578063730e34cd146108195780637864b77d1461082c5780637901808b1461083457600080fd5b8063551bd4171161039a578063551bd41714610745578063658fc2a6146107605780636da9a3ec1461079c5780636e22558d146107a45780636e553f65146107b95780636ed93dd0146107cc57600080fd5b8063402d267d146106e2578063436b6c83146106f55780634711db1f1461070857806348723633146107115780634cdad5061461073257600080fd5b806318160ddd1161047a578063313ce56711610433578063313ce5671461067b57806335704b0f1461069a578063380e687a146106ad57806338d52e0f146106b557806339509351146106c65780633db1807f146106d957600080fd5b806318160ddd1461061457806318a34ea61461061c57806323b872dd1461062f5780632764c95b146106425780632d672fa0146106555780632ec6f2681461066857600080fd5b8063095ea7b3116104cc578063095ea7b3146105815780630a28a477146105a45780630a6bbcd8146105b75780630fceb746146105ca57806311c2aae3146105ea5780631514617e146105fd57600080fd5b8063014cac971461050957806301e1d1141461052e57806304165db11461054457806306fdde031461055957806307a2d13a1461056e575b600080fd5b61051463ffffffff81565b60405163ffffffff90911681526020015b60405180910390f35b610536610caa565b604051908152602001610525565b6105576105523660046153a4565b610d1c565b005b610561610ef8565b60405161052591906153e1565b61053661057c3660046153a4565b610f8a565b61059461058f366004615429565b610f9d565b6040519015158152602001610525565b6105366105b23660046153a4565b610fb5565b6105576105c5366004615465565b610fc7565b6105d2611082565b6040516001600160a01b039091168152602001610525565b60fc546105d2906001600160a01b031681565b610105546105149062010000900463ffffffff1681565b603554610536565b61055761062a366004615494565b611129565b61059461063d3660046154cd565b61113f565b61055761065036600461550e565b611165565b610536610663366004615574565b6112bd565b6105366106763660046155d9565b611740565b606554600160a01b900460ff1660405160ff9091168152602001610525565b6105576106a8366004615621565b6117f4565b610557611966565b6065546001600160a01b03166105d2565b6105946106d4366004615429565b611a42565b6105366103e881565b6105366106f036600461564f565b611a64565b61055761070336600461566c565b611a89565b61053661232881565b61053661071f36600461564f565b6101096020526000908152604090205481565b6105366107403660046153a4565b611b71565b61074d611b7c565b60405161ffff9091168152602001610525565b6101085461077d9061ffff81169062010000900463ffffffff1682565b6040805161ffff909316835263ffffffff909116602083015201610525565b610514611c0c565b6101055461059490600160f81b900460ff1681565b6105366107c736600461568d565b611ca5565b61053661271081565b6105366107e336600461564f565b611cb1565b6105366107f636600461564f565b6001600160a01b031660009081526033602052604090205490565b610557611d09565b61055761082736600461550e565b611d1b565b610514611e72565b6105366108423660046156b2565b611ee7565b60fb546105d2906001600160a01b031681565b6105576108683660046156f4565b611f99565b61053661087b36600461570c565b612132565b61055761088e366004615741565b612169565b6105366101065481565b6105576108ab36600461575e565b6121c1565b6097546001600160a01b03166105d2565b6105366108cf36600461568d565b6126e3565b6105366108e23660046155d9565b61275b565b610561612806565b6101055461059490600160f01b900460ff1681565b610104546109299061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610525565b61053661095c3660046155d9565b612815565b61053661096f3660046155d9565b61284f565b610557612880565b61055761098a366004615783565b6128f1565b61059461099d366004615429565b6129b6565b6105946109b0366004615429565b612a3c565b6105576109c33660046153a4565b612a4a565b6105576109d636600461564f565b612b36565b6105366109e93660046153a4565b612c23565b6105366109fc3660046156b2565b612c30565b610536610a0f3660046156b2565b612c56565b610536610a2236600461570c565b612c7c565b610557610a3536600461564f565b612cac565b610557610a483660046157c5565b612d98565b61074d61ffff81565b610536610a643660046153a4565b613161565b610a7c610a773660046153a4565b61316e565b60408051928352602083019190915201610525565b6105366305f5e10081565b610536610aaa36600461564f565b6131ad565b610536610abd3660046156b2565b613202565b6101055461074d9061ffff1681565b610557610adf3660046153a4565b6132ac565b610105546105d290600160501b90046001600160a01b031681565b610594613422565b610536610b1536600461564f565b6134d7565b60fd5460fe5460ff8054610100546101015461010254610b8896956001600160a01b038082169661ffff600160a01b9384900416968083169663ffffffff858304811697600160c01b9384900482169792969095831694908304821693830490911691600160e01b9004168c565b604080519c8d526001600160a01b039b8c1660208e015261ffff909a16998c019990995296891660608b015263ffffffff95861660808b015293851660a08a015260c089019290925260e08801529490941661010086015292831661012085015291909116610140830152151561016082015261018001610525565b6105d2610c123660046153a4565b613528565b610536610c25366004615801565b613553565b6105d26001600160a01b0381565b610557610c4636600461564f565b61357e565b61053660001981565b61053660c881565b61055761371c565b610557610c7236600461564f565b61389d565b610a7c610c853660046153a4565b613916565b61074d613948565b6101055461051490600160301b900463ffffffff1681565b6065546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d17919061582f565b905090565b60ff548190600160a01b900463ffffffff16600003610d4e57604051631a1437b360e11b815260040160405180910390fd5b60fd548114610d705760405163068a522b60e31b815260040160405180910390fd5b610102546001600160a01b03163314801590610e14575060fb60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfe9190615848565b6001600160a01b0316336001600160a01b031614155b15610e325760405163311f43dd60e11b815260040160405180910390fd5b6101025460ff54610e589163ffffffff600160a01b91829004811692919091041661587b565b63ffffffff164210610e7d57604051631e188ee160e31b815260040160405180910390fd5b60ff54600160c01b900463ffffffff1615610eab5760405163085c345b60e41b815260040160405180910390fd5b60ff805463ffffffff60c01b1916600160c01b4263ffffffff160217905560405182907f18cee768ef1c2d81fe153ce96ec56a038f24630c2a125dc04aa06e7765457b5690600090a25050565b606060368054610f0790615898565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3390615898565b8015610f805780601f10610f5557610100808354040283529160200191610f80565b820191906000526020600020905b815481529060010190602001808311610f6357829003601f168201915b5050505050905090565b6000610f978260006139ba565b92915050565b600033610fab8185856139ed565b5060019392505050565b6000610fc08261316e565b5092915050565b610fcf613b11565b60ff54600160a01b900463ffffffff1615610ffd5760405163c50c0f9960e01b815260040160405180910390fd5b6123288161ffff16111561102457604051633dfa47cb60e01b815260040160405180910390fd5b610108805461ffff831665ffffffffffff199091168117620100004263ffffffff1602179091556040519081527f9d9d28b01b74ce9cf83d0252bb9cee9fc2ac3a651a277b6a254b7a824342d0c4906020015b60405180910390a150565b61010a546000906001600160a01b0364010000000090910481169081146110a857919050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663db0f267b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190615848565b91505090565b5090565b611131613b11565b61113b8282613b6b565b5050565b60003361114d858285613c61565b611158858585613cdb565b60019150505b9392505050565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156111ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d29190615848565b6001600160a01b0316146111f95760405163d61d1ac760e01b815260040160405180910390fd5b63ffffffff818116146112685760fb5460405163165db9a960e01b815263ffffffff831660048201526001600160a01b039091169063165db9a99060240160006040518083038186803b15801561124f57600080fd5b505afa158015611263573d6000803e3d6000fd5b505050505b61010a805463ffffffff60c01b1916600160c01b63ffffffff8416908102919091179091556040519081527f5024621f2175cab0e0a5ebc174679f1b57839cff38355e8b20ad16ef4ddb656b90602001611077565b61010554600090600160501b90046001600160a01b031633146112f25760405162d02c1d60e11b815260040160405180910390fd5b60ff54600160a01b900463ffffffff16156113205760405163c50c0f9960e01b815260040160405180910390fd5b60fb60009054906101000a90046001600160a01b03166001600160a01b031663290d10c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139791906158cc565b156113b557604051635ed0818960e01b815260040160405180910390fd5b60fb54604080516302ea7f2560e41b815290516001600160a01b03909216916000918391632ea7f250916004808201926020929091908290030181865afa158015611404573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611428919061582f565b905080826001600160a01b031663eeb338876040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d919061582f565b61149790836158e9565b6114a19042615912565b10156114c05760405163b71c745b60e01b815260040160405180910390fd5b6101055461ffff90811690871611156114ec5760405163c83039db60e01b815260040160405180910390fd5b30610107600081546114fd90615926565b918290555060405160609290921b6bffffffffffffffffffffffff191660208301526034820152605401604051602081830303815290604052805190602001209250604051806101800160405280848152602001886001600160a01b031681526020018761ffff168152602001336001600160a01b031681526020014263ffffffff168152602001600063ffffffff16815260200161159a611b7c565b61ffff1681526020016115ab613948565b61ffff1681526020016115bc611082565b6001600160a01b031681526020016115d2611e72565b63ffffffff1681526020016115e5611c0c565b63ffffffff1681526020016115f8613422565b15159052805160fd55602081015160fe80546040808501516001600160a01b039485166001600160b01b031990931692909217600160a01b61ffff909316830217909255606084015160ff8054608087015160a08801519387166001600160c01b03199283161763ffffffff91821686021763ffffffff60c01b1916600160c01b94821685021790925560c087015161010090815560e08801516101015587015161010280546101208a01516101408b0151610160909b0151938a1691909416179284169095029190911764ffffffffff60c01b19169690911690910260ff60e01b191694909417600160e01b9415159490940293909317909255905190881690339085907f74bacf5e8961b0e45e6d22a66fcc3de56c31e095386e2fd8dc43fde5c94bf7909061172e908b908b908b90615968565b60405180910390a45050949350505050565b600061174e85858585612815565b905060005b610103548110156117eb57610103818154811061177257611772615986565b6000918252602090912001546040516324a9e3c160e11b81523060048201526001600160a01b03868116602483015290911690634953c78290604401600060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b50505050806001019050611753565b50949350505050565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561183d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118619190615848565b6001600160a01b0316146118885760405163d61d1ac760e01b815260040160405180910390fd5b61010a805461ffff838116620100000263ffffffff199092169085161717905560fb546001600160a01b031663fb9a87406118c1611b7c565b6118c9613948565b6040516001600160e01b031960e085901b16815261ffff92831660048201529116602482015260440160006040518083038186803b15801561190a57600080fd5b505afa15801561191e573d6000803e3d6000fd5b50506040805161ffff8087168252851660208201527fb76a01d39e1cd92db69e1fba6bbfdb5d5eaf198958bee0826162c3283ff7884893500190505b60405180910390a15050565b61196e613e97565b60fb5460408051631dea4ae760e11b815290516000926001600160a01b031691633bd495ce9160048083019260209291908290030181865afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc919061582f565b6119e690426158e9565b33600081815261010960209081526040918290208490559051838152929350909182917f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac910160405180910390a25050611a40600160c955565b565b600033610fab818585611a558383613553565b611a5f91906158e9565b6139ed565b61010554600090600160f81b900460ff16611a8157600019610f97565b600092915050565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af69190615848565b6001600160a01b031614611b1d5760405163d61d1ac760e01b815260040160405180910390fd5b61010b805482919060ff19166001836002811115611b3d57611b3d61599c565b02179055507fd7cb2841948eb09bee01cc782c1897111c723fd1c27026b478a73e6236f5601b8160405161107791906159d0565b6000610fc082613916565b61010a5460009061ffff908116908114611b9557919050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663544920786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f91906159e3565b61010a5460009063ffffffff600160e01b9091048116908114611c2e57919050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663f51a90e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c81573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190615a00565b600061115e8383613ef7565b61010b805461ff001916610100179055600080611ccb3390565b9050611cf6611cef826001600160a01b031660009081526033602052604090205490565b8483612c56565b61010b805461ff00191690559392505050565b611d11613b11565b611a406000613f6a565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d889190615848565b6001600160a01b031614611daf5760405163d61d1ac760e01b815260040160405180910390fd5b63ffffffff81811614611e1e5760fb5460405163891ce46760e01b815263ffffffff831660048201526001600160a01b039091169063891ce4679060240160006040518083038186803b158015611e0557600080fd5b505afa158015611e19573d6000803e3d6000fd5b505050505b61010a80546001600160e01b0316600160e01b63ffffffff8416908102919091179091556040519081527f6e25891c35494d6a8dfde4ac9fd75a3c140431624a4af477a084736b09ed7afe90602001611077565b61010a5460009063ffffffff600160c01b9091048116908114611e9457919050565b60fb60009054906101000a90046001600160a01b03166001600160a01b03166311566d746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c81573d6000803e3d6000fd5b6000611ef4848484612c56565b905060005b61010354811015611f91576101038181548110611f1857611f18615986565b6000918252602090912001546040516324a9e3c160e11b81523060048201526001600160a01b03858116602483015290911690634953c78290604401600060405180830381600087803b158015611f6e57600080fd5b505af1158015611f82573d6000803e3d6000fd5b50505050806001019050611ef9565b509392505050565b611fa1613b11565b60ff54600160a01b900463ffffffff1615611fcf5760405163c50c0f9960e01b815260040160405180910390fd5b60fb54604080516302ea7f2560e41b815290516000926001600160a01b031691632ea7f2509160048083019260209291908290030181865afa158015612019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203d919061582f565b90508060fb60009054906101000a90046001600160a01b03166001600160a01b031663eeb338876040518163ffffffff1660e01b8152600401602060405180830381865afa158015612093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b7919061582f565b6120c190836158e9565b6120cb9042615912565b106120e957604051635a1c393760e11b815260040160405180910390fd5b6120f282613fbc565b816101046121008282615a1d565b9050507fa786f776fdae97acbbd2724bdf252aeb3fafdec6d2e98e41a22f0b480744eaf38260405161195a9190615a96565b60008061213f85856126e3565b905082811115612161576040516236770d60e11b815260040160405180910390fd5b949350505050565b612171613b11565b6101058054821515600160f81b026001600160f81b039091161790556040517f0653e29fcca730c396a6099e174293ae6bd435437a5de4f8c461f7b5dc9e58f29061107790831515815260200190565b6121c9613e97565b60ff548290600160a01b900463ffffffff166000036121fb57604051631a1437b360e11b815260040160405180910390fd5b60fd54811461221d5760405163068a522b60e31b815260040160405180910390fd5b604080516101808101825260fd8054825260fe80546001600160a01b038082166020860152600160a01b80830461ffff169686019690965260ff8054808316606088015287810463ffffffff90811660808901819052600160c01b808404831660a08b0152610100805460c08c0152610101805460e08d01526101028054988916838e01529c880485166101208d018190529288049094166101408c01819052600160e01b8804871615156101608d015260009a8b90556001600160b01b03199098169098556001600160e01b031990931690935594869055949093556001600160e81b031916909455919291612314919061587b565b61231e919061587b565b63ffffffff164210612343576040516341524ecf60e11b815260040160405180910390fd5b60a081015163ffffffff16156123db578061010001516001600160a01b0316336001600160a01b031614158061239357508061014001518160a00151612389919061587b565b63ffffffff164210155b156123b1576040516315421c8960e01b815260040160405180910390fd5b80610160015180156123c6575061ffff831615155b156123d65761ffff831660408201525b612415565b80610120015181608001516123f0919061587b565b63ffffffff16421161241557604051631caf6c9560e21b815260040160405180910390fd5b600080612433836040015161ffff168460c001518560e0015161405b565b905060006124496065546001600160a01b031690565b60208301519091501561253f5760fc5460208581015190840151610105546001600160a01b039093169263e95cd05192859260009242906124969062010000900463ffffffff16826158e9565b6101055460405160e089901b6001600160e01b03191681526124d897969594939291600160301b900463ffffffff169060009081906002908290600401615ae3565b6020604051808303816000875af11580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251b9190615848565b925061253f838360200151836001600160a01b03166141c19092919063ffffffff16565b6020840151825161255a916001600160a01b038416916141c1565b60608401516040830151612578916001600160a01b038416916141c1565b60fb54608083015160608401516001600160a01b03909216916125b29183916125a191906158e9565b6001600160a01b0385169190614229565b602085015160608401516080850151604051635dd1141560e01b81526001600160a01b03868116600483015293841660248201526044810192909252606482015290821690635dd1141590608401600060405180830381600087803b15801561261a57600080fd5b505af115801561262e573d6000803e3d6000fd5b50612648925050506001600160a01b038316826000614229565b602080860151604080880151815161ffff90911681526001600160a01b038881168286015287518284015293870151606080830191909152918701516080808301919091529187015160a08201529086015160c082015291169033908a907f4b22b0551b79e42d81d17d0700b5c56d1795c55d10922476f69ada51e794a5e99060e00160405180910390a450505050505061113b600160c955565b60006126ee82611a64565b8311156127425760405162461bcd60e51b815260206004820152601b60248201527f455243343632363a206d696e74206d6f7265207468616e206d6178000000000060448201526064015b60405180910390fd5b600061274d84612c23565b905061115e3384838761433e565b60006127698585858561284f565b905060005b610103548110156117eb57610103818154811061278d5761278d615986565b6000918252602090912001546040516324a9e3c160e11b81523060048201526001600160a01b03868116602483015290911690634953c78290604401600060405180830381600087803b1580156127e357600080fd5b505af11580156127f7573d6000803e3d6000fd5b5050505080600101905061276e565b606060378054610f0790615898565b600080612823868686612c56565b90508281101561284657604051632e1a5a5360e21b815260040160405180910390fd5b95945050505050565b60008061285d868686612c30565b9050828111156128465760405163ad5f70f360e01b815260040160405180910390fd5b61010554600160501b90046001600160a01b031633146128b25760405162d02c1d60e11b815260040160405180910390fd5b610105805460ff60f01b1916600160f01b1790556040517fda94dc4b788057a35879928f9ba97261fdb3a4371ba4aa7a1e7e34fae93b492190600090a1565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e9190615848565b6001600160a01b0316146129855760405163d61d1ac760e01b815260040160405180910390fd5b7ff4c65ddb6aed78463fc27d79ccd85368bb0ecd80bd763b891a8b64ef41ac750b828260405161195a929190615b5d565b600033816129c48286613553565b905083811015612a245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401612739565b612a3182868684036139ed565b506001949350505050565b600033610fab818585613cdb565b60fb54604080516321f3cfbd60e21b8152905133926001600160a01b0316916387cf3ef49160048083019260209291908290030181865afa158015612a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab79190615848565b6001600160a01b031614612ade57604051637155bb1960e01b815260040160405180910390fd5b60c8811115612b00576040516369b91bc760e01b815260040160405180910390fd5b6101068190556040518181527f3aa4413905e8f015896ec5880bdde24088ccb19b578f9fcf6800354d5320d4af90602001611077565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba39190615848565b6001600160a01b031614612bca5760405163d61d1ac760e01b815260040160405180910390fd5b61010a8054640100000000600160c01b0319166401000000006001600160a01b038416908102919091179091556040517f53910d8ecf7b5b828433963dea4325f13b37cbdbfd212f83cb73ec179a60e12190600090a250565b6000610f978260016139ba565b6000806000612c3e8661316e565b915091506117eb612c4c3390565b86868986866143e0565b6000806000612c6486613916565b915091506117eb612c723390565b8686858a866143e0565b600080612c898585611ca5565b90508281101561216157604051633a81aa0160e21b815260040160405180910390fd5b6097546001600160a01b031633148015612cd9575061010554600160501b90046001600160a01b03163314155b15612d0f5761010554600160f01b900460ff1615612d0a57604051633b343aa560e01b815260040160405180910390fd5b612d41565b61010554600160501b90046001600160a01b03163314612d415760405162d02c1d60e11b815260040160405180910390fd5b6101058054600160501b600160f01b031916600160501b6001600160a01b038416908102919091179091556040517f22a3400c609e52ea781540daed872a0ff7b79a428f634be082c24c2faf06846390600090a250565b600054610100900460ff1615808015612db85750600054600160ff909116105b80612dd25750303b158015612dd2575060005460ff166001145b612e355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401612739565b6000805460ff191660011790558015612e58576000805461ff0019166101001790555b612328612e6b60c0840160a08501615465565b61ffff161115612e8e57604051633dfa47cb60e01b815260040160405180910390fd5b612e9a8260c001613fbc565b612efa612ea78380615b71565b604051602001612eb8929190615bb8565b60408051601f19818403018152919052612ed56020850185615b71565b604051602001612ee6929190615bdf565b60405160208183030381529060405261455a565b612f14612f0f6101408401610120850161564f565b61458b565b612f216040830183615bfe565b612f2e9161010391615335565b50612f57612f42608084016060850161550e565b612f5260a085016080860161550e565b613b6b565b33612f6860c0840160a08501615465565b610105805461ffff191661ffff9290921691909117905560c08301610104612f908282615a1d565b50612fa590506101808401610160850161564f565b61010580546001600160a01b0392909216600160501b02600160501b600160f01b0319909216919091179055612fe36101a084016101808501615741565b61010580546001600160f81b0316600160f81b9215159290920291909117905560fb80546001600160a01b0319166001600160a01b0383161790556130266145bb565b61304061303b6101608501610140860161564f565b613f6a565b806001600160a01b03166311c2aae36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a29190615848565b60fc80546001600160a01b03929092166001600160a01b031990921691909117905561010b805460ff1916600217905560001961010a557ff4c65ddb6aed78463fc27d79ccd85368bb0ecd80bd763b891a8b64ef41ac750b6131086101a0850185615b71565b604051613116929190615b5d565b60405180910390a150801561113b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161195a565b6000610f978260006145ea565b61010654600090819061318f8161318781612710615c48565b86919061461c565b91506131a561319e83866158e9565b60016145ea565b925050915091565b60ff54600090600160a01b900463ffffffff161515806131d357506131d1826146cb565b155b156131e057506000919050565b610f97610740836001600160a01b031660009081526033602052604090205490565b600061320f848484612c30565b905060005b61010354811015611f9157610103818154811061323357613233615986565b6000918252602090912001546040516324a9e3c160e11b81523060048201526001600160a01b03858116602483015290911690634953c78290604401600060405180830381600087803b15801561328957600080fd5b505af115801561329d573d6000803e3d6000fd5b50505050806001019050613214565b60ff548190600160a01b900463ffffffff166000036132de57604051631a1437b360e11b815260040160405180910390fd5b60fd5481146133005760405163068a522b60e31b815260040160405180910390fd5b6101025460ff5463ffffffff600160c01b808404821693908304821692849261333692600160a01b90819004821692041661587b565b63ffffffff1661334691906158e9565b42116133b0578060000361336d576040516332c7ab4360e01b815260040160405180910390fd5b61337782826158e9565b42111580156133925750610102546001600160a01b03163314155b156133b057604051635f2d8d8360e01b815260040160405180910390fd5b600060fd81905560fe80546001600160b01b031916905560ff80546001600160e01b031916905561010081905561010181905561010280546001600160e81b031916905560405185917f940c35077c5ad047271f088696e713b44c4776cc8fa7665b0e81a421c91ec12991a250505050565b61010b5460009060ff1660028160028111156134405761344061599c565b146134605760018160028111156134595761345961599c565b1491505090565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663116dbc936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f91906158cc565b60ff54600090600160a01b900463ffffffff161515806134fd57506134fb826146cb565b155b1561350a57506000919050565b6001600160a01b038216600090815260336020526040902054610f97565b610103818154811061353957600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60fb5460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156135c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135eb9190615848565b6001600160a01b0316146136125760405163d61d1ac760e01b815260040160405180910390fd5b60ff54600160a01b900463ffffffff16156136405760405163c50c0f9960e01b815260040160405180910390fd5b60005b610103548110156136a257610103818154811061366257613662615986565b6000918252602090912001546001600160a01b039081169083160361369a576040516314ebaef760e31b815260040160405180910390fd5b600101613643565b50610103805460018101825560009182527f02c297ab74aad0aede3a1895c857b1f2c71e6a203feb727bec95ac752998cb780180546001600160a01b0319166001600160a01b03841690811790915560405190917fcd6999167b4b18e50d7046fa427cd31c7106b4e945bcaa6f9efb4ecd3b7d122a91a250565b613724613b11565b60ff54600160a01b900463ffffffff16156137525760405163c50c0f9960e01b815260040160405180910390fd5b604080518082019091526101085461ffff8116825262010000900463ffffffff166020820181905260000361379a57604051630dc8342d60e31b815260040160405180910390fd5b60fb60009054906101000a90046001600160a01b03166001600160a01b03166377c9cd8c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613811919061582f565b60208201516138269063ffffffff1642615c48565b101561384557604051632f99d23360e11b815260040160405180910390fd5b6101088054610105805461ffff191661ffff831690811790915565ffffffffffff199091169091556040518181527ff3d8fc64f1ce0c8c9c7d0514708b8596de220e81860a8ceaf7c10737dcc3135a9060200161195a565b6138a5613b11565b6001600160a01b03811661390a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612739565b61391381613f6a565b50565b60008060006139268460006139ba565b6101065490915061393b90829061271061461c565b9150818103925050915091565b61010a5460009061ffff62010000909104811690811461396757919050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663120c1a7e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be8573d6000803e3d6000fd5b6000806139c660355490565b905080156139e7576139e26139d9610caa565b85908386614862565b612161565b83612161565b6001600160a01b038316613a4f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401612739565b6001600160a01b038216613ab05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401612739565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6097546001600160a01b03163314611a405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612739565b629e34008263ffffffff161115613b95576040516335e1b26b60e21b815260040160405180910390fd5b8063ffffffff16600003613bbc57604051631f55114360e01b815260040160405180910390fd5b8063ffffffff168263ffffffff161015613be957604051635c15b0b960e01b815260040160405180910390fd5b610105805469ffffffffffffffff000019166201000063ffffffff85811691820269ffffffff000000000000191692909217600160301b928516928302179092556040805192835260208301919091527f509e2b99f648e75d75a54861aa7c1d4c011b4f62cb29c9f065712732e91f965c910161195a565b6000613c6d8484613553565b90506000198114613cd55781811015613cc85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401612739565b613cd584848484036139ed565b50505050565b6001600160a01b038316613d3f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401612739565b6001600160a01b038216613da15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401612739565b613dac8383836148bd565b6001600160a01b03831660009081526033602052604090205481811015613e245760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401612739565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e849086815260200190565b60405180910390a3613cd5848484614c02565b600260c95403613ee95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401612739565b600260c955565b600160c955565b6000613f0282611a64565b831115613f515760405162461bcd60e51b815260206004820152601e60248201527f455243343632363a206465706f736974206d6f7265207468616e206d617800006044820152606401612739565b6000613f5c84613161565b905061115e3384868461433e565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6103e8613fcf6060830160408401615465565b61ffff161115613ff55760405160016235400b60e01b0319815260040160405180910390fd5b6127106140086060830160408401615465565b6140186040840160208501615465565b6140256020850185615465565b61402f9190615c5b565b6140399190615c5b565b61ffff16146139135760405163c7a89fed60e01b815260040160405180910390fd5b61408d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000614097610caa565b9050806000036140a7575061115e565b6101055461ffff168511156140cf5760405163c83039db60e01b815260040160405180910390fd5b60006140db8683615c76565b905060006140ee82876305f5e10061461c565b9050600061410183876305f5e10061461c565b905061271061411082846158e9565b61411a9190615c76565b6141249084615c48565b60808601839052606086018290526101045490935060009061415090859061ffff166305f5e10061461c565b6101045490915060009061417490869062010000900461ffff166305f5e10061461c565b905061271061418382846158e9565b61418d9190615c76565b6141979086615c48565b6020880183905281885294506141af61271086615c95565b60408801525050505050509392505050565b6040516001600160a01b03831660248201526044810182905261422490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614c41565b505050565b8015806142a35750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561427d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a1919061582f565b155b61430e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401612739565b6040516001600160a01b03831660248201526044810182905261422490849063095ea7b360e01b906064016141ed565b614346613e97565b61010554600160f01b900460ff16614371576040516364197ab960e11b815260040160405180910390fd5b836001600160a01b0316836001600160a01b03161480156143aa57506001600160a01b0383166000908152610109602052604090205415155b156143ca576001600160a01b038316600090815261010960205260408120555b6143d684848484614d13565b613cd5600160c955565b6143e8613e97565b8260000361440957604051630fbf08cb60e21b815260040160405180910390fd5b836001600160a01b0316866001600160a01b03161461442d5761442d848784613c61565b6144378483614d91565b600061444b6065546001600160a01b031690565b905081156144d35760fb5460408051638da5cb5b60e01b815290516144d3926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561449e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144c29190615848565b6001600160a01b03831690846141c1565b6144e76001600160a01b03821687866141c1565b846001600160a01b0316866001600160a01b0316886001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db878760405161453f929190918252602082015260400190565b60405180910390a450614552600160c955565b505050505050565b600054610100900460ff166145815760405162461bcd60e51b815260040161273990615ca9565b61113b8282614ed8565b600054610100900460ff166145b25760405162461bcd60e51b815260040161273990615ca9565b61391381614f18565b600054610100900460ff166145e25760405162461bcd60e51b815260040161273990615ca9565b611a40614f9d565b6000806145f660355490565b9050831580614603575080155b6139e7576139e281614613610caa565b86919086614862565b60008080600019858709858702925082811083820303915050806000036146565783828161464c5761464c6158fc565b049250505061115e565b80841161466257600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60fb54604080516302ea7f2560e41b815290516000926001600160a01b03169183918391632ea7f2509160048083019260209291908290030181865afa158015614719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473d919061582f565b905080826001600160a01b031663eeb338876040518163ffffffff1660e01b8152600401602060405180830381865afa15801561477e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a2919061582f565b6147ac90836158e9565b6147b69042615912565b106147c5575060009392505050565b6001600160a01b038416600090815261010960205260409020544281118015906128465750826001600160a01b031663f4bde0976040518163ffffffff1660e01b8152600401602060405180830381865afa158015614828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061484c919061582f565b61485690826158e9565b42111595945050505050565b60008061487086868661461c565b905060018360028111156148865761488661599c565b1480156148a357506000848061489e5761489e6158fc565b868809115b15612846576148b36001826158e9565b9695505050505050565b806000036148de5760405163d11b25af60e01b815260040160405180910390fd5b816001600160a01b0316836001600160a01b03160361491057604051636d6c4ee560e11b815260040160405180910390fd5b6001600160a01b03821615614afe5760fb5460408051630a43443160e21b815290516001600160a01b0390921691829163290d10c49160048083019260209291908290030181865afa15801561496a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061498e91906158cc565b156149ac57604051635ed0818960e01b815260040160405180910390fd5b6001600160a01b038316600090815261010960205260409020548015614a5757816001600160a01b031663f4bde0976040518163ffffffff1660e01b8152600401602060405180830381865afa158015614a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a2e919061582f565b614a3890826158e9565b4211614a575760405163144229c360e01b815260040160405180910390fd5b60005b61010354811015614afa576101038181548110614a7957614a79615986565b6000918252602090912001546040516344d18cd960e01b81526001600160a01b0387811660048301526024820187905260016044830152909116906344d18cd990606401600060405180830381600087803b158015614ad757600080fd5b505af1158015614aeb573d6000803e3d6000fd5b50505050806001019050614a5a565b5050505b6001600160a01b0383161561422457614b16836134d7565b811115614b365760405163232b212d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152610109602052604081205561010b54610100900460ff166142245760005b61010354811015613cd5576101038181548110614b8257614b82615986565b60009182526020822001546040516344d18cd960e01b81526001600160a01b0387811660048301526024820186905260448201939093529116906344d18cd990606401600060405180830381600087803b158015614bdf57600080fd5b505af1158015614bf3573d6000803e3d6000fd5b50505050806001019050614b63565b6000614c0d60355490565b118015614c2357506103e8614c2160355490565b105b15614224576040516302dab21760e21b815260040160405180910390fd5b6000614c96826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614fc49092919063ffffffff16565b8051909150156142245780806020019051810190614cb491906158cc565b6142245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401612739565b606554614d2b906001600160a01b0316853085614fd3565b614d35838261500b565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051614d83929190918252602082015260400190565b60405180910390a350505050565b6001600160a01b038216614df15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401612739565b614dfd826000836148bd565b6001600160a01b03821660009081526033602052604090205481811015614e715760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401612739565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361422483600084614c02565b600054610100900460ff16614eff5760405162461bcd60e51b815260040161273990615ca9565b6036614f0b8382615d50565b5060376142248282615d50565b600054610100900460ff16614f3f5760405162461bcd60e51b815260040161273990615ca9565b600080614f4b836150e0565b9150915081614f5b576012614f5d565b805b606580546001600160a01b039095166001600160a01b031960ff93909316600160a01b02929092166001600160a81b031990951694909417179092555050565b600054610100900460ff16613ef05760405162461bcd60e51b815260040161273990615ca9565b606061216184846000856151bc565b6040516001600160a01b0380851660248301528316604482015260648101829052613cd59085906323b872dd60e01b906084016141ed565b6001600160a01b0382166150615760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401612739565b61506d600083836148bd565b806035600082825461507f91906158e9565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361113b60008383614c02565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161512791615e10565b600060405180830381855afa9150503d8060008114615162576040519150601f19603f3d011682016040523d82523d6000602084013e615167565b606091505b509150915081801561517b57506020815110155b156151af57600081806020019051810190615196919061582f565b905060ff81116151ad576001969095509350505050565b505b5060009485945092505050565b60608247101561521d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401612739565b600080866001600160a01b031685876040516152399190615e10565b60006040518083038185875af1925050503d8060008114615276576040519150601f19603f3d011682016040523d82523d6000602084013e61527b565b606091505b509150915061528c87838387615297565b979650505050505050565b606083156153065782516000036152ff576001600160a01b0385163b6152ff5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401612739565b5081612161565b612161838381511561531b5781518083602001fd5b8060405162461bcd60e51b815260040161273991906153e1565b828054828255906000526020600020908101928215615388579160200282015b828111156153885781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615355565b506111259291505b808211156111255760008155600101615390565b6000602082840312156153b657600080fd5b5035919050565b60005b838110156153d85781810151838201526020016153c0565b50506000910152565b60208152600082518060208401526154008160408501602087016153bd565b601f01601f19169190910160400192915050565b6001600160a01b038116811461391357600080fd5b6000806040838503121561543c57600080fd5b823561544781615414565b946020939093013593505050565b61ffff8116811461391357600080fd5b60006020828403121561547757600080fd5b813561115e81615455565b63ffffffff8116811461391357600080fd5b600080604083850312156154a757600080fd5b82356154b281615482565b915060208301356154c281615482565b809150509250929050565b6000806000606084860312156154e257600080fd5b83356154ed81615414565b925060208401356154fd81615414565b929592945050506040919091013590565b60006020828403121561552057600080fd5b813561115e81615482565b60008083601f84011261553d57600080fd5b50813567ffffffffffffffff81111561555557600080fd5b60208301915083602082850101111561556d57600080fd5b9250929050565b6000806000806060858703121561558a57600080fd5b843561559581615414565b935060208501356155a581615455565b9250604085013567ffffffffffffffff8111156155c157600080fd5b6155cd8782880161552b565b95989497509550505050565b600080600080608085870312156155ef57600080fd5b84359350602085013561560181615414565b9250604085013561561181615414565b9396929550929360600135925050565b6000806040838503121561563457600080fd5b823561563f81615455565b915060208301356154c281615455565b60006020828403121561566157600080fd5b813561115e81615414565b60006020828403121561567e57600080fd5b81356003811061115e57600080fd5b600080604083850312156156a057600080fd5b8235915060208301356154c281615414565b6000806000606084860312156156c757600080fd5b8335925060208401356156d981615414565b915060408401356156e981615414565b809150509250925092565b60006060828403121561570657600080fd5b50919050565b60008060006060848603121561572157600080fd5b8335925060208401356154fd81615414565b801515811461391357600080fd5b60006020828403121561575357600080fd5b813561115e81615733565b6000806040838503121561577157600080fd5b8235915060208301356154c281615455565b6000806020838503121561579657600080fd5b823567ffffffffffffffff8111156157ad57600080fd5b6157b98582860161552b565b90969095509350505050565b6000602082840312156157d757600080fd5b813567ffffffffffffffff8111156157ee57600080fd5b82016101c0818503121561115e57600080fd5b6000806040838503121561581457600080fd5b823561581f81615414565b915060208301356154c281615414565b60006020828403121561584157600080fd5b5051919050565b60006020828403121561585a57600080fd5b815161115e81615414565b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115610fc057610fc0615865565b600181811c908216806158ac57607f821691505b60208210810361570657634e487b7160e01b600052602260045260246000fd5b6000602082840312156158de57600080fd5b815161115e81615733565b80820180821115610f9757610f97615865565b634e487b7160e01b600052601260045260246000fd5b600082615921576159216158fc565b500690565b60006001820161593857615938615865565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8416815260406020820152600061284660408301848661593f565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6003811061391357634e487b7160e01b600052602160045260246000fd5b602081016159dd836159b2565b91905290565b6000602082840312156159f557600080fd5b815161115e81615455565b600060208284031215615a1257600080fd5b815161115e81615482565b8135615a2881615455565b61ffff8116905081548161ffff1982161783556020840135615a4981615455565b63ffff00008160101b169050808363ffffffff198416171784556040850135615a7181615455565b65ffff000000008160201b168465ffffffffffff198516178317178555505050505050565b606081018235615aa581615455565b61ffff9081168352602084013590615abc82615455565b9081166020840152604084013590615ad382615455565b8082166040850152505092915050565b6001600160a01b038c811682528b811660208301528a166040820152606081018990526080810188905260a0810187905263ffffffff861660c082015260e0810185905261010081018490526101608101615b3d846159b2565b836101208301528215156101408301529c9b505050505050505050505050565b60208152600061216160208301848661593f565b6000808335601e19843603018112615b8857600080fd5b83018035915067ffffffffffffffff821115615ba357600080fd5b60200191503681900382131561556d57600080fd5b6a02430ba39902b30bab63a160ad1b81528183600b83013760009101600b01908152919050565b6212105560ea1b81528183600383013760009101600301908152919050565b6000808335601e19843603018112615c1557600080fd5b83018035915067ffffffffffffffff821115615c3057600080fd5b6020019150600581901b360382131561556d57600080fd5b81810381811115610f9757610f97615865565b61ffff818116838216019080821115610fc057610fc0615865565b6000816000190483118215151615615c9057615c90615865565b500290565b600082615ca457615ca46158fc565b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561422457600081815260208120601f850160051c81016020861015615d315750805b601f850160051c820191505b8181101561455257828155600101615d3d565b815167ffffffffffffffff811115615d6a57615d6a615cf4565b615d7e81615d788454615898565b84615d0a565b602080601f831160018114615db35760008415615d9b5750858301515b600019600386901b1c1916600185901b178555614552565b600085815260208120601f198616915b82811015615de257888601518255948401946001909101908401615dc3565b5085821015615e005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615e228184602087016153bd565b919091019291505056fea264697066735822122073b520d432f2179225fc611fa087cdae7b42949957f564154eac3d398d103d4664736f6c63430008100033