{ "_format": "hh-sol-artifact-1", "contractName": "CunaFinanceBsc", "sourceName": "contracts/CunaFinanceBsc.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "bonus", "type": "uint256" } ], "name": "BonusClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "CancellationFeePaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "epochId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "treasuryTvl", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "unlockPercentage", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "paybackPercent", "type": "uint256" } ], "name": "EpochEnded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FundsClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FundsWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "StakeCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "StakeSaleCancelled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "saleAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "StakeSold", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "saleAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "StakeUpForSale", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "StakeWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" } ], "name": "UnlockScheduleSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bonus", "type": "uint256" } ], "name": "VestingClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bonus", "type": "uint256" } ], "name": "VestingCreated", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "bot", "type": "address" } ], "name": "addBot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "addOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "authorizedBots", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "users", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "batchCreateUserStakes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "buySellStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "calculateUnclaimedFunds", "outputs": [ { "internalType": "uint256", "name": "totalUnclaimed", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "cancelSellStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancellationFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "claimAllVestingByToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_vestingIndex", "type": "uint256" } ], "name": "claimBonus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimUnlockedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_vestingIndex", "type": "uint256" } ], "name": "claimVesting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "clearVesting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "createUserStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "bonus", "type": "uint256" }, { "internalType": "uint256", "name": "lockedUntil", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" }, { "internalType": "uint256", "name": "lastClaimed", "type": "uint256" }, { "internalType": "uint256", "name": "createdAt", "type": "uint256" } ], "name": "createVesting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "bonus", "type": "uint256" }, { "internalType": "uint256", "name": "lockedUntil", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" } ], "name": "createVesting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentEpochId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "dollarsVested", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "estDaysRemaining", "type": "uint256" }, { "internalType": "uint256", "name": "currentTreasuryTvl", "type": "uint256" }, { "internalType": "uint256", "name": "_paybackPercent", "type": "uint256" } ], "name": "endEpoch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "epochs", "outputs": [ { "internalType": "uint256", "name": "estDaysRemaining", "type": "uint256" }, { "internalType": "uint256", "name": "currentTreasuryTvl", "type": "uint256" }, { "internalType": "uint256", "name": "totalLiability", "type": "uint256" }, { "internalType": "uint256", "name": "unlockPercentage", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllSellStakes", "outputs": [ { "internalType": "address[]", "name": "sellers", "type": "address[]" }, { "internalType": "uint256[]", "name": "stakeIds", "type": "uint256[]" }, { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "listTime", "type": "uint256" } ], "internalType": "struct CunaFinanceBsc.SellStake[]", "name": "sellStakeData", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getAllWithdrawStakes", "outputs": [ { "components": [ { "internalType": "uint256", "name": "stakeId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "unlockTime", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" } ], "internalType": "struct CunaFinanceBsc.WithdrawStake[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "getEpoch", "outputs": [ { "components": [ { "internalType": "uint256", "name": "estDaysRemaining", "type": "uint256" }, { "internalType": "uint256", "name": "currentTreasuryTvl", "type": "uint256" }, { "internalType": "uint256", "name": "totalLiability", "type": "uint256" }, { "internalType": "uint256", "name": "unlockPercentage", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct CunaFinanceBsc.Epoch", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startId", "type": "uint256" }, { "internalType": "uint256", "name": "endId", "type": "uint256" } ], "name": "getEpochs", "outputs": [ { "components": [ { "internalType": "uint256", "name": "estDaysRemaining", "type": "uint256" }, { "internalType": "uint256", "name": "currentTreasuryTvl", "type": "uint256" }, { "internalType": "uint256", "name": "totalLiability", "type": "uint256" }, { "internalType": "uint256", "name": "unlockPercentage", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct CunaFinanceBsc.Epoch[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "getMarketplaceHistory", "outputs": [ { "components": [ { "internalType": "uint256", "name": "listTime", "type": "uint256" }, { "internalType": "uint256", "name": "saleTime", "type": "uint256" }, { "internalType": "uint256", "name": "origValue", "type": "uint256" }, { "internalType": "uint256", "name": "saleValue", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "address", "name": "buyer", "type": "address" } ], "internalType": "struct CunaFinanceBsc.MarketplaceHistory[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMarketplaceHistoryCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getNetStake", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "getSellStake", "outputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "listTime", "type": "uint256" } ], "internalType": "struct CunaFinanceBsc.SellStake", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUnclaimedFundsBreakdown", "outputs": [ { "internalType": "uint256[]", "name": "epochIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256", "name": "totalUnclaimed", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_vestingIndex", "type": "uint256" } ], "name": "getUnlockedVesting", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_vestingIndex", "type": "uint256" } ], "name": "getUnlockedVestingBonus", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUserMarketplaceSales", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUserStakeInfo", "outputs": [ { "internalType": "uint256", "name": "netStake", "type": "uint256" }, { "internalType": "uint256", "name": "unclaimedFunds", "type": "uint256" }, { "internalType": "uint256", "name": "totalOriginalStake", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUserTotalClaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUserTotalUnclaimedUsdValue", "outputs": [ { "internalType": "uint256", "name": "totalUsd", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" } ], "name": "getVestedTotals", "outputs": [ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "usdValues", "type": "uint256[]" }, { "internalType": "uint256", "name": "totalUsd", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_vestingIndex", "type": "uint256" } ], "name": "getVestingSchedule", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getVestings", "outputs": [ { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "bonus", "type": "uint256" }, { "internalType": "uint256", "name": "lockedUntil", "type": "uint256" }, { "internalType": "uint256", "name": "claimedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "claimedBonus", "type": "uint256" }, { "internalType": "uint256", "name": "lastClaimed", "type": "uint256" }, { "internalType": "uint256", "name": "createdAt", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "bool", "name": "complete", "type": "bool" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" } ], "internalType": "struct CunaFinanceBsc.Vesting[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "name": "getWithdrawStake", "outputs": [ { "components": [ { "internalType": "uint256", "name": "stakeId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "unlockTime", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" } ], "internalType": "struct CunaFinanceBsc.WithdrawStake", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "instantBuyout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "instantBuyoutPercent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "marketplaceHistory", "outputs": [ { "internalType": "uint256", "name": "listTime", "type": "uint256" }, { "internalType": "uint256", "name": "saleTime", "type": "uint256" }, { "internalType": "uint256", "name": "origValue", "type": "uint256" }, { "internalType": "uint256", "name": "saleValue", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "address", "name": "buyer", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketplaceMin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "marketplace_sales", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "owners", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "priceOracles", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "targetAddress", "type": "address" } ], "name": "searchMarketplaceHistory", "outputs": [ { "components": [ { "internalType": "uint256", "name": "listTime", "type": "uint256" }, { "internalType": "uint256", "name": "saleTime", "type": "uint256" }, { "internalType": "uint256", "name": "origValue", "type": "uint256" }, { "internalType": "uint256", "name": "saleValue", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "address", "name": "buyer", "type": "address" } ], "internalType": "struct CunaFinanceBsc.MarketplaceHistory[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "sellStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "sellStakeKeys", "outputs": [ { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "stakeId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "sellStakes", "outputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "listTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_oracle", "type": "address" } ], "name": "setPriceOracle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_lockTime", "type": "uint256" }, { "internalType": "uint256", "name": "_percentagePerStep", "type": "uint256" } ], "name": "setUnlockScheduleByPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "testUpgradeFunction", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalBigStakes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "totalClaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unlockDelay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "unlockSchedules", "outputs": [ { "internalType": "uint256", "name": "timeOffset", "type": "uint256" }, { "internalType": "uint256", "name": "percentage", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newFee", "type": "uint256" } ], "name": "updateCancellationFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPercent", "type": "uint256" } ], "name": "updateInstantBuyoutPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newMin", "type": "uint256" } ], "name": "updateMarketplaceMin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "stakeId", "type": "uint256" }, { "internalType": "uint256", "name": "newSalePrice", "type": "uint256" } ], "name": "updateSellStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delay", "type": "uint256" } ], "name": "updateUnlockDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userBigStake", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userLastClaimedEpoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "vestedTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "vestings", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "bonus", "type": "uint256" }, { "internalType": "uint256", "name": "lockedUntil", "type": "uint256" }, { "internalType": "uint256", "name": "claimedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "claimedBonus", "type": "uint256" }, { "internalType": "uint256", "name": "lastClaimed", "type": "uint256" }, { "internalType": "uint256", "name": "createdAt", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "bool", "name": "complete", "type": "bool" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawFromStakingPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawFromVestingPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "stakeIds", "type": "uint256[]" } ], "name": "withdrawStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "withdrawStakes", "outputs": [ { "internalType": "uint256", "name": "stakeId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "unlockTime", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "withdrawVestingLiabilities", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615f6c80620000e66000396000f3fe608060405234801561001057600080fd5b50600436106104325760003560e01c80638129fc1c11610236578063c26766031161013b578063d9193025116100c3578063ef5d9ae811610087578063ef5d9ae814610c0e578063f109208f14610c2e578063f2bb563014610c41578063fe2f50d014610c54578063ffecf51614610c5d57600080fd5b8063d919302514610bac578063da1b436414610bbf578063e88f8e6614610bdf578063eacdc5ff14610bf2578063eb44e0a314610bfb57600080fd5b8063cc573a911161010a578063cc573a9114610b17578063ce13d09014610b53578063ce3432c314610b66578063cfcf331914610b86578063d532bdfe14610b9957600080fd5b8063c267660314610a5c578063c32d3ae214610a64578063c6b61e4c14610a92578063c7b530b014610af757600080fd5b80639f3a676c116101be578063b6c3dc4c1161018d578063b6c3dc4c14610980578063b92a349f146109a0578063bc0bc6ba146109b3578063bd84477d146109d3578063bed9757e14610a3b57600080fd5b80639f3a676c146108ee578063a0d467581461093a578063aaf4b04d1461095a578063ac97b4171461096d57600080fd5b80638f82818f116102055780638f82818f146108755780639437e32e14610895578063953d16bf146108a857806396fd111a146108bb5780639cb6f556146108db57600080fd5b80638129fc1c14610827578063853e0df21461082f57806387b4b105146108425780638851ec0f1461086257600080fd5b806343c7c0111161033c57806362cd6a09116102c457806374d1c8e31161029357806374d1c8e3146107a55780637a0c6dc0146107b85780637bc221ac146107d85780637e6d9926146107eb57806380ca0ecf1461081457600080fd5b806362cd6a091461075f57806367a74ddc146107765780636ef569a5146107895780637065cb481461079257600080fd5b806351f6cf2f1161030b57806351f6cf2f146106e9578063549e61d3146107115780635811622714610724578063592d1dd11461073757806361d1080b1461075757600080fd5b806343c7c0111461067e578063441a41751461069157806348ea286d146106c357806351e62472146106d657600080fd5b8063173825d9116103bf5780632e46fed81161038e5780632e46fed8146105825780633ba8396e146105ab5780633c92f98d146105ce5780633f35e722146105f057806343a32f891461060357600080fd5b8063173825d9146105405780631aefa2d1146105535780631eb9e53e146105665780632ded58aa1461057957600080fd5b8063092c761011610406578063092c7610146104da5780630a84096a146104fa5780630a910a6d1461050d5780630c7d63861461051657806313baee5b1461052057600080fd5b8062159da614610437578063013745181461045d578063022914a71461049e5780630519da32146104d1575b600080fd5b61044a610445366004615689565b610c70565b6040519081526020015b60405180910390f35b61048661046b366004615689565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610454565b6104c16104ac366004615689565b60006020819052908152604090205460ff1681565b6040519015158152602001610454565b61044a60075481565b61044a6104e8366004615689565b60066020526000908152604090205481565b61044a6105083660046156ab565b610d06565b61044a60115481565b61051e610e3e565b005b61044a61052e366004615689565b600c6020526000908152604090205481565b61051e61054e366004615689565b610fff565b61051e6105613660046156d5565b6110f0565b61044a610574366004615689565b611124565b61044a60105481565b61044a610590366004615689565b6001600160a01b031660009081526019602052604090205490565b6104c16105b9366004615689565b60016020526000908152604090205460ff1681565b6105e16105dc366004615732565b61115b565b604051610454939291906157ae565b61051e6105fe3660046156ab565b611349565b61064f6106113660046156ab565b60126020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610454949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61051e61068c366004615689565b6113d0565b6106a461069f3660046156d5565b611759565b604080516001600160a01b039093168352602083019190915201610454565b61051e6106d1366004615689565b611791565b61051e6106e43660046156d5565b611921565b6106fc6106f73660046156ab565b611955565b60408051928352602083019190915201610454565b61051e61071f3660046157e4565b611991565b61051e61073236600461584f565b611c5a565b61044a610745366004615689565b60056020526000908152604090205481565b60185461044a565b610767611f4a565b60405161045493929190615871565b61051e61078436600461593a565b61219d565b61044a60145481565b61051e6107a0366004615689565b6121fa565b61051e6107b336600461596d565b6122cc565b6107cb6107c6366004615689565b6124af565b60405161045491906159d8565b61044a6107e6366004615689565b612596565b61044a6107f9366004615689565b6001600160a01b031660009081526015602052604090205490565b61044a6108223660046156ab565b612779565b61051e612885565b61051e61083d3660046156d5565b612aaa565b61044a610850366004615689565b600a6020526000908152604090205481565b61051e610870366004615a86565b612b46565b61044a610883366004615689565b60156020526000908152604090205481565b61051e6108a3366004615ab2565b612c79565b61051e6108b63660046156d5565b612cc0565b6108ce6108c936600461584f565b612faa565b6040516104549190615b0a565b61051e6108e93660046156d5565b613169565b6109016108fc3660046156d5565b61341c565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610454565b61094d6109483660046156ab565b61346f565b6040516104549190615b83565b61051e6109683660046156d5565b6134ff565b61051e61097b3660046156d5565b613585565b61099361098e3660046156ab565b613994565b6040516104549190615bb7565b61051e6109ae366004615beb565b613ac8565b6109c66109c13660046156d5565b613c91565b6040516104549190615c1e565b6109e66109e13660046156ab565b613d55565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610454565b610a4e610a493660046156ab565b613dd3565b604051610454929190615c57565b6103e761044a565b610a77610a72366004615689565b613f79565b60408051938452602084019290925290820152606001610454565b610acf610aa03660046156d5565b600b60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610454565b610b0a610b05366004615689565b613fd8565b6040516104549190615c7c565b610b2a610b253660046156ab565b61406d565b604080519485526020850193909352918301526001600160a01b03166060820152608001610454565b61051e610b613660046156d5565b6140bc565b610b79610b74366004615689565b6140f0565b6040516104549190615ce5565b610b79610b9436600461584f565b6143b0565b61051e610ba7366004615732565b61453a565b61051e610bba3660046156d5565b6147d1565b61044a610bcd366004615689565b600d6020526000908152604090205481565b6105e1610bed366004615689565b6149ef565b61044a600f5481565b61051e610c093660046156ab565b614bc9565b61044a610c1c366004615689565b60196020526000908152604090205481565b61051e610c3c3660046156ab565b6150dd565b61051e610c4f36600461584f565b6151df565b61044a60135481565b61051e610c6b366004615689565b6152f0565b6001600160a01b0381166000908152600c6020908152604080832054600d909252822054805b600f54811015610cfe578215610cec576000818152600b602052604081206003015461271090610cc69086615d75565b610cd09190615d8c565b9050610cdc8186615dae565b9450610ce88185615dc1565b9350505b80610cf681615dd4565b915050610c96565b505050919050565b6001600160a01b0382166000908152600260205260408120805482919084908110610d3357610d33615ded565b906000526020600020906009020190506000816006015442610d559190615dc1565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610e31576001600160a01b0383166000908152600360205260408120805483908110610db457610db4615ded565b6000918252602082206002909102018054600182015460088a015492945090929091606490610de590600a90615d75565b610def9190615d8c565b9050828810610e1c57612710610e058383615d75565b610e0f9190615d8c565b610e199087615dae565b95505b5050505080610e2a90615dd4565b9050610d6a565b5093505050505b92915050565b610e4661536c565b6000610e5133610c70565b905060008111610e7c5760405162461bcd60e51b8152600401610e7390615e03565b60405180910390fd5b336000908152600c602052604081208054839290610e9b908490615dc1565b925050819055508060106000828254610eb49190615dc1565b9091555050600f54336000908152600d6020908152604080832093909355601990529081208054839290610ee9908490615dae565b909155505060088054906000610efe83615dd4565b9091555050336000908152600e6020908152604091829020825160808101845260085481529182018490526007549092820190610f3b9042615dae565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250610ffd6001600080516020615f1783398151915255565b565b3360009081526020819052604090205460ff1661102e5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b03811660009081526020819052604090205460ff166110825760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610e73565b336001600160a01b038216036110cf5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610e73565b6001600160a01b03166000908152602081905260409020805460ff19169055565b3360009081526020819052604090205460ff1661111f5760405162461bcd60e51b8152600401610e7390615e2d565b601455565b6001600160a01b0381166000908152600c60205260408120548161114784610c70565b90506111538183615dc1565b949350505050565b606080600083806001600160401b0381111561117957611179615e55565b6040519080825280602002602001820160405280156111a2578160200160208202803683370190505b509350806001600160401b038111156111bd576111bd615e55565b6040519080825280602002602001820160405280156111e6578160200160208202803683370190505b50925060005b8181101561134057600087878381811061120857611208615ded565b905060200201602081019061121d9190615689565b6001600160a01b038116600090815260066020526040902054875191925090819088908590811061125057611250615ded565b6020908102919091018101919091526001600160a01b03838116600081815260049384905260408082205490516302c68be360e31b815294850192909252929116906316345f1890602401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190615e6b565b90506000670de0b6b3a76400006112f38484615d75565b6112fd9190615d8c565b90508088868151811061131257611312615ded565b60209081029190910101526113278188615dae565b965050505050808061133890615dd4565b9150506111ec565b50509250925092565b3360009081526020819052604090205460ff166113785760405162461bcd60e51b8152600401610e7390615e2d565b61138c6001600160a01b03831633836153b8565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b6113d861536c565b6000805b336000908152600260205260409020548110156114e35733600090815260026020526040812080548390811061141457611414615ded565b6000918252602090912060099091020160078101549091506001600160a01b03858116911614801561145257506007810154600160a01b900460ff16155b156114d05760006114633384612779565b905081600301548111156114ce5760008260030154826114839190615dc1565b905061148f8186615dae565b9450808360030160008282546114a59190615dae565b909155505082546003840154106114cc5760078301805460ff60a01b1916600160a01b1790555b505b505b50806114db81615dd4565b9150506113dc565b50600081116115045760405162461bcd60e51b8152600401610e7390615e03565b336000908152600560205260409020541561160d576001600160a01b0382811660008181526004602081905260408083205490516302c68be360e31b8152918201939093529092670de0b6b3a76400009285929116906316345f1890602401602060405180830381865afa158015611580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a49190615e6b565b6115ae9190615d75565b6115b89190615d8c565b3360009081526005602052604090205490915081106115e6573360009081526005602052604081205561160b565b3360009081526005602052604081208054839290611605908490615dc1565b90915550505b505b6001600160a01b03821660009081526006602052604081208054839290611635908490615dc1565b9091555050336000908152600e60205260408082208151608081019092526009805491938392919061166683615dd4565b919050558152602001838152602001600754426116839190615dae565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600a9052812080548392906116fe908490615dae565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506117566001600080516020615f1783398151915255565b50565b6016818154811061176957600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526001602052604090205460ff166117c05760405162461bcd60e51b8152600401610e7390615e2d565b60005b6001600160a01b03821660009081526002602052604090205481101561191d576001600160a01b038216600090815260026020526040812080548390811061180d5761180d615ded565b906000526020600020906009020190508060070160149054906101000a900460ff166118e15760088101546001600160a01b038416600090815260056020526040902054106118895760088101546001600160a01b03841660009081526005602052604081208054909190611883908490615dc1565b90915550505b805460078201546001600160a01b0316600090815260066020526040902054106118e157805460078201546001600160a01b0316600090815260066020526040812080549091906118db908490615dc1565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b17905561191681615dd4565b90506117c3565b5050565b3360009081526020819052604090205460ff166119505760405162461bcd60e51b8152600401610e7390615e2d565b601355565b6003602052816000526040600020818154811061197157600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526001602052604090205460ff166119c05760405162461bcd60e51b8152600401610e7390615e2d565b828114611a075760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610e73565b82611a435760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610e73565b6000805b84811015611c3b576000868683818110611a6357611a63615ded565b9050602002016020810190611a789190615689565b6001600160a01b031603611a9e5760405162461bcd60e51b8152600401610e7390615e84565b6000848483818110611ab257611ab2615ded565b9050602002013511611ad65760405162461bcd60e51b8152600401610e7390615ead565b838382818110611ae857611ae8615ded565b90506020020135600c6000888885818110611b0557611b05615ded565b9050602002016020810190611b1a9190615689565b6001600160a01b03168152602081019190915260400160002054611b3e9084615dc1565b611b489190615dae565b9150838382818110611b5c57611b5c615ded565b90506020020135600c6000888885818110611b7957611b79615ded565b9050602002016020810190611b8e9190615689565b6001600160a01b03168152602081019190915260400160002055858582818110611bba57611bba615ded565b9050602002016020810190611bcf9190615689565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611c0b57611c0b615ded565b90506020020135604051611c2191815260200190565b60405180910390a280611c3381615dd4565b915050611a47565b508060106000828254611c4e9190615dae565b90915550505050505050565b611c6261536c565b60008211611ca25760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610e73565b60008111611ce75760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e73565b601354821015611d2f5760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610e73565b6000611d3a33611124565b905080831115611d855760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e73565b60088054906000611d9583615dd4565b9091555050600854336000908152600c602052604081208054869290611dbc908490615dc1565b925050819055508360106000828254611dd59190615dc1565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526012865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601680548084018255948190529651939095027fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428981018054949093169390941692909217905591517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a909101559054611eda9190615dc1565b33600081815260176020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505061191d6001600080516020615f1783398151915255565b60165460609081908190806001600160401b03811115611f6c57611f6c615e55565b604051908082528060200260200182016040528015611f95578160200160208202803683370190505b509350806001600160401b03811115611fb057611fb0615e55565b604051908082528060200260200182016040528015611fd9578160200160208202803683370190505b509250806001600160401b03811115611ff457611ff4615e55565b60405190808252806020026020018201604052801561205957816020015b6120466040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816120125790505b50915060005b818110156121965760006016828154811061207c5761207c615ded565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549282019290925287519092508790849081106120c9576120c9615ded565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061210057612100615ded565b60209081029190910181019190915281516001600160a01b039081166000908152601283526040808220858501518352845290819020815160808101835281548152600182015494810194909452600281015490921690830152600301546060820152845185908490811061217757612177615ded565b602002602001018190525050808061218e90615dd4565b91505061205f565b5050909192565b3360009081526020819052604090205460ff166121cc5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b3360009081526020819052604090205460ff166122295760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b03811661224f5760405162461bcd60e51b8152600401610e7390615e84565b6001600160a01b03811660009081526020819052604090205460ff16156122a85760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610e73565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b3360009081526001602052604090205460ff166122fb5760405162461bcd60e51b8152600401610e7390615e2d565b60026000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124739190615dae565b90915550506001600160a01b038416600090815260066020526040812080548992906124a0908490615dae565b90915550505050505050505050565b6001600160a01b0381166000908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561258b57600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff1615156101008401526008015461012083015290835290920191016124e7565b505050509050919050565b6001600160a01b038116600090815260026020526040812054815b81811015612772576001600160a01b03841660009081526002602052604081208054839081106125e3576125e3615ded565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b9091041615156101008201819052600890920154610120820152915061275f5760e0810180516001600160a01b03908116600090815260046020819052604080832054945190516302c68be360e31b81529294909316926316345f18926126d392016001600160a01b0391909116815260200190565b602060405180830381865afa1580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190615e6b565b905060008260600151836000015161272c9190615dc1565b90506000670de0b6b3a76400006127438385615d75565b61274d9190615d8c565b90506127598188615dae565b96505050505b508061276a81615dd4565b9150506125b1565b5050919050565b6001600160a01b03821660009081526002602052604081208054829190849081106127a6576127a6615ded565b9060005260206000209060090201905060008160060154426127c89190615dc1565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610e31576001600160a01b038316600090815260036020526040812080548390811061282757612827615ded565b6000918252602090912060029091020180546001820154919250908187106128715787546127109061285a908390615d75565b6128649190615d8c565b61286e9086615dae565b94505b5050508061287e90615dd4565b90506127dd565b600061288f61541c565b805490915060ff600160401b82041615906001600160401b03166000811580156128b65750825b90506000826001600160401b031660011480156128d25750303b155b9050811580156128e0575080155b156128fe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561292857845460ff60401b1916600160401b1785555b612930615445565b3360009081526020818152604082208054600160ff1991821681179092557f4cfa3c6903140891ecff713e237b1f1746362568dfb5e8e9bc37719e4f37e0c580548216831790557f3e1f9e6abae6b647fdc3c5896ef1871ceb3c98e9e72852da3f17d161a860f76c80548216831790557f3517cbb3edfcef55b3b32be7021bc73ef070f4a8bad0d4b389b96924cf17b7418054821683179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80549091169091179055600c905269021e19e0c9bab24000007f649cbac87391465cfe24c65b052f0edf3b8486f136e0b91262d76d1f34d7826b8190556010805491929091612a51908490615dae565b90915550506201fa406007558315612aa357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526020819052604090205460ff16612ad95760405162461bcd60e51b8152600401610e7390615e2d565b612af87355d398326f99059ff775485246999027b319795533836153b8565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526020819052604090205460ff16612b755760405162461bcd60e51b8152600401610e7390615e2d565b600f5460009015612bc0576000600b60006001600f54612b959190615dc1565b81526020019081526020016000209050612bbc846010548360010154846002015487615455565b9150505b6040805160a081018252858152602080820186815260105483850190815260608085018781524260808701908152600f80546000908152600b885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a2600f8054906000612c6e83615dd4565b919050555050505050565b3360009081526001602052604090205460ff16612ca85760405162461bcd60e51b8152600401610e7390615e2d565b612cb886868686868642426122cc565b505050505050565b33600090815260126020908152604080832084845290915290208054612cf85760405162461bcd60e51b8152600401610e7390615ed5565b60028101546001600160a01b03163314612d455760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e73565b805460145460009061271090612d5b9084615d75565b612d659190615d8c565b90506000612d738284615dc1565b336000908152600c6020526040812080549293508392909190612d97908490615dae565b925050819055508060106000828254612db09190615dae565b90915550508115612df757604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601260209081526040808320898452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601782528083208984529091528120546016549092612e5791615dc1565b9050808214612f1857600060168281548110612e7557612e75615ded565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260168054919250829185908110612ec157612ec1615ded565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260178252604080822093830151825292909152208290555b6016805480612f2957612f29615f00565b600082815260208082206002600019949094019384020180546001600160a01b031916815560010182905591909255338083526017825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b606081831115612fec5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610e73565b600f5482106130335760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610e73565b600061303f8484615dc1565b61304a906001615dae565b90506000816001600160401b0381111561306657613066615e55565b6040519080825280602002602001820160405280156130c957816020015b6130b66040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816130845790505b50905060005b8281101561316057600b60006130e58389615dae565b81526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505082828151811061314257613142615ded565b6020026020010181905250808061315890615dd4565b9150506130cf565b50949350505050565b61317161536c565b600081116131915760405162461bcd60e51b8152600401610e7390615ead565b6000601154116131da5760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610e73565b60006131e533611124565b9050808211156132305760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e73565b61271061323f826109c4615d75565b6132499190615d8c565b8210156132895760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610e73565b60006127106011548461329c9190615d75565b6132a69190615d8c565b336000908152600c60205260408120805492935085929091906132ca908490615dc1565b9250508190555082601060008282546132e39190615dc1565b90915550503360009081526019602052604081208054839290613307908490615dae565b90915550506008805490600061331c83615dd4565b9091555050336000908152600e60209081526040918290208251608081018452600854815291820184905260075490928201906133599042615dae565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506117566001600080516020615f1783398151915255565b6018818154811061342c57600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6134a36040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260126020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526020819052604090205460ff1661352e5760405162461bcd60e51b8152600401610e7390615e2d565b6127108111156135805760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610e73565b601155565b61358d61536c565b3360009081526002602052604090205481106135e35760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e73565b33600090815260026020526040812080548390811061360457613604615ded565b906000526020600020906009020190508060070160149054906101000a900460ff16156136665760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610e73565b60006136723384612779565b905081600301548110156136bf5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e73565b60008260030154826136d19190615dc1565b9050600081116136f35760405162461bcd60e51b8152600401610e7390615e03565b808360030160008282546137079190615dae565b9091555050825460038401541061372e5760078301805460ff60a01b1916600160a01b1790555b336000908152600560205260409020541561383c5760078301546001600160a01b0390811660008181526004602081905260408083205490516302c68be360e31b8152918201939093529092670de0b6b3a76400009285929116906316345f1890602401602060405180830381865afa1580156137af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d39190615e6b565b6137dd9190615d75565b6137e79190615d8c565b336000908152600560205260409020549091508110613815573360009081526005602052604081205561383a565b3360009081526005602052604081208054839290613834908490615dc1565b90915550505b505b60078301546001600160a01b031660009081526006602052604081208054839290613868908490615dc1565b9091555050336000908152600e60205260408082208151608081019092526009805491938392919061389983615dd4565b919050558152602001838152602001600754426138b69190615dae565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600a905281208054839290613939908490615dae565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506117566001600080516020615f1783398151915255565b6139c8604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152600e60205260408120905b8154811015613a8d57838282815481106139fe576139fe615ded565b90600052602060002090600402016000015403613a7b57818181548110613a2757613a27615ded565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610e38915050565b80613a8581615dd4565b9150506139e2565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610e73565b3360009081526020819052604090205460ff16613af75760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b038316613b455760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610e73565b600081118015613b5757506127108111155b613b985760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610e73565b6001600160a01b0383166000908152600360205260408120613bb9916155e5565b6000825b612710821015613c565782612710613bd58285615dae565b1115613bea57613be783612710615dc1565b90505b6001600160a01b0386166000908152600360209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613c428184615dae565b9250613c4e8583615dae565b915050613bbd565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613cc36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600f548210613d065760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610e73565b506000908152600b6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60026020528160005260406000208181548110613d7157600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260026020526040812080546060928392909185908110613e0457613e04615ded565b600091825260208083206007600990930201918201546001600160a01b03168084526003909152604083205491935091816001600160401b03811115613e4c57613e4c615e55565b604051908082528060200260200182016040528015613e75578160200160208202803683370190505b5090506000826001600160401b03811115613e9257613e92615e55565b604051908082528060200260200182016040528015613ebb578160200160208202803683370190505b50905060005b83811015613f68576001600160a01b0385166000908152600360205260408120805483908110613ef357613ef3615ded565b9060005260206000209060020201905080600001548760060154613f179190615dae565b848381518110613f2957613f29615ded565b6020026020010181815250508060010154838381518110613f4c57613f4c615ded565b602090810291909101015250613f6181615dd4565b9050613ec1565b5090955093505050505b9250929050565b600080600080613f8885610c70565b6001600160a01b0386166000908152600c6020526040902054909150613faf908290615dc1565b6001600160a01b0386166000908152600c602052604090205490945090925090505b9193909250565b6001600160a01b0381166000908152600e60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561258b57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101614010565b600e602052816000526040600020818154811061408957600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526020819052604090205460ff166140eb5760405162461bcd60e51b8152600401610e7390615e2d565b600755565b60606001600160a01b0382166141185760405162461bcd60e51b8152600401610e7390615e84565b6000805b6018548110156141c857836001600160a01b03166018828154811061414357614143615ded565b60009182526020909120600460069092020101546001600160a01b031614806141a35750836001600160a01b03166018828154811061418457614184615ded565b60009182526020909120600560069092020101546001600160a01b0316145b156141b657816141b281615dd4565b9250505b806141c081615dd4565b91505061411c565b508060000361420a576040805160008082526020820190925290614202565b6141ef615606565b8152602001906001900390816141e75790505b509392505050565b6000816001600160401b0381111561422457614224615e55565b60405190808252806020026020018201604052801561425d57816020015b61424a615606565b8152602001906001900390816142425790505b5090506000805b6018548110156143a657856001600160a01b03166018828154811061428b5761428b615ded565b60009182526020909120600460069092020101546001600160a01b031614806142eb5750856001600160a01b0316601882815481106142cc576142cc615ded565b60009182526020909120600560069092020101546001600160a01b0316145b15614394576018818154811061430357614303615ded565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152835184908490811061437a5761437a615ded565b6020026020010181905250818061439090615dd4565b9250505b8061439e81615dd4565b915050614264565b5090949350505050565b60185460609083106144045760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610e73565b60006144108385615dae565b60185490915081111561442257506018545b600061442e8583615dc1565b6001600160401b0381111561444557614445615e55565b60405190808252806020026020018201604052801561447e57816020015b61446b615606565b8152602001906001900390816144635790505b509050845b82811015613160576018818154811061449e5761449e615ded565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a08201528261450c8884615dc1565b8151811061451c5761451c615ded565b6020026020010181905250808061453290615dd4565b915050614483565b61454261536c565b336000908152600e6020526040902080546145955760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610e73565b816145da5760405162461bcd60e51b8152602060048201526015602482015274139bc81cdd185ad94812511cc81c1c9bdd9a591959605a1b6044820152606401610e73565b60005b828110156147b85760008484838181106145f9576145f9615ded565b9050602002013590506000805b845481101561476357600085828154811061462357614623615ded565b9060005260206000209060040201905083816000015414801561464a575060008160010154115b156147505780600201544210156146925760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610e73565b60018101805460038301546000909255906001600160a01b03167355d398326f99059ff775485246999027b319795581146146f5576001600160a01b0381166000908152600a6020526040812080548492906146ef908490615dc1565b90915550505b6147096001600160a01b03821633846153b8565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a260019450505050614763565b508061475b81615dd4565b915050614606565b50806147a35760405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610e73565b505080806147b090615dd4565b9150506145dd565b505061191d6001600080516020615f1783398151915255565b6147d961536c565b33600090815260026020526040902054811061482f5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e73565b33600090815260026020526040812080548390811061485057614850615ded565b90600052602060002090600902019050600061486c3384610d06565b905081600401548110156148b95760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e73565b60008260040154826148cb9190615dc1565b9050600081116148ed5760405162461bcd60e51b8152600401610e7390615e03565b808360040160008282546149019190615dae565b9091555050336000908152600e602052604090819020815160808101909252908061492f87620f4240615dae565b8152602001838152602001600754426149489190615dae565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613972565b6001600160a01b0381166000908152600c6020908152604080832054600d909252822054600f546060938493909290918390614a2c908390615dc1565b905080600003614a5d575050604080516000808252602082018181528284019093529095509093509150613fd19050565b806001600160401b03811115614a7557614a75615e55565b604051908082528060200260200182016040528015614a9e578160200160208202803683370190505b509550806001600160401b03811115614ab957614ab9615e55565b604051908082528060200260200182016040528015614ae2578160200160208202803683370190505b50945060005b81811015614bbe576000614afc8285615dae565b905080888381518110614b1157614b11615ded565b60209081029190910101528415614b8a576000818152600b602052604081206003015461271090614b429088615d75565b614b4c9190615d8c565b905080888481518110614b6157614b61615ded565b6020908102919091010152614b768188615dae565b9650614b828187615dc1565b955050614bab565b6000878381518110614b9e57614b9e615ded565b6020026020010181815250505b5080614bb681615dd4565b915050614ae8565b505050509193909250565b614bd161536c565b6001600160a01b038216600090815260126020908152604080832084845290915290208054614c125760405162461bcd60e51b8152600401610e7390615ed5565b336001600160a01b03841603614c635760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610e73565b8054600182015460038301546000828411614c7f576000614c89565b614c898385615dc1565b9050600084614c9a83612710615d75565b614ca49190615d8c565b90506000612710614cb58380615d75565b614cbf9190615d8c565b90506000612710614cd08389615d75565b614cda9190615d8c565b90506000614ce88289615dc1565b9050614d0a7355d398326f99059ff775485246999027b3197955338d8a6154ee565b336000908152600c602052604081208054839290614d29908490615dae565b925050819055508060106000828254614d429190615dae565b90915550506001600160a01b038b1660009081526015602052604081208054899290614d6f908490615dae565b9250508190555060186040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601260008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601760008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601680549050614f1e9190615dc1565b9050808214614fdf57600060168281548110614f3c57614f3c615ded565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260168054919250829185908110614f8857614f88615ded565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260178252604080822093830151825292909152208290555b6016805480614ff057614ff0615f00565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601760008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f6040516150b3929190918252602082015260400190565b60405180910390a3505050505050505050505061191d6001600080516020615f1783398151915255565b3360009081526001602052604090205460ff1661510c5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b0382166151325760405162461bcd60e51b8152600401610e7390615e84565b600081116151525760405162461bcd60e51b8152600401610e7390615ead565b6001600160a01b0382166000908152600c6020526040902054601054829161517991615dc1565b6151839190615dae565b6010556001600160a01b0382166000818152600c602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839906151d39084815260200190565b60405180910390a25050565b336000908152601260209081526040808320858452909152902080546152175760405162461bcd60e51b8152600401610e7390615ed5565b60028101546001600160a01b031633146152645760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e73565b600082116152a95760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e73565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b3360009081526020819052604090205460ff1661531f5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b0381166153455760405162461bcd60e51b8152600401610e7390615e84565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600080516020615f1783398151915280546001190161539e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615f1783398151915255565b6040516001600160a01b0383811660248301526044820183905261541791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061552d565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e38565b61544d61559e565b610ffd6155c3565b6000821580615462575084155b1561546f575060006154e5565b60008561547e88612710615d75565b6154889190615d8c565b905060008461549987612710615d75565b6154a39190615d8c565b90508082116154b7576000925050506154e5565b60006154c38284615dc1565b905060006127106154d48784615d75565b6154de9190615d8c565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526155279186918216906323b872dd906084016153e5565b50505050565b600080602060008451602086016000885af180615550576040513d6000823e3d81fd5b50506000513d91508115615568578060011415615575565b6001600160a01b0384163b155b1561552757604051635274afe760e01b81526001600160a01b0385166004820152602401610e73565b6155a66155cb565b610ffd57604051631afcd79f60e31b815260040160405180910390fd5b6153a461559e565b60006155d561541c565b54600160401b900460ff16919050565b5080546000825560020290600052602060002090810190611756919061564e565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b80821115615669576000808255600182015560020161564f565b5090565b80356001600160a01b038116811461568457600080fd5b919050565b60006020828403121561569b57600080fd5b6156a48261566d565b9392505050565b600080604083850312156156be57600080fd5b6156c78361566d565b946020939093013593505050565b6000602082840312156156e757600080fd5b5035919050565b60008083601f84011261570057600080fd5b5081356001600160401b0381111561571757600080fd5b6020830191508360208260051b8501011115613f7257600080fd5b6000806020838503121561574557600080fd5b82356001600160401b0381111561575b57600080fd5b615767858286016156ee565b90969095509350505050565b600081518084526020808501945080840160005b838110156157a357815187529582019590820190600101615787565b509495945050505050565b6060815260006157c16060830186615773565b82810360208401526157d38186615773565b915050826040830152949350505050565b600080600080604085870312156157fa57600080fd5b84356001600160401b038082111561581157600080fd5b61581d888389016156ee565b9096509450602087013591508082111561583657600080fd5b50615843878288016156ee565b95989497509550505050565b6000806040838503121561586257600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b838110156158b45781516001600160a01b03168552938201939082019060010161588f565b5050858303818701526158c78389615773565b868103604088015287518082528289019450908201925060005b8181101561592b5761591b84865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b93820193928501926001016158e1565b50919998505050505050505050565b6000806040838503121561594d57600080fd5b6159568361566d565b91506159646020840161566d565b90509250929050565b600080600080600080600080610100898b03121561598a57600080fd5b6159938961566d565b97506020890135965060408901359550606089013594506159b660808a0161566d565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b82811015615a795781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b03169086015261010080820151151590860152610120908101519085015261014090930192908501906001016159f5565b5091979650505050505050565b600080600060608486031215615a9b57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215615acb57600080fd5b615ad48761566d565b9550602087013594506040870135935060608701359250615af76080880161566d565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015615b7757615b6483855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a09290920191600101615b26565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610e38565b8151815260208083015190820152604080830151908201526060808301516001600160a01b03169082015260808101610e38565b600080600060608486031215615c0057600080fd5b615c098461566d565b95602085013595506040909401359392505050565b60a08101610e38828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615c6a6040830185615773565b82810360208401526154e58185615773565b6020808252825182820181905260009190848201906040850190845b81811015615b7757615cd28385518051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b9284019260809290920191600101615c98565b602080825282518282018190526000919060409081850190868401855b82811015615a795781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615d02565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e3857610e38615d5f565b600082615da957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e3857610e38615d5f565b81810381811115610e3857610e38615d5f565b600060018201615de657615de6615d5f565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615e7d57600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212205268736fc4e35127c702c9b795301e6cd213a26a38542a6075be88463edd2d3f64736f6c63430008140033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104325760003560e01c80638129fc1c11610236578063c26766031161013b578063d9193025116100c3578063ef5d9ae811610087578063ef5d9ae814610c0e578063f109208f14610c2e578063f2bb563014610c41578063fe2f50d014610c54578063ffecf51614610c5d57600080fd5b8063d919302514610bac578063da1b436414610bbf578063e88f8e6614610bdf578063eacdc5ff14610bf2578063eb44e0a314610bfb57600080fd5b8063cc573a911161010a578063cc573a9114610b17578063ce13d09014610b53578063ce3432c314610b66578063cfcf331914610b86578063d532bdfe14610b9957600080fd5b8063c267660314610a5c578063c32d3ae214610a64578063c6b61e4c14610a92578063c7b530b014610af757600080fd5b80639f3a676c116101be578063b6c3dc4c1161018d578063b6c3dc4c14610980578063b92a349f146109a0578063bc0bc6ba146109b3578063bd84477d146109d3578063bed9757e14610a3b57600080fd5b80639f3a676c146108ee578063a0d467581461093a578063aaf4b04d1461095a578063ac97b4171461096d57600080fd5b80638f82818f116102055780638f82818f146108755780639437e32e14610895578063953d16bf146108a857806396fd111a146108bb5780639cb6f556146108db57600080fd5b80638129fc1c14610827578063853e0df21461082f57806387b4b105146108425780638851ec0f1461086257600080fd5b806343c7c0111161033c57806362cd6a09116102c457806374d1c8e31161029357806374d1c8e3146107a55780637a0c6dc0146107b85780637bc221ac146107d85780637e6d9926146107eb57806380ca0ecf1461081457600080fd5b806362cd6a091461075f57806367a74ddc146107765780636ef569a5146107895780637065cb481461079257600080fd5b806351f6cf2f1161030b57806351f6cf2f146106e9578063549e61d3146107115780635811622714610724578063592d1dd11461073757806361d1080b1461075757600080fd5b806343c7c0111461067e578063441a41751461069157806348ea286d146106c357806351e62472146106d657600080fd5b8063173825d9116103bf5780632e46fed81161038e5780632e46fed8146105825780633ba8396e146105ab5780633c92f98d146105ce5780633f35e722146105f057806343a32f891461060357600080fd5b8063173825d9146105405780631aefa2d1146105535780631eb9e53e146105665780632ded58aa1461057957600080fd5b8063092c761011610406578063092c7610146104da5780630a84096a146104fa5780630a910a6d1461050d5780630c7d63861461051657806313baee5b1461052057600080fd5b8062159da614610437578063013745181461045d578063022914a71461049e5780630519da32146104d1575b600080fd5b61044a610445366004615689565b610c70565b6040519081526020015b60405180910390f35b61048661046b366004615689565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610454565b6104c16104ac366004615689565b60006020819052908152604090205460ff1681565b6040519015158152602001610454565b61044a60075481565b61044a6104e8366004615689565b60066020526000908152604090205481565b61044a6105083660046156ab565b610d06565b61044a60115481565b61051e610e3e565b005b61044a61052e366004615689565b600c6020526000908152604090205481565b61051e61054e366004615689565b610fff565b61051e6105613660046156d5565b6110f0565b61044a610574366004615689565b611124565b61044a60105481565b61044a610590366004615689565b6001600160a01b031660009081526019602052604090205490565b6104c16105b9366004615689565b60016020526000908152604090205460ff1681565b6105e16105dc366004615732565b61115b565b604051610454939291906157ae565b61051e6105fe3660046156ab565b611349565b61064f6106113660046156ab565b60126020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610454949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61051e61068c366004615689565b6113d0565b6106a461069f3660046156d5565b611759565b604080516001600160a01b039093168352602083019190915201610454565b61051e6106d1366004615689565b611791565b61051e6106e43660046156d5565b611921565b6106fc6106f73660046156ab565b611955565b60408051928352602083019190915201610454565b61051e61071f3660046157e4565b611991565b61051e61073236600461584f565b611c5a565b61044a610745366004615689565b60056020526000908152604090205481565b60185461044a565b610767611f4a565b60405161045493929190615871565b61051e61078436600461593a565b61219d565b61044a60145481565b61051e6107a0366004615689565b6121fa565b61051e6107b336600461596d565b6122cc565b6107cb6107c6366004615689565b6124af565b60405161045491906159d8565b61044a6107e6366004615689565b612596565b61044a6107f9366004615689565b6001600160a01b031660009081526015602052604090205490565b61044a6108223660046156ab565b612779565b61051e612885565b61051e61083d3660046156d5565b612aaa565b61044a610850366004615689565b600a6020526000908152604090205481565b61051e610870366004615a86565b612b46565b61044a610883366004615689565b60156020526000908152604090205481565b61051e6108a3366004615ab2565b612c79565b61051e6108b63660046156d5565b612cc0565b6108ce6108c936600461584f565b612faa565b6040516104549190615b0a565b61051e6108e93660046156d5565b613169565b6109016108fc3660046156d5565b61341c565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610454565b61094d6109483660046156ab565b61346f565b6040516104549190615b83565b61051e6109683660046156d5565b6134ff565b61051e61097b3660046156d5565b613585565b61099361098e3660046156ab565b613994565b6040516104549190615bb7565b61051e6109ae366004615beb565b613ac8565b6109c66109c13660046156d5565b613c91565b6040516104549190615c1e565b6109e66109e13660046156ab565b613d55565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610454565b610a4e610a493660046156ab565b613dd3565b604051610454929190615c57565b6103e761044a565b610a77610a72366004615689565b613f79565b60408051938452602084019290925290820152606001610454565b610acf610aa03660046156d5565b600b60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610454565b610b0a610b05366004615689565b613fd8565b6040516104549190615c7c565b610b2a610b253660046156ab565b61406d565b604080519485526020850193909352918301526001600160a01b03166060820152608001610454565b61051e610b613660046156d5565b6140bc565b610b79610b74366004615689565b6140f0565b6040516104549190615ce5565b610b79610b9436600461584f565b6143b0565b61051e610ba7366004615732565b61453a565b61051e610bba3660046156d5565b6147d1565b61044a610bcd366004615689565b600d6020526000908152604090205481565b6105e1610bed366004615689565b6149ef565b61044a600f5481565b61051e610c093660046156ab565b614bc9565b61044a610c1c366004615689565b60196020526000908152604090205481565b61051e610c3c3660046156ab565b6150dd565b61051e610c4f36600461584f565b6151df565b61044a60135481565b61051e610c6b366004615689565b6152f0565b6001600160a01b0381166000908152600c6020908152604080832054600d909252822054805b600f54811015610cfe578215610cec576000818152600b602052604081206003015461271090610cc69086615d75565b610cd09190615d8c565b9050610cdc8186615dae565b9450610ce88185615dc1565b9350505b80610cf681615dd4565b915050610c96565b505050919050565b6001600160a01b0382166000908152600260205260408120805482919084908110610d3357610d33615ded565b906000526020600020906009020190506000816006015442610d559190615dc1565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610e31576001600160a01b0383166000908152600360205260408120805483908110610db457610db4615ded565b6000918252602082206002909102018054600182015460088a015492945090929091606490610de590600a90615d75565b610def9190615d8c565b9050828810610e1c57612710610e058383615d75565b610e0f9190615d8c565b610e199087615dae565b95505b5050505080610e2a90615dd4565b9050610d6a565b5093505050505b92915050565b610e4661536c565b6000610e5133610c70565b905060008111610e7c5760405162461bcd60e51b8152600401610e7390615e03565b60405180910390fd5b336000908152600c602052604081208054839290610e9b908490615dc1565b925050819055508060106000828254610eb49190615dc1565b9091555050600f54336000908152600d6020908152604080832093909355601990529081208054839290610ee9908490615dae565b909155505060088054906000610efe83615dd4565b9091555050336000908152600e6020908152604091829020825160808101845260085481529182018490526007549092820190610f3b9042615dae565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250610ffd6001600080516020615f1783398151915255565b565b3360009081526020819052604090205460ff1661102e5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b03811660009081526020819052604090205460ff166110825760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610e73565b336001600160a01b038216036110cf5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610e73565b6001600160a01b03166000908152602081905260409020805460ff19169055565b3360009081526020819052604090205460ff1661111f5760405162461bcd60e51b8152600401610e7390615e2d565b601455565b6001600160a01b0381166000908152600c60205260408120548161114784610c70565b90506111538183615dc1565b949350505050565b606080600083806001600160401b0381111561117957611179615e55565b6040519080825280602002602001820160405280156111a2578160200160208202803683370190505b509350806001600160401b038111156111bd576111bd615e55565b6040519080825280602002602001820160405280156111e6578160200160208202803683370190505b50925060005b8181101561134057600087878381811061120857611208615ded565b905060200201602081019061121d9190615689565b6001600160a01b038116600090815260066020526040902054875191925090819088908590811061125057611250615ded565b6020908102919091018101919091526001600160a01b03838116600081815260049384905260408082205490516302c68be360e31b815294850192909252929116906316345f1890602401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190615e6b565b90506000670de0b6b3a76400006112f38484615d75565b6112fd9190615d8c565b90508088868151811061131257611312615ded565b60209081029190910101526113278188615dae565b965050505050808061133890615dd4565b9150506111ec565b50509250925092565b3360009081526020819052604090205460ff166113785760405162461bcd60e51b8152600401610e7390615e2d565b61138c6001600160a01b03831633836153b8565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b6113d861536c565b6000805b336000908152600260205260409020548110156114e35733600090815260026020526040812080548390811061141457611414615ded565b6000918252602090912060099091020160078101549091506001600160a01b03858116911614801561145257506007810154600160a01b900460ff16155b156114d05760006114633384612779565b905081600301548111156114ce5760008260030154826114839190615dc1565b905061148f8186615dae565b9450808360030160008282546114a59190615dae565b909155505082546003840154106114cc5760078301805460ff60a01b1916600160a01b1790555b505b505b50806114db81615dd4565b9150506113dc565b50600081116115045760405162461bcd60e51b8152600401610e7390615e03565b336000908152600560205260409020541561160d576001600160a01b0382811660008181526004602081905260408083205490516302c68be360e31b8152918201939093529092670de0b6b3a76400009285929116906316345f1890602401602060405180830381865afa158015611580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a49190615e6b565b6115ae9190615d75565b6115b89190615d8c565b3360009081526005602052604090205490915081106115e6573360009081526005602052604081205561160b565b3360009081526005602052604081208054839290611605908490615dc1565b90915550505b505b6001600160a01b03821660009081526006602052604081208054839290611635908490615dc1565b9091555050336000908152600e60205260408082208151608081019092526009805491938392919061166683615dd4565b919050558152602001838152602001600754426116839190615dae565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600a9052812080548392906116fe908490615dae565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506117566001600080516020615f1783398151915255565b50565b6016818154811061176957600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526001602052604090205460ff166117c05760405162461bcd60e51b8152600401610e7390615e2d565b60005b6001600160a01b03821660009081526002602052604090205481101561191d576001600160a01b038216600090815260026020526040812080548390811061180d5761180d615ded565b906000526020600020906009020190508060070160149054906101000a900460ff166118e15760088101546001600160a01b038416600090815260056020526040902054106118895760088101546001600160a01b03841660009081526005602052604081208054909190611883908490615dc1565b90915550505b805460078201546001600160a01b0316600090815260066020526040902054106118e157805460078201546001600160a01b0316600090815260066020526040812080549091906118db908490615dc1565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b17905561191681615dd4565b90506117c3565b5050565b3360009081526020819052604090205460ff166119505760405162461bcd60e51b8152600401610e7390615e2d565b601355565b6003602052816000526040600020818154811061197157600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526001602052604090205460ff166119c05760405162461bcd60e51b8152600401610e7390615e2d565b828114611a075760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610e73565b82611a435760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610e73565b6000805b84811015611c3b576000868683818110611a6357611a63615ded565b9050602002016020810190611a789190615689565b6001600160a01b031603611a9e5760405162461bcd60e51b8152600401610e7390615e84565b6000848483818110611ab257611ab2615ded565b9050602002013511611ad65760405162461bcd60e51b8152600401610e7390615ead565b838382818110611ae857611ae8615ded565b90506020020135600c6000888885818110611b0557611b05615ded565b9050602002016020810190611b1a9190615689565b6001600160a01b03168152602081019190915260400160002054611b3e9084615dc1565b611b489190615dae565b9150838382818110611b5c57611b5c615ded565b90506020020135600c6000888885818110611b7957611b79615ded565b9050602002016020810190611b8e9190615689565b6001600160a01b03168152602081019190915260400160002055858582818110611bba57611bba615ded565b9050602002016020810190611bcf9190615689565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611c0b57611c0b615ded565b90506020020135604051611c2191815260200190565b60405180910390a280611c3381615dd4565b915050611a47565b508060106000828254611c4e9190615dae565b90915550505050505050565b611c6261536c565b60008211611ca25760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610e73565b60008111611ce75760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e73565b601354821015611d2f5760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610e73565b6000611d3a33611124565b905080831115611d855760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e73565b60088054906000611d9583615dd4565b9091555050600854336000908152600c602052604081208054869290611dbc908490615dc1565b925050819055508360106000828254611dd59190615dc1565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526012865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601680548084018255948190529651939095027fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428981018054949093169390941692909217905591517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a909101559054611eda9190615dc1565b33600081815260176020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505061191d6001600080516020615f1783398151915255565b60165460609081908190806001600160401b03811115611f6c57611f6c615e55565b604051908082528060200260200182016040528015611f95578160200160208202803683370190505b509350806001600160401b03811115611fb057611fb0615e55565b604051908082528060200260200182016040528015611fd9578160200160208202803683370190505b509250806001600160401b03811115611ff457611ff4615e55565b60405190808252806020026020018201604052801561205957816020015b6120466040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816120125790505b50915060005b818110156121965760006016828154811061207c5761207c615ded565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549282019290925287519092508790849081106120c9576120c9615ded565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061210057612100615ded565b60209081029190910181019190915281516001600160a01b039081166000908152601283526040808220858501518352845290819020815160808101835281548152600182015494810194909452600281015490921690830152600301546060820152845185908490811061217757612177615ded565b602002602001018190525050808061218e90615dd4565b91505061205f565b5050909192565b3360009081526020819052604090205460ff166121cc5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b3360009081526020819052604090205460ff166122295760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b03811661224f5760405162461bcd60e51b8152600401610e7390615e84565b6001600160a01b03811660009081526020819052604090205460ff16156122a85760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610e73565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b3360009081526001602052604090205460ff166122fb5760405162461bcd60e51b8152600401610e7390615e2d565b60026000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124739190615dae565b90915550506001600160a01b038416600090815260066020526040812080548992906124a0908490615dae565b90915550505050505050505050565b6001600160a01b0381166000908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561258b57600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff1615156101008401526008015461012083015290835290920191016124e7565b505050509050919050565b6001600160a01b038116600090815260026020526040812054815b81811015612772576001600160a01b03841660009081526002602052604081208054839081106125e3576125e3615ded565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b9091041615156101008201819052600890920154610120820152915061275f5760e0810180516001600160a01b03908116600090815260046020819052604080832054945190516302c68be360e31b81529294909316926316345f18926126d392016001600160a01b0391909116815260200190565b602060405180830381865afa1580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190615e6b565b905060008260600151836000015161272c9190615dc1565b90506000670de0b6b3a76400006127438385615d75565b61274d9190615d8c565b90506127598188615dae565b96505050505b508061276a81615dd4565b9150506125b1565b5050919050565b6001600160a01b03821660009081526002602052604081208054829190849081106127a6576127a6615ded565b9060005260206000209060090201905060008160060154426127c89190615dc1565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610e31576001600160a01b038316600090815260036020526040812080548390811061282757612827615ded565b6000918252602090912060029091020180546001820154919250908187106128715787546127109061285a908390615d75565b6128649190615d8c565b61286e9086615dae565b94505b5050508061287e90615dd4565b90506127dd565b600061288f61541c565b805490915060ff600160401b82041615906001600160401b03166000811580156128b65750825b90506000826001600160401b031660011480156128d25750303b155b9050811580156128e0575080155b156128fe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561292857845460ff60401b1916600160401b1785555b612930615445565b3360009081526020818152604082208054600160ff1991821681179092557f4cfa3c6903140891ecff713e237b1f1746362568dfb5e8e9bc37719e4f37e0c580548216831790557f3e1f9e6abae6b647fdc3c5896ef1871ceb3c98e9e72852da3f17d161a860f76c80548216831790557f3517cbb3edfcef55b3b32be7021bc73ef070f4a8bad0d4b389b96924cf17b7418054821683179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80549091169091179055600c905269021e19e0c9bab24000007f649cbac87391465cfe24c65b052f0edf3b8486f136e0b91262d76d1f34d7826b8190556010805491929091612a51908490615dae565b90915550506201fa406007558315612aa357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526020819052604090205460ff16612ad95760405162461bcd60e51b8152600401610e7390615e2d565b612af87355d398326f99059ff775485246999027b319795533836153b8565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526020819052604090205460ff16612b755760405162461bcd60e51b8152600401610e7390615e2d565b600f5460009015612bc0576000600b60006001600f54612b959190615dc1565b81526020019081526020016000209050612bbc846010548360010154846002015487615455565b9150505b6040805160a081018252858152602080820186815260105483850190815260608085018781524260808701908152600f80546000908152600b885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a2600f8054906000612c6e83615dd4565b919050555050505050565b3360009081526001602052604090205460ff16612ca85760405162461bcd60e51b8152600401610e7390615e2d565b612cb886868686868642426122cc565b505050505050565b33600090815260126020908152604080832084845290915290208054612cf85760405162461bcd60e51b8152600401610e7390615ed5565b60028101546001600160a01b03163314612d455760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e73565b805460145460009061271090612d5b9084615d75565b612d659190615d8c565b90506000612d738284615dc1565b336000908152600c6020526040812080549293508392909190612d97908490615dae565b925050819055508060106000828254612db09190615dae565b90915550508115612df757604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601260209081526040808320898452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601782528083208984529091528120546016549092612e5791615dc1565b9050808214612f1857600060168281548110612e7557612e75615ded565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260168054919250829185908110612ec157612ec1615ded565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260178252604080822093830151825292909152208290555b6016805480612f2957612f29615f00565b600082815260208082206002600019949094019384020180546001600160a01b031916815560010182905591909255338083526017825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b606081831115612fec5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610e73565b600f5482106130335760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610e73565b600061303f8484615dc1565b61304a906001615dae565b90506000816001600160401b0381111561306657613066615e55565b6040519080825280602002602001820160405280156130c957816020015b6130b66040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816130845790505b50905060005b8281101561316057600b60006130e58389615dae565b81526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505082828151811061314257613142615ded565b6020026020010181905250808061315890615dd4565b9150506130cf565b50949350505050565b61317161536c565b600081116131915760405162461bcd60e51b8152600401610e7390615ead565b6000601154116131da5760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610e73565b60006131e533611124565b9050808211156132305760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e73565b61271061323f826109c4615d75565b6132499190615d8c565b8210156132895760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610e73565b60006127106011548461329c9190615d75565b6132a69190615d8c565b336000908152600c60205260408120805492935085929091906132ca908490615dc1565b9250508190555082601060008282546132e39190615dc1565b90915550503360009081526019602052604081208054839290613307908490615dae565b90915550506008805490600061331c83615dd4565b9091555050336000908152600e60209081526040918290208251608081018452600854815291820184905260075490928201906133599042615dae565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506117566001600080516020615f1783398151915255565b6018818154811061342c57600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6134a36040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260126020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526020819052604090205460ff1661352e5760405162461bcd60e51b8152600401610e7390615e2d565b6127108111156135805760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610e73565b601155565b61358d61536c565b3360009081526002602052604090205481106135e35760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e73565b33600090815260026020526040812080548390811061360457613604615ded565b906000526020600020906009020190508060070160149054906101000a900460ff16156136665760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610e73565b60006136723384612779565b905081600301548110156136bf5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e73565b60008260030154826136d19190615dc1565b9050600081116136f35760405162461bcd60e51b8152600401610e7390615e03565b808360030160008282546137079190615dae565b9091555050825460038401541061372e5760078301805460ff60a01b1916600160a01b1790555b336000908152600560205260409020541561383c5760078301546001600160a01b0390811660008181526004602081905260408083205490516302c68be360e31b8152918201939093529092670de0b6b3a76400009285929116906316345f1890602401602060405180830381865afa1580156137af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d39190615e6b565b6137dd9190615d75565b6137e79190615d8c565b336000908152600560205260409020549091508110613815573360009081526005602052604081205561383a565b3360009081526005602052604081208054839290613834908490615dc1565b90915550505b505b60078301546001600160a01b031660009081526006602052604081208054839290613868908490615dc1565b9091555050336000908152600e60205260408082208151608081019092526009805491938392919061389983615dd4565b919050558152602001838152602001600754426138b69190615dae565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600a905281208054839290613939908490615dae565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506117566001600080516020615f1783398151915255565b6139c8604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152600e60205260408120905b8154811015613a8d57838282815481106139fe576139fe615ded565b90600052602060002090600402016000015403613a7b57818181548110613a2757613a27615ded565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610e38915050565b80613a8581615dd4565b9150506139e2565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610e73565b3360009081526020819052604090205460ff16613af75760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b038316613b455760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610e73565b600081118015613b5757506127108111155b613b985760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610e73565b6001600160a01b0383166000908152600360205260408120613bb9916155e5565b6000825b612710821015613c565782612710613bd58285615dae565b1115613bea57613be783612710615dc1565b90505b6001600160a01b0386166000908152600360209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613c428184615dae565b9250613c4e8583615dae565b915050613bbd565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613cc36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600f548210613d065760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610e73565b506000908152600b6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60026020528160005260406000208181548110613d7157600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260026020526040812080546060928392909185908110613e0457613e04615ded565b600091825260208083206007600990930201918201546001600160a01b03168084526003909152604083205491935091816001600160401b03811115613e4c57613e4c615e55565b604051908082528060200260200182016040528015613e75578160200160208202803683370190505b5090506000826001600160401b03811115613e9257613e92615e55565b604051908082528060200260200182016040528015613ebb578160200160208202803683370190505b50905060005b83811015613f68576001600160a01b0385166000908152600360205260408120805483908110613ef357613ef3615ded565b9060005260206000209060020201905080600001548760060154613f179190615dae565b848381518110613f2957613f29615ded565b6020026020010181815250508060010154838381518110613f4c57613f4c615ded565b602090810291909101015250613f6181615dd4565b9050613ec1565b5090955093505050505b9250929050565b600080600080613f8885610c70565b6001600160a01b0386166000908152600c6020526040902054909150613faf908290615dc1565b6001600160a01b0386166000908152600c602052604090205490945090925090505b9193909250565b6001600160a01b0381166000908152600e60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561258b57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101614010565b600e602052816000526040600020818154811061408957600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526020819052604090205460ff166140eb5760405162461bcd60e51b8152600401610e7390615e2d565b600755565b60606001600160a01b0382166141185760405162461bcd60e51b8152600401610e7390615e84565b6000805b6018548110156141c857836001600160a01b03166018828154811061414357614143615ded565b60009182526020909120600460069092020101546001600160a01b031614806141a35750836001600160a01b03166018828154811061418457614184615ded565b60009182526020909120600560069092020101546001600160a01b0316145b156141b657816141b281615dd4565b9250505b806141c081615dd4565b91505061411c565b508060000361420a576040805160008082526020820190925290614202565b6141ef615606565b8152602001906001900390816141e75790505b509392505050565b6000816001600160401b0381111561422457614224615e55565b60405190808252806020026020018201604052801561425d57816020015b61424a615606565b8152602001906001900390816142425790505b5090506000805b6018548110156143a657856001600160a01b03166018828154811061428b5761428b615ded565b60009182526020909120600460069092020101546001600160a01b031614806142eb5750856001600160a01b0316601882815481106142cc576142cc615ded565b60009182526020909120600560069092020101546001600160a01b0316145b15614394576018818154811061430357614303615ded565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152835184908490811061437a5761437a615ded565b6020026020010181905250818061439090615dd4565b9250505b8061439e81615dd4565b915050614264565b5090949350505050565b60185460609083106144045760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610e73565b60006144108385615dae565b60185490915081111561442257506018545b600061442e8583615dc1565b6001600160401b0381111561444557614445615e55565b60405190808252806020026020018201604052801561447e57816020015b61446b615606565b8152602001906001900390816144635790505b509050845b82811015613160576018818154811061449e5761449e615ded565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a08201528261450c8884615dc1565b8151811061451c5761451c615ded565b6020026020010181905250808061453290615dd4565b915050614483565b61454261536c565b336000908152600e6020526040902080546145955760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610e73565b816145da5760405162461bcd60e51b8152602060048201526015602482015274139bc81cdd185ad94812511cc81c1c9bdd9a591959605a1b6044820152606401610e73565b60005b828110156147b85760008484838181106145f9576145f9615ded565b9050602002013590506000805b845481101561476357600085828154811061462357614623615ded565b9060005260206000209060040201905083816000015414801561464a575060008160010154115b156147505780600201544210156146925760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610e73565b60018101805460038301546000909255906001600160a01b03167355d398326f99059ff775485246999027b319795581146146f5576001600160a01b0381166000908152600a6020526040812080548492906146ef908490615dc1565b90915550505b6147096001600160a01b03821633846153b8565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a260019450505050614763565b508061475b81615dd4565b915050614606565b50806147a35760405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610e73565b505080806147b090615dd4565b9150506145dd565b505061191d6001600080516020615f1783398151915255565b6147d961536c565b33600090815260026020526040902054811061482f5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e73565b33600090815260026020526040812080548390811061485057614850615ded565b90600052602060002090600902019050600061486c3384610d06565b905081600401548110156148b95760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e73565b60008260040154826148cb9190615dc1565b9050600081116148ed5760405162461bcd60e51b8152600401610e7390615e03565b808360040160008282546149019190615dae565b9091555050336000908152600e602052604090819020815160808101909252908061492f87620f4240615dae565b8152602001838152602001600754426149489190615dae565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613972565b6001600160a01b0381166000908152600c6020908152604080832054600d909252822054600f546060938493909290918390614a2c908390615dc1565b905080600003614a5d575050604080516000808252602082018181528284019093529095509093509150613fd19050565b806001600160401b03811115614a7557614a75615e55565b604051908082528060200260200182016040528015614a9e578160200160208202803683370190505b509550806001600160401b03811115614ab957614ab9615e55565b604051908082528060200260200182016040528015614ae2578160200160208202803683370190505b50945060005b81811015614bbe576000614afc8285615dae565b905080888381518110614b1157614b11615ded565b60209081029190910101528415614b8a576000818152600b602052604081206003015461271090614b429088615d75565b614b4c9190615d8c565b905080888481518110614b6157614b61615ded565b6020908102919091010152614b768188615dae565b9650614b828187615dc1565b955050614bab565b6000878381518110614b9e57614b9e615ded565b6020026020010181815250505b5080614bb681615dd4565b915050614ae8565b505050509193909250565b614bd161536c565b6001600160a01b038216600090815260126020908152604080832084845290915290208054614c125760405162461bcd60e51b8152600401610e7390615ed5565b336001600160a01b03841603614c635760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610e73565b8054600182015460038301546000828411614c7f576000614c89565b614c898385615dc1565b9050600084614c9a83612710615d75565b614ca49190615d8c565b90506000612710614cb58380615d75565b614cbf9190615d8c565b90506000612710614cd08389615d75565b614cda9190615d8c565b90506000614ce88289615dc1565b9050614d0a7355d398326f99059ff775485246999027b3197955338d8a6154ee565b336000908152600c602052604081208054839290614d29908490615dae565b925050819055508060106000828254614d429190615dae565b90915550506001600160a01b038b1660009081526015602052604081208054899290614d6f908490615dae565b9250508190555060186040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601260008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601760008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601680549050614f1e9190615dc1565b9050808214614fdf57600060168281548110614f3c57614f3c615ded565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260168054919250829185908110614f8857614f88615ded565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260178252604080822093830151825292909152208290555b6016805480614ff057614ff0615f00565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601760008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f6040516150b3929190918252602082015260400190565b60405180910390a3505050505050505050505061191d6001600080516020615f1783398151915255565b3360009081526001602052604090205460ff1661510c5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b0382166151325760405162461bcd60e51b8152600401610e7390615e84565b600081116151525760405162461bcd60e51b8152600401610e7390615ead565b6001600160a01b0382166000908152600c6020526040902054601054829161517991615dc1565b6151839190615dae565b6010556001600160a01b0382166000818152600c602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839906151d39084815260200190565b60405180910390a25050565b336000908152601260209081526040808320858452909152902080546152175760405162461bcd60e51b8152600401610e7390615ed5565b60028101546001600160a01b031633146152645760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e73565b600082116152a95760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e73565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b3360009081526020819052604090205460ff1661531f5760405162461bcd60e51b8152600401610e7390615e2d565b6001600160a01b0381166153455760405162461bcd60e51b8152600401610e7390615e84565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600080516020615f1783398151915280546001190161539e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615f1783398151915255565b6040516001600160a01b0383811660248301526044820183905261541791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061552d565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e38565b61544d61559e565b610ffd6155c3565b6000821580615462575084155b1561546f575060006154e5565b60008561547e88612710615d75565b6154889190615d8c565b905060008461549987612710615d75565b6154a39190615d8c565b90508082116154b7576000925050506154e5565b60006154c38284615dc1565b905060006127106154d48784615d75565b6154de9190615d8c565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526155279186918216906323b872dd906084016153e5565b50505050565b600080602060008451602086016000885af180615550576040513d6000823e3d81fd5b50506000513d91508115615568578060011415615575565b6001600160a01b0384163b155b1561552757604051635274afe760e01b81526001600160a01b0385166004820152602401610e73565b6155a66155cb565b610ffd57604051631afcd79f60e31b815260040160405180910390fd5b6153a461559e565b60006155d561541c565b54600160401b900460ff16919050565b5080546000825560020290600052602060002090810190611756919061564e565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b80821115615669576000808255600182015560020161564f565b5090565b80356001600160a01b038116811461568457600080fd5b919050565b60006020828403121561569b57600080fd5b6156a48261566d565b9392505050565b600080604083850312156156be57600080fd5b6156c78361566d565b946020939093013593505050565b6000602082840312156156e757600080fd5b5035919050565b60008083601f84011261570057600080fd5b5081356001600160401b0381111561571757600080fd5b6020830191508360208260051b8501011115613f7257600080fd5b6000806020838503121561574557600080fd5b82356001600160401b0381111561575b57600080fd5b615767858286016156ee565b90969095509350505050565b600081518084526020808501945080840160005b838110156157a357815187529582019590820190600101615787565b509495945050505050565b6060815260006157c16060830186615773565b82810360208401526157d38186615773565b915050826040830152949350505050565b600080600080604085870312156157fa57600080fd5b84356001600160401b038082111561581157600080fd5b61581d888389016156ee565b9096509450602087013591508082111561583657600080fd5b50615843878288016156ee565b95989497509550505050565b6000806040838503121561586257600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b838110156158b45781516001600160a01b03168552938201939082019060010161588f565b5050858303818701526158c78389615773565b868103604088015287518082528289019450908201925060005b8181101561592b5761591b84865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b93820193928501926001016158e1565b50919998505050505050505050565b6000806040838503121561594d57600080fd5b6159568361566d565b91506159646020840161566d565b90509250929050565b600080600080600080600080610100898b03121561598a57600080fd5b6159938961566d565b97506020890135965060408901359550606089013594506159b660808a0161566d565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b82811015615a795781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b03169086015261010080820151151590860152610120908101519085015261014090930192908501906001016159f5565b5091979650505050505050565b600080600060608486031215615a9b57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215615acb57600080fd5b615ad48761566d565b9550602087013594506040870135935060608701359250615af76080880161566d565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015615b7757615b6483855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a09290920191600101615b26565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610e38565b8151815260208083015190820152604080830151908201526060808301516001600160a01b03169082015260808101610e38565b600080600060608486031215615c0057600080fd5b615c098461566d565b95602085013595506040909401359392505050565b60a08101610e38828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615c6a6040830185615773565b82810360208401526154e58185615773565b6020808252825182820181905260009190848201906040850190845b81811015615b7757615cd28385518051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b9284019260809290920191600101615c98565b602080825282518282018190526000919060409081850190868401855b82811015615a795781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615d02565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e3857610e38615d5f565b600082615da957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e3857610e38615d5f565b81810381811115610e3857610e38615d5f565b600060018201615de657615de6615d5f565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615e7d57600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212205268736fc4e35127c702c9b795301e6cd213a26a38542a6075be88463edd2d3f64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} }