[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_poolRewardToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_swapPairWAVAXJoe", "type": "address" }, { "internalType": "address", "name": "_swapPairToken0", "type": "address" }, { "internalType": "address", "name": "_swapPairToken1", "type": "address" }, { "internalType": "address", "name": "_extraTokenSwapPair", "type": "address" }, { "internalType": "uint256", "name": "pid", "type": "uint256" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "internalType": "uint256", "name": "_minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "_adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_reinvestRewardBips", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AllowDepositor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "DepositsEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTotalDeposits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalSupply", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemoveDepositor", "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": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateAdminFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateDevAddr", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateDevFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMaxTokensToDepositWithoutReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMinTokensToReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateReinvestReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSITS_ENABLED", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEV_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS_TO_DEPOSIT_WITHOUT_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_TOKENS_TO_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REINVEST_REWARD_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "allowDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedDepositors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "estimateDeployedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getDepositTokensForShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSharesForDepositTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfAllowedDepositors", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "removeDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "disableDeposits", "type": "bool" } ], "name": "rescueDeployedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "revokeAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "swapPair", "type": "address" } ], "name": "setExtraRewardSwapPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IJoeChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposits", "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": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateAdminFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "updateDepositsEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValue", "type": "address" } ], "name": "updateDevAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateDevFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMaxTokensToDepositWithoutReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMinTokensToReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateReinvestReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c916000919062001071565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162001071565b503480156200006757600080fd5b5060405162005d8f38038062005d8f83398181016040526101e08110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e08701516101008801516101208901516101408a01516101608b01516101808c01516101a08d01516101c0909d01519b9e50999c50979a96999598949793969295919490939290916000620001b562000386565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062005c95833981519152908290a3508e600090805190602001906200020a92919062001071565b508d600a60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600b60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c601860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a601360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555033600c60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555085601981905550620002e98a888b8b6200038a60201b60201c565b620002f3620007e2565b620002fe84620008d5565b62000309836200097f565b620003148262000a6f565b6200031f8162000b4b565b6200032b600162000c27565b620003368562000ced565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a15050505050505050505050505050506200110d565b3390565b620003cb8473b31f66aa3c1e785363f0875a1b74e27b85fd66c7601860009054906101000a90046001600160a01b031662000de760201b62002b331760201c565b620004085760405162461bcd60e51b815260040180806020018281038252602981526020018062005d0f6029913960400191505060405180910390fd5b6001600160a01b0382161580620004c35750620004c38273b31f66aa3c1e785363f0875a1b74e27b85fd66c7600a60009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048357600080fd5b505afa15801562000498573d6000803e3d6000fd5b505050506040513d6020811015620004af57600080fd5b505162000de7602090811b62002b3317901c565b620005005760405162461bcd60e51b815260040180806020018281038252602d81526020018062005cb5602d913960400191505060405180910390fd5b6001600160a01b03811615806200057b57506200057b8173b31f66aa3c1e785363f0875a1b74e27b85fd66c7600a60009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048357600080fd5b620005b85760405162461bcd60e51b815260040180806020018281038252602d81526020018062005ce2602d913960400191505060405180910390fd5b6013546019546040805160016232bd9d60e01b031981526004810192909252306024830152516000926001600160a01b03169163ffcd42639160448083019286929190829003018186803b1580156200061057600080fd5b505afa15801562000625573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156200064f57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200067b57600080fd5b9083019060208201858111156200069157600080fd5b8251640100000000811182820188101715620006ac57600080fd5b82525081516020918201929091019080838360005b83811015620006db578181015183820152602001620006c1565b50505050905090810190601f168015620007095780820380516001836020036101000a031916815260200191505b50604052509294505050506001600160a01b03851615905080620007545750620007548473b31f66aa3c1e785363f0875a1b74e27b85fd66c78362000de760201b62002b331760201c565b620007915760405162461bcd60e51b815260040180806020018281038252605781526020018062005d386057913960600191505060405180910390fd5b50601480546001600160a01b039586166001600160a01b0319918216179091556015805494861694821694909417909355601680549285169284169290921790915560178054919093169116179055565b620007ec62000386565b6001600160a01b0316620007ff62001000565b6001600160a01b0316146200084a576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b600a546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015620008a557600080fd5b505af1158015620008ba573d6000803e3d6000fd5b505050506040513d6020811015620008d157600080fd5b5050565b620008df62000386565b6001600160a01b0316620008f262001000565b6001600160a01b0316146200093d576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b6200098962000386565b6001600160a01b03166200099c62001000565b6001600160a01b031614620009e7576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b61271062000a2160105462000a0d601254856200100f60201b62002d3c1790919060201c565b6200100f60201b62002d3c1790919060201c565b111562000a2d57600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b62000a7962000386565b6001600160a01b031662000a8c62001000565b6001600160a01b03161462000ad7576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b61271062000afd60105462000a0d601154856200100f60201b62002d3c1790919060201c565b111562000b0957600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b62000b5562000386565b6001600160a01b031662000b6862001000565b6001600160a01b03161462000bb3576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b61271062000bd960125462000a0d601154856200100f60201b62002d3c1790919060201c565b111562000be557600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b62000c3162000386565b6001600160a01b031662000c4462001000565b6001600160a01b03161462000c8f576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b600f5460ff161515811515141562000ca657600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b62000cf762000386565b6001600160a01b031662000d0a62001000565b6001600160a01b03161462000d55576040805162461bcd60e51b8152602060048201819052602482015260008051602062005c75833981519152604482015290519081900360640190fd5b6001600160a01b03811662000d9c5760405162461bcd60e51b815260040180806020018281038252602681526020018062005c4f6026913960400191505060405180910390fd5b6006546040516001600160a01b0380841692169060008051602062005c9583398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000e2357600080fd5b505afa15801562000e38573d6000803e3d6000fd5b505050506040513d602081101562000e4f57600080fd5b50516001600160a01b038481169116148062000edd5750836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ea057600080fd5b505afa15801562000eb5573d6000803e3d6000fd5b505050506040513d602081101562000ecc57600080fd5b50516001600160a01b038481169116145b801562000fd95750836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000f1f57600080fd5b505afa15801562000f34573d6000803e3d6000fd5b505050506040513d602081101562000f4b57600080fd5b50516001600160a01b038381169116148062000fd95750836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000f9c57600080fd5b505afa15801562000fb1573d6000803e3d6000fd5b505050506040513d602081101562000fc857600080fd5b50516001600160a01b038381169116145b801562000ff85750816001600160a01b0316836001600160a01b031614155b949350505050565b6006546001600160a01b031690565b6000828201838110156200106a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620010b457805160ff1916838001178555620010e4565b82800160010185558215620010e4579182015b82811115620010e4578251825591602001919060010190620010c7565b50620010f2929150620010f6565b5090565b5b80821115620010f25760008155600101620010f7565b614b32806200111d6000396000f3fe6080604052600436106103855760003560e01c80638b73e606116101d1578063c89039c511610102578063dd8ce4d6116100a0578063ee99205c1161006f578063ee99205c14610d6d578063f2fde38b14610d82578063f7c618c114610db5578063fdb5a03e14610dca576104d0565b8063dd8ce4d614610cda578063e21ac82514610d04578063eab89a5a14610d2e578063ed24911d14610d58576104d0565b8063da09c72c116100dc578063da09c72c14610c60578063db2e21bc14610c75578063dbd9a4d414610c8a578063dd62ed3e14610c9f576104d0565b8063c89039c514610bc3578063cff1b6ef14610bd8578063d505accf14610c02576104d0565b8063a9059cbb1161016f578063b6b55f2511610149578063b6b55f2514610b5a578063b9e57b8014610b84578063bd079f5514610b99578063c4b24a4614610bae576104d0565b8063a9059cbb14610ada578063ac0d31ff14610b13578063b52a321f14610b45576104d0565b806395d89b41116101ab57806395d89b4114610a5c57806399729ec114610a715780639e4e731814610a9b578063a8ae2b7c14610ab0576104d0565b80638b73e606146109c55780638da5cb5b146109f85780639291d56314610a29576104d0565b80634bebd1e7116102b6578063789139bc116102545780638183723011610223578063818372301461091a5780638432e894146109445780638980f11f146109775780638aff733d146109b0576104d0565b8063789139bc146108825780637ae26773146108975780637d882097146108d25780637ecebe00146108e7576104d0565b80635ea682ea116102905780635ea682ea146108105780635eaec0e41461082557806370a082311461083a578063715018a61461086d576104d0565b80634bebd1e7146107875780634e77ace5146107ba5780634ebb7916146107e6576104d0565b80632e1a7d4d11610323578063313ce567116102fd578063313ce567146106cf5780633bdc6e72146106fa578063483c2ef01461070f5780634a970be714610742576104d0565b80632e1a7d4d146106555780632f4f21e21461068157806330adf81f146106ba576104d0565b80630f23475d1161035f5780630f23475d146105d357806318160ddd146105e857806320606b70146105fd57806323b872dd14610612576104d0565b806306fdde03146104d5578063076771111461055f578063095ea7b314610586576104d0565b366104d057601354601954604080517f1526fe270000000000000000000000000000000000000000000000000000000081526004810192909252516000926001600160a01b031691631526fe279160248083019260a0929190829003018186803b1580156103f257600080fd5b505afa158015610406573d6000803e3d6000fd5b505050506040513d60a081101561041c57600080fd5b50608001519050336001600160a01b038216148061044457506013546001600160a01b031633145b806104675750610452610ddf565b6001600160a01b0316336001600160a01b0316145b8061047c5750600c546001600160a01b031633145b6104cd576040805162461bcd60e51b815260206004820152600b60248201527f6e6f7420616c6c6f776564000000000000000000000000000000000000000000604482015290519081900360640190fd5b50005b600080fd5b3480156104e157600080fd5b506104ea610def565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561052457818101518382015260200161050c565b50505050905090810190601f1680156105515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056b57600080fd5b50610574610e7d565b60408051918252519081900360200190f35b34801561059257600080fd5b506105bf600480360360408110156105a957600080fd5b506001600160a01b038135169060200135610e83565b604080519115158252519081900360200190f35b3480156105df57600080fd5b50610574610e9a565b3480156105f457600080fd5b50610574610f3a565b34801561060957600080fd5b50610574610f40565b34801561061e57600080fd5b506105bf6004803603606081101561063557600080fd5b506001600160a01b03813581169160208101359091169060400135610f64565b34801561066157600080fd5b5061067f6004803603602081101561067857600080fd5b5035611048565b005b34801561068d57600080fd5b5061067f600480360360408110156106a457600080fd5b506001600160a01b0381351690602001356110d0565b3480156106c657600080fd5b506105746110da565b3480156106db57600080fd5b506106e46110fe565b6040805160ff9092168252519081900360200190f35b34801561070657600080fd5b50610574611103565b34801561071b57600080fd5b506105bf6004803603602081101561073257600080fd5b50356001600160a01b0316611109565b34801561074e57600080fd5b5061067f600480360360a081101561076557600080fd5b5080359060208101359060ff604082013516906060810135906080013561111e565b34801561079357600080fd5b5061067f600480360360208110156107aa57600080fd5b50356001600160a01b03166111d7565b3480156107c657600080fd5b5061067f600480360360208110156107dd57600080fd5b50351515611313565b3480156107f257600080fd5b5061067f6004803603602081101561080957600080fd5b50356113d2565b34801561081c57600080fd5b506105746114ae565b34801561083157600080fd5b506105746114b4565b34801561084657600080fd5b506105746004803603602081101561085d57600080fd5b50356001600160a01b03166114ba565b34801561087957600080fd5b5061067f6114d9565b34801561088e57600080fd5b50610574611585565b3480156108a357600080fd5b5061067f600480360360408110156108ba57600080fd5b506001600160a01b038135811691602001351661158b565b3480156108de57600080fd5b5061057461167a565b3480156108f357600080fd5b506105746004803603602081101561090a57600080fd5b50356001600160a01b0316611680565b34801561092657600080fd5b5061067f6004803603602081101561093d57600080fd5b5035611692565b34801561095057600080fd5b5061067f6004803603602081101561096757600080fd5b50356001600160a01b0316611736565b34801561098357600080fd5b5061067f6004803603604081101561099a57600080fd5b506001600160a01b0381351690602001356119a0565b3480156109bc57600080fd5b50610574611af4565b3480156109d157600080fd5b5061067f600480360360208110156109e857600080fd5b50356001600160a01b0316611afa565b348015610a0457600080fd5b50610a0d610ddf565b604080516001600160a01b039092168252519081900360200190f35b348015610a3557600080fd5b5061067f60048036036020811015610a4c57600080fd5b50356001600160a01b0316611c61565b348015610a6857600080fd5b506104ea611d2a565b348015610a7d57600080fd5b5061067f60048036036020811015610a9457600080fd5b5035611d84565b348015610aa757600080fd5b50610574611e57565b348015610abc57600080fd5b5061067f60048036036020811015610ad357600080fd5b5035611e7b565b348015610ae657600080fd5b506105bf60048036036040811015610afd57600080fd5b506001600160a01b038135169060200135611f48565b348015610b1f57600080fd5b5061067f60048036036040811015610b3657600080fd5b50803590602001351515611f55565b348015610b5157600080fd5b506105bf6121cd565b348015610b6657600080fd5b5061067f60048036036020811015610b7d57600080fd5b50356121d6565b348015610b9057600080fd5b506105746121e0565b348015610ba557600080fd5b50610574612227565b348015610bba57600080fd5b5061057461222d565b348015610bcf57600080fd5b50610a0d612323565b348015610be457600080fd5b5061067f60048036036020811015610bfb57600080fd5b5035612332565b348015610c0e57600080fd5b5061067f600480360360e0811015610c2557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356123ff565b348015610c6c57600080fd5b50610a0d6124ff565b348015610c8157600080fd5b5061067f61250e565b348015610c9657600080fd5b5061067f6125df565b348015610cab57600080fd5b5061057460048036036040811015610cc257600080fd5b506001600160a01b03813581169160200135166126de565b348015610ce657600080fd5b5061057460048036036020811015610cfd57600080fd5b5035612709565b348015610d1057600080fd5b5061067f60048036036020811015610d2757600080fd5b5035612748565b348015610d3a57600080fd5b5061057460048036036020811015610d5157600080fd5b50356127ec565b348015610d6457600080fd5b5061057461282c565b348015610d7957600080fd5b50610a0d612939565b348015610d8e57600080fd5b5061067f60048036036020811015610da557600080fd5b50356001600160a01b0316612948565b348015610dc157600080fd5b50610a0d612a4b565b348015610dd657600080fd5b5061067f612a5a565b6006546001600160a01b03165b90565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e755780601f10610e4a57610100808354040283529160200191610e75565b820191906000526020600020905b815481529060010190602001808311610e5857829003601f168201915b505050505081565b60115481565b6000610e90338484612d96565b5060015b92915050565b601354601954604080517f93f1a40b0000000000000000000000000000000000000000000000000000000081526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610f0857600080fd5b505afa158015610f1c573d6000803e3d6000fd5b505050506040513d6040811015610f3257600080fd5b505191505090565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610f9e57506000198114155b1561102f576000610fca856040518060600160405280602f81526020016149ba602f9139849190612eae565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b61103a868686612f45565b6001925050505b9392505050565b6000611053826127ec565b905080156110cc5761106481613052565b600a5461107b906001600160a01b03163383613115565b61108533836131d8565b60095461109290826132ad565b60095560408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25b5050565b6110cc82826132ef565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a54604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b505050506111d033866132ef565b5050505050565b6111df613503565b6001600160a01b03166111f0610ddf565b6001600160a01b031614611239576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16156112a7576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff191660019081179091556007546112d991612d3c565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b61131b613503565b6001600160a01b031661132c610ddf565b6001600160a01b031614611375576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b600f5460ff161515811515141561138b57600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b6113da613503565b6001600160a01b03166113eb610ddf565b6001600160a01b031614611434576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b6000811161144157600080fd5b604051339082156108fc029083906000818181858888f1935050505015801561146e573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60125481565b60195481565b6001600160a01b0381166000908152600460205260409020545b919050565b6114e1613503565b6001600160a01b03166114f2610ddf565b6001600160a01b03161461153b576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600e5481565b611593613503565b6001600160a01b03166115a4610ddf565b6001600160a01b0316146115ed576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b505050506040513d602081101561166f57600080fd5b50516110cc57600080fd5b60095481565b60056020526000908152604090205481565b61169a613503565b6001600160a01b03166116ab610ddf565b6001600160a01b0316146116f4576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b600c546001600160a01b03163314611795576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166117b857601580546001600160a01b031916905561199d565b601354601954604080517fffcd42630000000000000000000000000000000000000000000000000000000081526004810192909252306024830152516000926001600160a01b03169163ffcd42639160448083019286929190829003018186803b15801561182557600080fd5b505afa158015611839573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561186257600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561188d57600080fd5b9083019060208201858111156118a257600080fd5b82516401000000008111828201881017156118bc57600080fd5b82525081516020918201929091019080838360005b838110156118e95781810151838201526020016118d1565b50505050905090810190601f1680156119165780820380516001836020036101000a031916815260200191505b5060405250929450611945935085925073b31f66aa3c1e785363f0875a1b74e27b85fd66c79150849050612b33565b6119805760405162461bcd60e51b8152600401808060200182810382526057815260200180614a0b6057913960600191505060405180910390fd5b50601580546001600160a01b0319166001600160a01b0383161790555b50565b6119a8613503565b6001600160a01b03166119b9610ddf565b6001600160a01b031614611a02576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b60008111611a0f57600080fd5b604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b158015611a7757600080fd5b505af1158015611a8b573d6000803e3d6000fd5b505050506040513d6020811015611aa157600080fd5b5051611aac57600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b611b02613503565b6001600160a01b0316611b13610ddf565b6001600160a01b031614611b5c576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b600060075411611b9d5760405162461bcd60e51b81526004018080602001828103825260348152602001806148486034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff161515600114611bf95760405162461bcd60e51b815260040180806020018281038252602a8152602001806148c5602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff19169055600754611c279060016132ad565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b600c546001600160a01b03163314611cc0576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e755780601f10610e4a57610100808354040283529160200191610e75565b611d8c613503565b6001600160a01b0316611d9d610ddf565b6001600160a01b031614611de6576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b612710611e0a601054611e0460115485612d3c90919063ffffffff16565b90612d3c565b1115611e1557600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b611e83613503565b6001600160a01b0316611e94610ddf565b6001600160a01b031614611edd576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b612710611efb601254611e0460115485612d3c90919063ffffffff16565b1115611f0657600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610e90338484612f45565b611f5d613503565b6001600160a01b0316611f6e610ddf565b6001600160a01b031614611fb7576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561200257600080fd5b505afa158015612016573d6000803e3d6000fd5b505050506040513d602081101561202c57600080fd5b505160135460195460408051632989754760e11b81526004810192909252519293506001600160a01b0390911691635312ea8e9160248082019260009290919082900301818387803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b5050600a54604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d602081101561211057600080fd5b505190508361211f82846132ad565b101561215c5760405162461bcd60e51b8152600401808060200182810382526022815260200180614aad6022913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff16151560011480156121b857506001831515145b156121c7576121c76000611313565b50505050565b600f5460ff1681565b61199d33826132ef565b6000806121eb61222d565b9050600d54811061221f576122176127106122116010548461350790919063ffffffff16565b90613560565b915050610dec565b600091505090565b600d5481565b600080600080600061223d6135a2565b601854601454949850929650909450925060009161227f9187916001600160a01b039182169173b31f66aa3c1e785363f0875a1b74e27b85fd66c791166138c2565b6015549091506001600160a01b03161580159061229c5750600083115b80156122ce57506015546122ce906001600160a01b03168573b31f66aa3c1e785363f0875a1b74e27b85fd66c7612b33565b1561230f5760155461230d90612306908590879073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906001600160a01b03166138c2565b8290612d3c565b505b6123198282612d3c565b9550505050505090565b600a546001600160a01b031681565b61233a613503565b6001600160a01b031661234b610ddf565b6001600160a01b031614612394576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b6127106123b2601054611e0460125485612d3c90919063ffffffff16565b11156123bd57600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b42841015612454576040805162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a657870697265640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e0909201905280519101206124ea8882868686613992565b6124f5888888612d96565b5050505050505050565b600c546001600160a01b031681565b612516613503565b6001600160a01b0316612527610ddf565b6001600160a01b031614612570576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b60135460195460408051632989754760e11b81526004810192909252516001600160a01b0390921691635312ea8e9160248082019260009290919082900301818387803b1580156125c057600080fd5b505af11580156125d4573d6000803e3d6000fd5b505060006009555050565b6125e7613503565b6001600160a01b03166125f8610ddf565b6001600160a01b031614612641576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b600a54601354604080517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050506040513d60208110156110cc57600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600061272260095460025461350790919063ffffffff16565b61272d5750806114d4565b610e946009546122116002548561350790919063ffffffff16565b612750613503565b6001600160a01b0316612761610ddf565b6001600160a01b0316146127aa576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b600061280560095460025461350790919063ffffffff16565b612811575060006114d4565b610e946002546122116009548561350790919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156128af5780601f1061288d5761010080835404028352918201916128af565b820191906000526020600020905b81548152906001019060200180831161289b575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6128e8613aca565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b6013546001600160a01b031681565b612950613503565b6001600160a01b0316612961610ddf565b6001600160a01b0316146129aa576040805162461bcd60e51b81526020600482018190526024820152600080516020614966833981519152604482015290519081900360640190fd5b6001600160a01b0381166129ef5760405162461bcd60e51b81526004018080602001828103825260268152602001806147f46026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b323314612aae576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604482015290519081900360640190fd5b6000612ab861222d565b9050600d54811015612b11576040805162461bcd60e51b815260206004820152601760248201527f4a6f65537472617465677956343a3a7265696e76657374000000000000000000604482015290519081900360640190fd5b600080600080612b1f6135a2565b93509350935093506111d084848484613ace565b6000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612b6e57600080fd5b505afa158015612b82573d6000803e3d6000fd5b505050506040513d6020811015612b9857600080fd5b50516001600160a01b0384811691161480612c225750836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015612be757600080fd5b505afa158015612bfb573d6000803e3d6000fd5b505050506040513d6020811015612c1157600080fd5b50516001600160a01b038481169116145b8015612d165750836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6257600080fd5b505afa158015612c76573d6000803e3d6000fd5b505050506040513d6020811015612c8c57600080fd5b50516001600160a01b0383811691161480612d165750836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015612cdb57600080fd5b505afa158015612cef573d6000803e3d6000fd5b505050506040513d6020811015612d0557600080fd5b50516001600160a01b038381169116145b8015612d345750816001600160a01b0316836001600160a01b031614155b949350505050565b600082820183811015611041576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038316612df1576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612e4c576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008184841115612f3d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f02578181015183820152602001612eea565b50505050905090810190601f168015612f2f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216612f8a5760405162461bcd60e51b81526004018080602001828103825260348152602001806149866034913960400191505060405180910390fd5b612fc7816040518060600160405280602e8152602001614acf602e91396001600160a01b0386166000908152600460205260409020549190612eae565b6001600160a01b038085166000908152600460205260408082209390935590841681522054612ff69082612d3c565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081116130915760405162461bcd60e51b81526004018080602001828103825260258152602001806148a06025913960400191505060405180910390fd5b601354601954604080517f441a3e70000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052516001600160a01b039092169163441a3e709160448082019260009290919082900301818387803b15801561310157600080fd5b505af11580156111d0573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561316c57600080fd5b505af1158015613180573d6000803e3d6000fd5b505050506040513d602081101561319657600080fd5b50516131d35760405162461bcd60e51b8152600401808060200182810382526024815260200180614a896024913960400191505060405180910390fd5b505050565b61321581604051806060016040528060278152602001614a62602791396001600160a01b0385166000908152600460205260409020549190612eae565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550613265816040518060600160405280602781526020016148ef602791396002549190612eae565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061104183836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612eae565b6007541561334a573360009081526008602052604090205460ff16151560011461334a5760405162461bcd60e51b815260040180806020018281038252602e81526020018061481a602e913960400191505060405180910390fd5b600f5460ff1615156001146133a6576040805162461bcd60e51b815260206004820152601760248201527f4a6f65537472617465677956343a3a5f6465706f736974000000000000000000604482015290519081900360640190fd5b600e54156133ed5760006133b861222d565b9050600e548111156133eb576000806000806133d26135a2565b93509350935093506133e684848484613ace565b505050505b505b600a54604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561346057600080fd5b505af1158015613474573d6000803e3d6000fd5b505050506040513d602081101561348a57600080fd5b505161349557600080fd5b61349e81613cea565b6134b0826134ab83612709565b613d80565b6009546134bd9082612d3c565b6009556040805182815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25050565b3390565b60008261351657506000610e94565b8282028284828161352357fe5b04146110415760405162461bcd60e51b81526004018080602001828103825260218152602001806149456021913960400191505060405180910390fd5b600061104183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e0b565b601354601954604080517fffcd42630000000000000000000000000000000000000000000000000000000081526004810192909252306024830152516000928392839283928392839283926001600160a01b03169163ffcd42639160448083019286929190829003018186803b15801561361b57600080fd5b505afa15801561362f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561365857600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561368357600080fd5b90830190602082018581111561369857600080fd5b82516401000000008111828201881017156136b257600080fd5b82525081516020918201929091019080838360005b838110156136df5781810151838201526020016136c7565b50505050905090810190601f16801561370c5780820380516001836020036101000a031916815260200191505b5060408181526020928301516018546370a0823160e01b84523060048501529151989b509699509597506000966001600160a01b03909616956370a082319550602480830195509293509190829003018186803b15801561376c57600080fd5b505afa158015613780573d6000803e3d6000fd5b505050506040513d602081101561379657600080fd5b5051905060006001600160a01b0384161561382057604080516370a0823160e01b815230600482015290516001600160a01b038616916370a08231916024808301926020929190829003018186803b1580156137f157600080fd5b505afa158015613805573d6000803e3d6000fd5b505050506040513d602081101561381b57600080fd5b505190505b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561386b57600080fd5b505afa15801561387f573d6000803e3d6000fd5b505050506040513d602081101561389557600080fd5b505190506138a38387612d3c565b856138ae8487612d3c565b919b50995097509550505050505090919293565b6000806138cf8585613e70565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561390e57600080fd5b505afa158015613922573d6000803e3d6000fd5b505050506040513d606081101561393857600080fd5b50805160209091015190925090506001600160a01b038381169088161461395b57905b61398688836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16613ea1565b98975050505050505050565b600061399c61282c565b8560405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613a50573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590613a865750866001600160a01b0316816001600160a01b0316145b613ac15760405162461bcd60e51b815260040180806020018281038252602481526020018061487c6024913960400191505060405180910390fd5b50505050505050565b4690565b60135460195460408051631c57762b60e31b8152600481019290925260006024830181905290516001600160a01b039093169263e2bbb15892604480820193929182900301818387803b158015613b2457600080fd5b505af1158015613b38573d6000803e3d6000fd5b505050506000613b53613b4c868686613ee9565b8390612d3c565b90506000613b726127106122116012548561350790919063ffffffff16565b90508015613ba657600c54613ba69073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906001600160a01b031683613115565b6000613bc36127106122116011548661350790919063ffffffff16565b90508015613bf157613bf173b31f66aa3c1e785363f0875a1b74e27b85fd66c7613beb610ddf565b83613115565b6000613c0e6127106122116010548761350790919063ffffffff16565b90508015613c3557613c3573b31f66aa3c1e785363f0875a1b74e27b85fd66c73383613115565b6000613c84613c5083613c4a86818a8a6132ad565b906132ad565b600a5460165460175473b31f66aa3c1e785363f0875a1b74e27b85fd66c7926001600160a01b039081169281169116614137565b9050613c8f81613cea565b600954613c9c9082612d3c565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1505050505050505050565b60008111613d295760405162461bcd60e51b81526004018080602001828103825260228152602001806149e96022913960400191505060405180910390fd5b60135460195460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b15801561310157600080fd5b600254613d8d9082612d3c565b6002556001600160a01b038216600090815260046020526040902054613db39082612d3c565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183613e5a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612f02578181015183820152602001612eea565b506000838581613e6657fe5b0495945050505050565b600080826001600160a01b0316846001600160a01b031610613e93578284613e96565b83835b915091509250929050565b600080613eb0856103e5613507565b90506000613ebe8285613507565b90506000613ed283611e04886103e8613507565b9050613ede8282613560565b979650505050505050565b6000806001600160a01b03841673b31f66aa3c1e785363f0875a1b74e27b85fd66c7141561401257478015613f815773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f6757600080fd5b505af1158015613f7b573d6000803e3d6000fd5b50505050505b604080516370a0823160e01b8152306004820152905161400a9173b31f66aa3c1e785363f0875a1b74e27b85fd66c7916370a0823191602480820192602092909190829003018186803b158015613fd757600080fd5b505afa158015613feb573d6000803e3d6000fd5b505050506040513d602081101561400157600080fd5b50518390612d3c565b91505061406f565b6018546001600160a01b038581169116141561406f576140666123066140388588612d3c565b6018546014546001600160a01b039182169173b31f66aa3c1e785363f0875a1b74e27b85fd66c791166142b8565b91506110419050565b6018546014546140a7916123069188916001600160a01b039081169173b31f66aa3c1e785363f0875a1b74e27b85fd66c791166142b8565b6015549091506001600160a01b0316158015906140c45750600083115b80156140f657506015546140f6906001600160a01b03168573b31f66aa3c1e785363f0875a1b74e27b85fd66c7612b33565b15612d345760155461412e90612306908590879073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906001600160a01b03166142b8565b95945050505050565b600080614145876002613560565b9050600081116141865760405162461bcd60e51b815260040180806020018281038252602f815260200180614916602f913960400191505060405180910390fd5b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156141c157600080fd5b505afa1580156141d5573d6000803e3d6000fd5b505050506040513d60208110156141eb57600080fd5b50519050816001600160a01b03888116908316146142125761420f838984896142b8565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561424d57600080fd5b505afa158015614261573d6000803e3d6000fd5b505050506040513d602081101561427757600080fd5b50519050836001600160a01b038a81169083161461429e5761429b858b848a6142b8565b90505b6142a98984836144c8565b9b9a5050505050505050505050565b6000806142c58585613e70565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561430457600080fd5b505afa158015614318573d6000803e3d6000fd5b505050506040513d606081101561432e57600080fd5b50805160209091015190925090506001600160a01b038381169088161461435157905b60008061437f8a856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16613ea1565b9050886001600160a01b0316856001600160a01b03161461439c57905b6143a789888c61470f565b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201858152604483018590523060648401819052608060848501908152845160a486018190526001600160a01b038e169663022c0d9f968a968a9691949193919260c486019290918190849084905b8381101561444457818101518382015260200161442c565b50505050905090810190601f1680156144715780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561449357600080fd5b505af11580156144a7573d6000803e3d6000fd5b505050508181116144b857816144ba565b805b9a9950505050505050505050565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d606081101561453057600080fd5b5080516020909101519092509050600061455e866dffffffffffffffffffffffffffff8086169085166147e3565b9050848111156145995784905061459685836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff166147e3565b95505b614608876001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d557600080fd5b505afa1580156145e9573d6000803e3d6000fd5b505050506040513d60208110156145ff57600080fd5b5051888861470f565b614677876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561464457600080fd5b505afa158015614658573d6000803e3d6000fd5b505050506040513d602081101561466e57600080fd5b5051888361470f565b604080517f6a62784200000000000000000000000000000000000000000000000000000000815230600482015290516001600160a01b03891691636a6278429160248083019260209291908290030181600087803b1580156146d857600080fd5b505af11580156146ec573d6000803e3d6000fd5b505050506040513d602081101561470257600080fd5b5051979650505050505050565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561476657600080fd5b505af115801561477a573d6000803e3d6000fd5b505050506040513d602081101561479057600080fd5b50516131d3576040805162461bcd60e51b815260206004820181905260248201527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604482015290519081900360640190fd5b6000612d3483612211868561350756fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735065726d697373696f6e65643a3a6f6e6c79416c6c6f7765644465706f736974732c206e6f7420616c6c6f7765645065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e61747572654a6f65537472617465677956343a3a5f77697468647261774465706f736974546f6b656e735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c794465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e73546f4465706f736974546f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573737472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654a6f65537472617465677956343a3a5f7374616b654465706f736974546f6b656e735f737761705061697257415641584a6f65206973206e6f7420612057415641582d65787472612072657761726420706169722c20636865636b207374616b696e67436f6e74726163742e70656e64696e67546f6b656e735f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c45444a6f65537472617465677956343a3a7265736375654465706c6f79656446756e64735f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212203e7e99a0c4221ae6e730a99dd843b0ee436d0a69cdb7f7974fbdb63ce65ac9d864736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f7377617050616972546f6b656e30206973206e6f7420612057415641582b6465706f73697420746f6b656e305f7377617050616972546f6b656e31206973206e6f7420612057415641582b6465706f73697420746f6b656e315f737761705061697257415641584a6f65206973206e6f7420612057415641582d4a6f6520706169725f737761705061697257415641584a6f65206973206e6f7420612057415641582d65787472612072657761726420706169722c20636865636b207374616b696e67436f6e74726163742e70656e64696e67546f6b656e7300000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b5c9e891af3063004a441ba4fab4ca3d6deb56260000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f00000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a15000000000000000000000000b5c9e891af3063004a441ba4fab4ca3d6deb56260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd700000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000175969656c642059616b3a204a4c502059414b2d41564158000000000000000000