[ { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_tvlCap", "type": "uint256" }, { "internalType": "uint16", "name": "_managementFeeCapBPS", "type": "uint16" }, { "internalType": "address", "name": "_treasury", "type": "address" }, { "internalType": "address[]", "name": "_strategists", "type": "address[]" }, { "internalType": "address[]", "name": "_multisigRoles", "type": "address[]" }, { "internalType": "address", "name": "_feeController", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "active", "type": "bool" } ], "name": "EmergencyShutdown", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "InCaseTokensGetStuckCalled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "degradation", "type": "uint256" } ], "name": "LockedProfitDegradationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "feeBPS", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allocBPS", "type": "uint256" } ], "name": "StrategyAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "allocBPS", "type": "uint256" } ], "name": "StrategyAllocBPSUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "feeBPS", "type": "uint256" } ], "name": "StrategyFeeBPSUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "gain", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "loss", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtPaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "gains", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "losses", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allocated", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allocationAdded", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allocBPS", "type": "uint256" } ], "name": "StrategyReported", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" } ], "name": "StrategyRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTvlCap", "type": "uint256" } ], "name": "TvlCapUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "withdrawalQueue", "type": "address[]" } ], "name": "UpdateWithdrawalQueue", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "withdrawMaxLoss", "type": "uint256" } ], "name": "WithdrawMaxLossUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEGRADATION_COEFFICIENT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERCENT_DIVISOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SECONDS_PER_YEAR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_strategy", "type": "address" }, { "internalType": "uint256", "name": "_feeBPS", "type": "uint256" }, { "internalType": "uint256", "name": "_allocBPS", "type": "uint256" } ], "name": "addStrategy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "assetTokenAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "availableCapital", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "balance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "constructionTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyShutdown", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeController", "outputs": [ { "internalType": "contract IFeeController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPricePerFullShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "inCaseTokensGetStuck", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "injectTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastReport", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lockedProfit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lockedProfitDegradation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managementFeeCapBPS", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "maxAssets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "maxAssets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeTvlCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "_roi", "type": "int256" }, { "internalType": "uint256", "name": "_repayment", "type": "uint256" } ], "name": "report", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_strategy", "type": "address" } ], "name": "revokeStrategy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_active", "type": "bool" } ], "name": "setEmergencyShutdown", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "degradation", "type": "uint256" } ], "name": "setLockedProfitDegradation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_withdrawalQueue", "type": "address[]" } ], "name": "setWithdrawalQueue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "strategies", "outputs": [ { "internalType": "uint256", "name": "activation", "type": "uint256" }, { "internalType": "uint256", "name": "feeBPS", "type": "uint256" }, { "internalType": "uint256", "name": "allocBPS", "type": "uint256" }, { "internalType": "uint256", "name": "allocated", "type": "uint256" }, { "internalType": "uint256", "name": "gains", "type": "uint256" }, { "internalType": "uint256", "name": "losses", "type": "uint256" }, { "internalType": "uint256", "name": "lastReport", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "contract IERC20Metadata", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAllocBPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAllocated", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "totalManagedAssets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalIdle", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tvlCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_strategy", "type": "address" }, { "internalType": "uint256", "name": "_allocBPS", "type": "uint256" } ], "name": "updateStrategyAllocBPS", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_strategy", "type": "address" }, { "internalType": "uint256", "name": "_feeBPS", "type": "uint256" } ], "name": "updateStrategyFeeBPS", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "updateTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newTvlCap", "type": "uint256" } ], "name": "updateTvlCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_withdrawMaxLoss", "type": "uint256" } ], "name": "updateWithdrawMaxLoss", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawMaxLoss", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "withdrawalQueue", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
61010060405260016010553480156200001757600080fd5b5060405162005147380380620051478339810160408190526200003a9162000547565b88888888888888888887876003620000538382620006e6565b506004620000628282620006e6565b50506001600755506001600160a01b0389811660e0524260c0819052600e55600a879055601380546001600160a01b031916918616919091179055620000ac61ffff861662000209565b61ffff8516608052620f4240620000cd670de0b6b3a7640000602e620007b2565b620000d99190620007d8565b6011556001600160a01b03811660a052825160005b818110156200014e57620001457fb17d0a42cc710456bf9c3efb785dcd0cb93a0ac358113307b5c64b285b516b5c868381518110620001315762000131620007fb565b60200260200101516200026e60201b60201c565b600101620000ee565b506200015c6000336200026e565b6200017a6000801b84600081518110620001315762000131620007fb565b620001b57fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4284600181518110620001315762000131620007fb565b620001f07f8b5b16d04624687fcf0d0228f19993c9157c1ed07b41d8d430fd9100eb099fe884600281518110620001315762000131620007fb565b5050505050505050505050505050505050505062000811565b6127108111156200026b5760405162461bcd60e51b815260206004820152602260248201527f4665652063616e6e6f74206578636565642031305f3030302042505328313030604482015261252960f01b606482015260840160405180910390fd5b50565b6200027a828262000299565b60008281526006602052604090206200029490826200033e565b505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166200033a5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002f93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000355836001600160a01b0384166200035e565b90505b92915050565b6000818152600183016020526040812054620003a75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000358565b50600062000358565b80516001600160a01b0381168114620003c857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200040e576200040e620003cd565b604052919050565b600082601f8301126200042857600080fd5b81516001600160401b03811115620004445762000444620003cd565b60206200045a601f8301601f19168201620003e3565b82815285828487010111156200046f57600080fd5b60005b838110156200048f57858101830151828201840152820162000472565b506000928101909101919091529392505050565b805161ffff81168114620003c857600080fd5b600082601f830112620004c857600080fd5b815160206001600160401b03821115620004e657620004e6620003cd565b8160051b620004f7828201620003e3565b92835284810182019282810190878511156200051257600080fd5b83870192505b848310156200053c576200052c83620003b0565b8252918301919083019062000518565b979650505050505050565b60008060008060008060008060006101208a8c0312156200056757600080fd5b620005728a620003b0565b60208b01519099506001600160401b03808211156200059057600080fd5b6200059e8d838e0162000416565b995060408c0151915080821115620005b557600080fd5b620005c38d838e0162000416565b985060608c01519750620005da60808d01620004a3565b9650620005ea60a08d01620003b0565b955060c08c01519150808211156200060157600080fd5b6200060f8d838e01620004b6565b945060e08c01519150808211156200062657600080fd5b50620006358c828d01620004b6565b925050620006476101008b01620003b0565b90509295985092959850929598565b600181811c908216806200066b57607f821691505b6020821081036200068c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000294576000816000526020600020601f850160051c81016020861015620006bd5750805b601f850160051c820191505b81811015620006de57828155600101620006c9565b505050505050565b81516001600160401b03811115620007025762000702620003cd565b6200071a8162000713845462000656565b8462000692565b602080601f831160018114620007525760008415620007395750858301515b600019600386901b1c1916600185901b178555620006de565b600085815260208120601f198616915b82811015620007835788860151825594840194600190910190840162000762565b5085821015620007a25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200035857634e487b7160e01b600052601160045260246000fd5b600082620007f657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e051614893620008b46000396000818161061c01528181610a4b01528181610eb301528181610f430152818161135a015281816113c201528181612007015281816121060152818161241001528181613096015281816131a40152818161338a01526135c301526000610a110152600081816107810152612a670152600081816104b001528181612aeb0152612b1c01526148936000f3fe608060405234801561001057600080fd5b50600436106104535760003560e01c806370a0823111610241578063ba0876521161013b578063d547741f116100c3578063e6a69ab811610087578063e6a69ab8146109ee578063ef8b30f7146109f9578063f06c561014610a0c578063fa34d61114610a33578063fc0c546a14610a4657600080fd5b8063d547741f1461099a578063d905777e146109ad578063dd62ed3e146109c0578063de5f6268146109d3578063def68a9c146109db57600080fd5b8063c6e6f5921161010a578063c6e6f5921461093f578063c822adda14610952578063ca15c87314610965578063ce96cb7714610978578063d250f0881461098b57600080fd5b8063ba087652146108fd578063bb994d4814610910578063c3535b5214610923578063c63d75b61461092c57600080fd5b806395d89b41116101c9578063ac579b771161018d578063ac579b77146108a9578063b3d7f6b9146108bc578063b460af94146108cf578063b69ef8a8146108e2578063b6b55f25146108ea57600080fd5b806395d89b411461086a5780639aa7df9414610872578063a217fddf1461087b578063a457c2d714610883578063a9059cbb1461089657600080fd5b80637f51bb1f116102105780637f51bb1f14610816578063853828b6146108295780639010d07c1461083157806391d148541461084457806394bf804d1461085757600080fd5b806370a08231146107bf57806377c7b8fc146107e85780637a550365146107f05780637d6205be1461080357600080fd5b80633403c2fc1161035257806345f7f249116102da5780635f3d3a0e1161029e5780635f3d3a0e1461075657806361d027b3146107695780636999b3771461077c5780636e553f65146107a35780636f9c94a8146107b657600080fd5b806345f7f24914610715578063462f82f41461071e578063483b6031146107315780634870dd9a1461073a5780634cdad5061461074357600080fd5b806339ebf8231161032157806339ebf823146106675780633f23fa1a146106e7578063402d267d146106f0578063422327161461070357806344b813961461070c57600080fd5b80633403c2fc146105fa57806336568abe1461060757806338d52e0f1461061a578063395093511461065457600080fd5b806314c64402116103e057806329b9d694116103a457806329b9d6941461059f5780632b3b0693146105a75780632e1a7d4d146105ba5780632f2ff15d146105cd578063313ce567146105e057600080fd5b806314c644021461054657806318160ddd14610559578063199cb7d81461056157806323b872dd14610569578063248a9ca31461057c57600080fd5b806306fdde031161042757806306fdde03146104e557806307a2d13a146104fa578063095ea7b31461050d5780630a28a477146105205780630f3d249d1461053357600080fd5b8062272d811461045857806301e1d1141461046d57806301ffc9a714610488578063037f8798146104ab575b600080fd5b61046b610466366004614112565b610a6d565b005b610475610ac0565b6040519081526020015b60405180910390f35b61049b61049636600461412b565b610acf565b604051901515815260200161047f565b6104d27f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161047f565b6104ed610afa565b60405161047f9190614179565b610475610508366004614112565b610b8c565b61049b61051b3660046141d1565b610bc1565b61047561052e366004614112565b610bd9565b6104756105413660046141fd565b610c25565b61046b61055436600461422d565b61111e565b600254610475565b6104756111aa565b61049b61057736600461424a565b6112f8565b61047561058a366004614112565b60009081526005602052604090206001015490565b61046b61131e565b61046b6105b5366004614112565b61132b565b61046b6105c8366004614112565b611385565b61046b6105db36600461428b565b611394565b6105e86113be565b60405160ff909116815260200161047f565b600f5461049b9060ff1681565b61046b61061536600461428b565b611442565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161047f565b61049b6106623660046141d1565b6114bc565b6106b26106753660046142bb565b6008602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e00161047f565b610475600a5481565b6104756106fe3660046142bb565b6114de565b61047560115481565b61047560125481565b610475600d5481565b61046b61072c366004614112565b611531565b61047560105481565b61047561271081565b610475610751366004614112565b6115d5565b61046b6107643660046141d1565b6115e0565b60135461063c906001600160a01b031681565b61063c7f000000000000000000000000000000000000000000000000000000000000000081565b6104756107b136600461428b565b61175a565b610475600c5481565b6104756107cd3660046142bb565b6001600160a01b031660009081526020819052604090205490565b610475611766565b61046b6107fe366004614112565b6117bb565b61046b6108113660046141d1565b61186b565b61046b6108243660046142bb565b61191e565b61046b611992565b61063c61083f3660046141fd565b6119ac565b61049b61085236600461428b565b6119c4565b61047561086536600461428b565b6119ef565b6104ed611a0d565b610475600b5481565b610475600081565b61049b6108913660046141d1565b611a1c565b61049b6108a43660046141d1565b611aa2565b61046b6108b73660046142ee565b611ab0565b6104756108ca366004614112565b611c21565b6104756108dd3660046143b3565b611c54565b610475611cdf565b61046b6108f8366004614112565b611cf1565b61047561090b3660046143b3565b611cfb565b61046b61091e3660046142bb565b611db9565b610475600e5481565b61047561093a3660046142bb565b611e92565b61047561094d366004614112565b611ee8565b61063c610960366004614112565b611f1d565b610475610973366004614112565b611f47565b6104756109863660046142bb565b611f5e565b610475670de0b6b3a764000081565b61046b6109a836600461428b565b611f80565b6104756109bb3660046142bb565b611fa5565b6104756109ce3660046143f5565b611fc3565b61046b611fee565b61046b6109e93660046142bb565b612080565b6104756301e187e081565b610475610a07366004614112565b6121de565b6104757f000000000000000000000000000000000000000000000000000000000000000081565b61046b610a41366004614423565b6121e9565b61063c7f000000000000000000000000000000000000000000000000000000000000000081565b610a8460008051602061483e8339815191526125fc565b600a8190556040518181527f2923cecec41b7140eaf657a035af4abb23ed61d16b1fc20a986838eb3ad99bd0906020015b60405180910390a150565b6000610aca611cdf565b905090565b60006001600160e01b03198216635a05180f60e01b1480610af45750610af4826126d3565b92915050565b606060038054610b0990614458565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3590614458565b8015610b825780601f10610b5757610100808354040283529160200191610b82565b820191906000526020600020905b815481529060010190602001808311610b6557829003601f168201915b5050505050905090565b6000610b9760025490565b600003610ba2575090565b600254610bad612708565b610bb790846144a8565b610af491906144d5565b600033610bcf818585612724565b5060019392505050565b6000610be460025490565b1580610bf55750610bf3612708565b155b15610c0257506000919050565b610af4610c0e60025490565b610c1890846144a8565b610c20612708565b612848565b6000610c8660405180610140016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b3380825260009081526008602052604081208054909103610ce65760405162461bcd60e51b8152602060048201526015602482015274556e617574686f72697a656420737472617465677960581b60448201526064015b60405180910390fd5b6000851215610d0f57610cf8856144e9565b602083018190528251610d0a916128ba565b610d3c565b6000851315610d3c5760408201859052600481018054869190600090610d36908490614505565b90915550505b610d4e82600001518360400151612a01565b6060830152610d5b6111aa565b6080830181905260001315610ded578160800151610d78906144e9565b60a08301819052610d899085612c53565b60e0830181905215610de8578160e00151816003016000828254610dad9190614518565b909155505060e0820151600d8054600090610dc9908490614518565b909155505060e082015160a083018051610de4908390614518565b9052505b610e3c565b600082608001511315610e3c57608082015160c08301819052600382018054600090610e1a908490614505565b909155505060c0820151600d8054600090610e36908490614505565b90915550505b8160e001518260400151610e509190614505565b610100830181905260c08301511115610edf578161010001518260c00151610e789190614518565b600b6000828254610e899190614518565b9091555050815161010083015160c0840151610eda9291610ea991614518565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612c69565b610f6b565b8161010001518260c001511015610f6b578160c00151826101000151610f059190614518565b600b6000828254610f169190614505565b9091555050815160c0830151610100840151610f6b92913091610f399190614518565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612ccc565b60008260400151610f7a612d0a565b610f849190614505565b90508260600151811115610fac576060830151610fa19082614518565b610120840152610fb5565b60006101208401525b82602001518361012001511115610fe3578260200151836101200151610fdb9190614518565b601255610fe9565b60006012555b4260068301819055600e55825160408085015160208087015160e080890151600489015460058a015460038b015460c0808e015160028e01548b519a8b52988a0197909752888a01949094526060880192909252608087015260a086015284019190915282015290516001600160a01b03909216917f67f96d2854a335a4cadb49f84fd3ca6f990744ddb3feceeb4b349d2d53d32ad3918190036101000190a26002820154158061109c5750600f5460ff165b156111115782600001516001600160a01b031663722713f76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611107919061452b565b9350505050610af4565b505060a001519392505050565b80156111525761114d7f8b5b16d04624687fcf0d0228f19993c9157c1ed07b41d8d430fd9100eb099fe86125fc565b611169565b61116960008051602061483e8339815191526125fc565b600f805460ff19168215159081179091556040519081527fba40372a3a724dca3c57156128ef1e896724b65b37a17f190b1ad5de68f3a4f390602001610ab5565b600c54600090339015806111c05750600f5460ff165b156111f0576001600160a01b0381166000908152600860205260409020600301546111ea906144e9565b91505090565b60006127106111fd611cdf565b6001600160a01b03841660009081526008602052604090206002015461122391906144a8565b61122d91906144d5565b6001600160a01b0383166000908152600860205260409020600301549091508181111561126f5761125e8282614518565b611267906144e9565b935050505090565b818110156112ee576000612710611284611cdf565b600c5461129191906144a8565b61129b91906144d5565b600d549091508181106112b45760009550505050505090565b60006112c08486614518565b90506112d5816112d08486614518565b612c53565b90506112e381600b54612c53565b979650505050505050565b6000935050505090565b600033611306858285612d70565b611311858585612de4565b60019150505b9392505050565b611329600019610a6d565b565b61133560006125fc565b80600b60008282546113479190614505565b9091555061138290506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612ccc565b50565b611390813333612f88565b5050565b6000828152600560205260409020600101546113af81613407565b6113b98383613411565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190614544565b6001600160a01b03811633146114b25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610cdd565b6113908282613433565b600033610bcf8185856114cf8383611fc3565b6114d99190614505565b612724565b600f5460009060ff16806114fb5750600a546114f8611cdf565b10155b1561150857506000919050565b600019600a540361151c5750600019919050565b611524611cdf565b600a54610af49190614518565b61155a7fb17d0a42cc710456bf9c3efb785dcd0cb93a0ac358113307b5c64b285b516b5c6125fc565b6127108111156115a05760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964204250532076616c756560781b6044820152606401610cdd565b60108190556040518181527f23e1382e62459214e4b3240fe95817b36865752f45f7569957018fe5a105f7b590602001610ab5565b6000610af482610b8c565b6001600160a01b03821660009081526008602052604081205490036116175760405162461bcd60e51b8152600401610cdd90614567565b6001600160a01b0382166000908152600860205260409020600201548015611667576116627fb17d0a42cc710456bf9c3efb785dcd0cb93a0ac358113307b5c64b285b516b5c6125fc565b61167e565b61167e60008051602061483e8339815191526125fc565b80600c60008282546116909190614518565b90915550506001600160a01b0383166000908152600860205260408120600201839055600c80548492906116c5908490614505565b9091555050600c5461271010156117125760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964204250532076616c756560781b6044820152606401610cdd565b826001600160a01b03167f437afd93b1abdad7ff741b69dde7efdd15dba7fb6999ba3471db17fd029dced98360405161174d91815260200190565b60405180910390a2505050565b60006113178383613455565b600061177160025490565b156117a8576002546117816113be565b61178c90600a614682565b611794612708565b61179e91906144a8565b610aca91906144d5565b6117b06113be565b610aca90600a614682565b6117d260008051602061483e8339815191526125fc565b670de0b6b3a76400008111156118365760405162461bcd60e51b8152602060048201526024808201527f4465677261646174696f6e2063616e6e6f74206265206d6f7265207468616e206044820152633130302560e01b6064820152608401610cdd565b60118190556040518181527f056863905a721211fc4dda1d688efc8f120b4b689d2e41da8249cf6eff20069190602001610ab5565b61188260008051602061483e8339815191526125fc565b6001600160a01b03821660009081526008602052604081205490036118b95760405162461bcd60e51b8152600401610cdd90614567565b6118c28161363c565b6001600160a01b03821660008181526008602052604090819020600101839055517f8281ff4064168f20aa9abde7f62b8b72efb10b48e7e838af54dcabff3131474a906119129084815260200190565b60405180910390a25050565b61192860006125fc565b6001600160a01b0381166119705760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610cdd565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152602081905260409020546113829180612f88565b60008281526006602052604081206113179083613699565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006119fa83611c21565b9050611a068183613455565b5092915050565b606060048054610b0990614458565b60003381611a2a8286611fc3565b905083811015611a8a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cdd565b611a978286868403612724565b506001949350505050565b600033610bcf818585612de4565b611ac760008051602061483e8339815191526125fc565b80516000819003611b1a5760405162461bcd60e51b815260206004820152601760248201527f5175657565206d757374206e6f7420626520656d7074790000000000000000006044820152606401610cdd565b611b26600960006140e0565b60005b81811015611be5576000838281518110611b4557611b45614691565b6020908102919091018101516001600160a01b038116600090815260089092526040822080549193509103611b8c5760405162461bcd60e51b8152600401610cdd90614567565b5060098054600180820183556000929092527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b03939093169290921790915501611b29565b507fe159a1b5cb3e0bbe2f0caa53bcf2cd9ea0bc25a8c7b8302b1ac510f29cac8baa82604051611c1591906146a7565b60405180910390a15050565b6000611c2c60025490565b600003611c37575090565b610af4611c42612708565b611c4c90846144a8565b600254612848565b6000611c5f84610bd9565b9050336001600160a01b03831614611c7c57611c7c823383612d70565b83611c88828585612f88565b146113175760405162461bcd60e51b815260206004820152602160248201527f416c6c2061737365747320636f756c64206e6f742062652077697468647261776044820152603760f91b6064820152608401610cdd565b6000600d54600b54610aca9190614505565b6113908133613455565b6001600160a01b03811660008181526020819052604081205490913314611d2757611d27833387612d70565b611d32858585612f88565b91506000611d55846001600160a01b031660009081526020819052604090205490565b611d5f9083614518565b9050858114611db05760405162461bcd60e51b815260206004820181905260248201527f416c6c2073686172657320636f756c64206e6f742062652072656465656d65646044820152606401610cdd565b50509392505050565b336001600160a01b03821614611df257611df27f8b5b16d04624687fcf0d0228f19993c9157c1ed07b41d8d430fd9100eb099fe86125fc565b6001600160a01b0381166000908152600860205260408120600201549003611e175750565b6001600160a01b038116600090815260086020526040812060020154600c805491929091611e46908490614518565b90915550506001600160a01b038116600081815260086020526040808220600201829055517f4201c688d84c01154d321afa0c72f1bffe9eef53005c9de9d035074e71e9b32a9190a250565b600f5460009060ff1680611eaf5750600a54611eac611cdf565b10155b15611ebc57506000919050565b600019600a5403611ed05750600019919050565b610af4611edb611cdf565b600a5461094d9190614518565b6000611ef360025490565b1580611f045750611f02612708565b155b15611f0d575090565b611f15612708565b600254610bad565b60098181548110611f2d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000818152600660205260408120610af4906136a5565b6001600160a01b038116600090815260208190526040812054610af490610b8c565b600082815260056020526040902060010154611f9b81613407565b6113b98383613433565b6001600160a01b038116600090815260208190526040812054610af4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6040516370a0823160e01b8152336004820152611382907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a919061452b565b33613455565b61209760008051602061483e8339815191526125fc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156120de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612102919061452b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361214d57600b5461214a9082614518565b90505b8060000361218b5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610cdd565b61219f6001600160a01b0383163383612c69565b604080516001600160a01b0384168152602081018390527f741ee845808813887c0b0d54aa20a3d0f670bebce7b6a1face577afbc00d1d6c9101611c15565b6000610af482611ee8565b6121f360006125fc565b600f5460ff161561225c5760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f742061646420737472617465677920647572696e6720656d65726760448201526c32b731bc9039b43aba3237bbb760991b6064820152608401610cdd565b6001600160a01b0383166122825760405162461bcd60e51b8152600401610cdd90614567565b6001600160a01b038316600090815260086020526040902054156122e15760405162461bcd60e51b815260206004820152601660248201527514dd1c985d1959de48185b1c9958591e48185919195960521b6044820152606401610cdd565b826001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234391906146f4565b6001600160a01b0316306001600160a01b0316146123a35760405162461bcd60e51b815260206004820152601f60248201527f53747261746567792773207661756c7420646f6573206e6f74206d61746368006044820152606401610cdd565b826001600160a01b0316631f1fcd516040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240591906146f4565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146124855760405162461bcd60e51b815260206004820152601e60248201527f537472617465677927732077616e7420646f6573206e6f74206d6174636800006044820152606401610cdd565b61248e8261363c565b612710600c548261249f9190614505565b11156124e65760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420616c6c6f634250532076616c756560501b6044820152606401610cdd565b6040805160e0810182524280825260208083018681528385018681526000606086018181526080870182815260a0880183815260c089019788526001600160a01b038d1684526008909652978220965187559251600187015590516002860155905160038501559351600484015551600583015551600690910155600c8054839290612573908490614505565b9091555050600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b03851690811790915560408051848152602081018490527f45bb3eed5cd098efb0a286413fb1f3c11841762610cefbabae6a772963e916ba910161174d565b60006126066136af565b8051909150600080805b8381101561267f5781158015612644575061264485828151811061263657612636614691565b6020026020010151336137ab565b1561264e57600191505b84818151811061266057612660614691565b60200260200101518603612677576001925061267f565b600101612610565b5081801561268a5750805b6126cc5760405162461bcd60e51b8152602060048201526013602482015272556e617574686f72697a65642061636365737360681b6044820152606401610cdd565b5050505050565b60006001600160e01b03198216637965db0b60e01b1480610af457506301ffc9a760e01b6001600160e01b0319831614610af4565b6000612712612d0a565b61271a611cdf565b610aca9190614518565b6001600160a01b0383166127865760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cdd565b6001600160a01b0382166127e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cdd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008160000361288a5760405162461bcd60e51b815260206004820152600d60248201526c04469766973696f6e206279203609c1b6044820152606401610cdd565b600061289683856144d5565b90506128a28385614711565b1561131757806128b181614725565b95945050505050565b6001600160a01b038216600090815260086020526040902060038101548083111561293f5760405162461bcd60e51b815260206004820152602f60248201527f5374726174656779206c6f73732063616e6e6f7420626520677265617465722060448201526e3a3430b71030b63637b1b0ba34b7b760891b6064820152608401610cdd565b600c54156129ae576000612971600d54600c548661295d91906144a8565b61296791906144d5565b8460020154612c53565b905080156129ac578083600201600082825461298d9190614518565b9250508190555080600c60008282546129a69190614518565b90915550505b505b828260050160008282546129c29190614505565b92505081905550828260030160008282546129dd9190614518565b9250508190555082600d60008282546129f69190614518565b909155505050505050565b6001600160a01b038216600090815260086020526040812060010154819061271090612a2d90856144a8565b612a3791906144d5565b6001600160a01b03851660009081526008602052604081206006015491925090612a619042614518565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ac80a8be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae7919061473e565b90507f000000000000000000000000000000000000000000000000000000000000000061ffff168161ffff161115612b3c57507f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b0386166000908152600860205260408120600301546301e187e0906127109061ffff851690612b739087906144a8565b612b7d91906144a8565b612b8791906144d5565b612b9191906144d5565b9050600080612b9f60025490565b90508515612be25760008115612bd057612bb7612708565b612bc183896144a8565b612bcb91906144d5565b612bd2565b865b9050612bde8184614505565b9250505b8215612c235760008115612c1157612bf8612708565b612c0283866144a8565b612c0c91906144d5565b612c13565b835b9050612c1f8184614505565b9250505b601354612c39906001600160a01b0316836137b7565b6000612c458488614505565b9a9950505050505050505050565b6000818310612c625781611317565b5090919050565b6040516001600160a01b0383166024820152604481018290526113b990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613876565b6040516001600160a01b0380851660248301528316604482015260648101829052612d049085906323b872dd60e01b90608401612c95565b50505050565b600080601154600e5442612d1e9190614518565b612d2891906144a8565b9050670de0b6b3a7640000811015612d6857670de0b6b3a764000060125482612d5191906144a8565b612d5b91906144d5565b6012546111ea9190614518565b600091505090565b6000612d7c8484611fc3565b90506000198114612d045781811015612dd75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610cdd565b612d048484848403612724565b6001600160a01b038316612e485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cdd565b6001600160a01b038216612eaa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cdd565b6001600160a01b03831660009081526020819052604090205481811015612f225760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cdd565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3612d04565b6000612f9261394b565b83600003612fd35760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610cdd565b60025484612fdf612708565b612fe991906144a8565b612ff391906144d5565b600b549091508082111561335b57600954600090815b818110156132a757838511156132a75760006009828154811061302e5761302e614691565b60009182526020808320909101546001600160a01b0316808352600890915260408220600301549092509081900361306757505061329f565b60006130738789614518565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156130dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613101919061452b565b90506000846001600160a01b0316632e1a7d4d61311e8587612c53565b6040518263ffffffff1660e01b815260040161313c91815260200190565b6020604051808303816000875af115801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f919061452b565b6040516370a0823160e01b815230600482015290915060009083906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156131eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320f919061452b565b6132199190614518565b9050613225818b614505565b9950811561324f57613237828c614518565b9a50613243828a614505565b985061324f86836128ba565b6001600160a01b0386166000908152600860205260408120600301805483929061327a908490614518565b9250508190555080600d60008282546132939190614518565b90915550505050505050505b600101613009565b50600b839055828411156132e4578293506132c0612708565b6002546132cd8487614505565b6132d791906144a8565b6132e191906144d5565b96505b601054612710906132f58487614505565b6132ff91906144a8565b61330991906144d5565b8211156133585760405162461bcd60e51b815260206004820152601e60248201527f5769746864726177206c6f7373206578636565647320736c69707061676500006044820152606401610cdd565b50505b61336583866139a4565b81600b60008282546133779190614518565b909155506133b190506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168584612c69565b60408051838152602081018790526001600160a01b03808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4506113176001600755565b6113828133613ad6565b61341b8282613b2f565b60008281526006602052604090206113b99082613bb5565b61343d8282613bca565b60008281526006602052604090206113b99082613c31565b600061345f61394b565b600f5460ff16156134c35760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f74206465706f73697420647572696e6720656d657267656e63792060448201526739b43aba3237bbb760c11b6064820152608401610cdd565b826000036135045760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610cdd565b600a5483613510611cdf565b61351a9190614505565b11156135585760405162461bcd60e51b815260206004820152600d60248201526c15985d5b1d081a5cc8199d5b1b609a1b6044820152606401610cdd565b600061356360025490565b90508060000361357557839150613594565b61357d612708565b61358782866144a8565b61359191906144d5565b91505b61359e83836137b7565b83600b60008282546135b09190614505565b909155506135eb90506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087612ccc565b60408051858152602081018490526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a350610af46001600755565b6127108111156113825760405162461bcd60e51b815260206004820152602260248201527f4665652063616e6e6f74206578636565642031305f3030302042505328313030604482015261252960f01b6064820152608401610cdd565b60006113178383613c46565b6000610af4825490565b60408051600580825260c08201909252606091600091906020820160a0803683370190505090506000801b816000815181106136ed576136ed614691565b60200260200101818152505060008051602061483e8339815191528160018151811061371b5761371b614691565b6020026020010181815250507f8b5b16d04624687fcf0d0228f19993c9157c1ed07b41d8d430fd9100eb099fe88160028151811061375b5761375b614691565b6020026020010181815250507fb17d0a42cc710456bf9c3efb785dcd0cb93a0ac358113307b5c64b285b516b5c8160038151811061379b5761379b614691565b6020908102919091010152919050565b600061131783836119c4565b6001600160a01b03821661380d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cdd565b806002600082825461381f9190614505565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006138cb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613c709092919063ffffffff16565b90508051600014806138ec5750808060200190518101906138ec9190614762565b6113b95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610cdd565b60026007540361399d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610cdd565b6002600755565b6001600160a01b038216613a045760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cdd565b6001600160a01b03821660009081526020819052604090205481811015613a785760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cdd565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b613ae082826119c4565b61139057613aed81613c87565b613af8836020613c99565b604051602001613b0992919061477f565b60408051601f198184030181529082905262461bcd60e51b8252610cdd91600401614179565b613b3982826119c4565b6113905760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613b713390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611317836001600160a01b038416613e35565b613bd482826119c4565b156113905760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611317836001600160a01b038416613e84565b6000826000018281548110613c5d57613c5d614691565b9060005260206000200154905092915050565b6060613c7f8484600085613f77565b949350505050565b6060610af46001600160a01b03831660145b60606000613ca88360026144a8565b613cb3906002614505565b67ffffffffffffffff811115613ccb57613ccb6142d8565b6040519080825280601f01601f191660200182016040528015613cf5576020820181803683370190505b509050600360fc1b81600081518110613d1057613d10614691565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613d3f57613d3f614691565b60200101906001600160f81b031916908160001a9053506000613d638460026144a8565b613d6e906001614505565b90505b6001811115613de6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613da257613da2614691565b1a60f81b828281518110613db857613db8614691565b60200101906001600160f81b031916908160001a90535060049490941c93613ddf816147f4565b9050613d71565b5083156113175760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cdd565b6000818152600183016020526040812054613e7c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610af4565b506000610af4565b60008181526001830160205260408120548015613f6d576000613ea8600183614518565b8554909150600090613ebc90600190614518565b9050818114613f21576000866000018281548110613edc57613edc614691565b9060005260206000200154905080876000018481548110613eff57613eff614691565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613f3257613f3261480b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610af4565b6000915050610af4565b606082471015613fd85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610cdd565b600080866001600160a01b03168587604051613ff49190614821565b60006040518083038185875af1925050503d8060008114614031576040519150601f19603f3d011682016040523d82523d6000602084013e614036565b606091505b50915091506112e387838387606083156140b15782516000036140aa576001600160a01b0385163b6140aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cdd565b5081613c7f565b613c7f83838151156140c65781518083602001fd5b8060405162461bcd60e51b8152600401610cdd9190614179565b508054600082559060005260206000209081019061138291905b8082111561410e57600081556001016140fa565b5090565b60006020828403121561412457600080fd5b5035919050565b60006020828403121561413d57600080fd5b81356001600160e01b03198116811461131757600080fd5b60005b83811015614170578181015183820152602001614158565b50506000910152565b6020815260008251806020840152614198816040850160208701614155565b601f01601f19169190910160400192915050565b6001600160a01b038116811461138257600080fd5b80356141cc816141ac565b919050565b600080604083850312156141e457600080fd5b82356141ef816141ac565b946020939093013593505050565b6000806040838503121561421057600080fd5b50508035926020909101359150565b801515811461138257600080fd5b60006020828403121561423f57600080fd5b81356113178161421f565b60008060006060848603121561425f57600080fd5b833561426a816141ac565b9250602084013561427a816141ac565b929592945050506040919091013590565b6000806040838503121561429e57600080fd5b8235915060208301356142b0816141ac565b809150509250929050565b6000602082840312156142cd57600080fd5b8135611317816141ac565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561430157600080fd5b823567ffffffffffffffff8082111561431957600080fd5b818501915085601f83011261432d57600080fd5b81358181111561433f5761433f6142d8565b8060051b604051601f19603f83011681018181108582111715614364576143646142d8565b60405291825284820192508381018501918883111561438257600080fd5b938501935b828510156143a757614398856141c1565b84529385019392850192614387565b98975050505050505050565b6000806000606084860312156143c857600080fd5b8335925060208401356143da816141ac565b915060408401356143ea816141ac565b809150509250925092565b6000806040838503121561440857600080fd5b8235614413816141ac565b915060208301356142b0816141ac565b60008060006060848603121561443857600080fd5b8335614443816141ac565b95602085013595506040909401359392505050565b600181811c9082168061446c57607f821691505b60208210810361448c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610af457610af4614492565b634e487b7160e01b600052601260045260246000fd5b6000826144e4576144e46144bf565b500490565b6000600160ff1b82016144fe576144fe614492565b5060000390565b80820180821115610af457610af4614492565b81810381811115610af457610af4614492565b60006020828403121561453d57600080fd5b5051919050565b60006020828403121561455657600080fd5b815160ff8116811461131757600080fd5b60208082526018908201527f496e76616c696420737472617465677920616464726573730000000000000000604082015260600190565b600181815b808511156145d95781600019048211156145bf576145bf614492565b808516156145cc57918102915b93841c93908002906145a3565b509250929050565b6000826145f057506001610af4565b816145fd57506000610af4565b8160018114614613576002811461461d57614639565b6001915050610af4565b60ff84111561462e5761462e614492565b50506001821b610af4565b5060208310610133831016604e8410600b841016171561465c575081810a610af4565b614666838361459e565b806000190482111561467a5761467a614492565b029392505050565b600061131760ff8416836145e1565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156146e85783516001600160a01b0316835292840192918401916001016146c3565b50909695505050505050565b60006020828403121561470657600080fd5b8151611317816141ac565b600082614720576147206144bf565b500690565b60006001820161473757614737614492565b5060010190565b60006020828403121561475057600080fd5b815161ffff8116811461131757600080fd5b60006020828403121561477457600080fd5b81516113178161421f565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516147b7816017850160208801614155565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516147e8816028840160208801614155565b01602801949350505050565b60008161480357614803614492565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251614833818460208701614155565b919091019291505056fedf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42a26469706673582212203b37d4059c5938391b0ad108dabb1db400425a968e6c8cb3ac1391740cd2c5e764736f6c63430008170033000000000000000000000000dfc7c877a950e49d2610114102175a06c2e3167a00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000788f382d835cb00851b883dad7f30798ae48062200000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000041871302637f507a896b7295c8d6b9ed4d6f490c00000000000000000000000000000000000000000000000000000000000000134d4f44452049726f6e636c6164205661756c7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000769632d4d4f44450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001e71aee6081f62053123140aacc7a06021d7734800000000000000000000000081876677843d00a7d792e1617459ac2e93202576000000000000000000000000c91184a87335abaf0fb75356a94efa57e5852c810000000000000000000000004c3490df15edfa178333445ce568ec6d99b5d71c000000000000000000000000b26cd6633db6b0c9ae919049c1437271ae496d1500000000000000000000000060bc5e0440c867eeb4cbce84bb1123fad2b262b10000000000000000000000000000000000000000000000000000000000000003000000000000000000000000538e46ad781e9b8ce3aae4e1bda68250f72c16d1000000000000000000000000d4d995787d39d70f35e694dc8306d7db863234ac00000000000000000000000064dfd485b4da1af3f2ce1c86cfc3e7bd9093b468
0x000000000000000000000000dfc7c877a950e49d2610114102175a06c2e3167a00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000788f382d835cb00851b883dad7f30798ae48062200000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000041871302637f507a896b7295c8d6b9ed4d6f490c00000000000000000000000000000000000000000000000000000000000000134d4f44452049726f6e636c6164205661756c7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000769632d4d4f44450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001e71aee6081f62053123140aacc7a06021d7734800000000000000000000000081876677843d00a7d792e1617459ac2e93202576000000000000000000000000c91184a87335abaf0fb75356a94efa57e5852c810000000000000000000000004c3490df15edfa178333445ce568ec6d99b5d71c000000000000000000000000b26cd6633db6b0c9ae919049c1437271ae496d1500000000000000000000000060bc5e0440c867eeb4cbce84bb1123fad2b262b10000000000000000000000000000000000000000000000000000000000000003000000000000000000000000538e46ad781e9b8ce3aae4e1bda68250f72c16d1000000000000000000000000d4d995787d39d70f35e694dc8306d7db863234ac00000000000000000000000064dfd485b4da1af3f2ce1c86cfc3e7bd9093b468
----Decoded View------------Arg [0] : _token (address): 0xDfc7C877a950e49D2610114102175A06C2e3167aArg [1] : _name (string): MODE Ironclad VaultArg [2] : _symbol (string): ic-MODEArg [3] : _tvlCap (uint256): 115792089237316195423570985008687907853269984665640564039457584007913129639935Arg [4] : _managementFeeCapBPS (uint16): 2000Arg [5] : _treasury (address): 0x788F382d835Cb00851b883DAD7f30798AE480622Arg [6] : _strategists (address[]): Arg [7] : _multisigRoles (address[]): Arg [8] : _feeController (address): 0x41871302637F507a896B7295c8d6b9ed4d6F490C
----Encoded View------------Arg [0] : 0x000000000000000000000000dfc7c877a950e49d2610114102175a06c2e3167aArg [1] : 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000134d4f44452049726f6e636c6164205661756c7400000000000000000000000000Arg [2] : 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000769632d4d4f444500000000000000000000000000000000000000000000000000Arg [3] : 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffArg [4] : 0x00000000000000000000000000000000000000000000000000000000000007d0Arg [5] : 0x000000000000000000000000788f382d835cb00851b883dad7f30798ae480622Arg [6] : 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001e71aee6081f62053123140aacc7a06021d7734800000000000000000000000081876677843d00a7d792e1617459ac2e93202576000000000000000000000000c91184a87335abaf0fb75356a94efa57e5852c810000000000000000000000004c3490df15edfa178333445ce568ec6d99b5d71c000000000000000000000000b26cd6633db6b0c9ae919049c1437271ae496d1500000000000000000000000060bc5e0440c867eeb4cbce84bb1123fad2b262b1Arg [7] : 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000538e46ad781e9b8ce3aae4e1bda68250f72c16d1000000000000000000000000d4d995787d39d70f35e694dc8306d7db863234ac00000000000000000000000064dfd485b4da1af3f2ce1c86cfc3e7bd9093b468Arg [8] : 0x00000000000000000000000041871302637f507a896b7295c8d6b9ed4d6f490c