0 txs
0 calls
constructor
constructor()
functions
controller
viewfunction controller() view returns (address)
currentBalance
viewfunction currentBalance() view returns (uint256)
depositArbCheck
purefunction depositArbCheck() pure returns (bool)
feeDenominator
viewfunction feeDenominator() view returns (uint256)
fToken
viewfunction fToken() view returns (address)
governance
viewfunction governance() view returns (address)
harvestMSIG
viewfunction harvestMSIG() view returns (address)
investedUnderlyingBalance
viewfunction investedUnderlyingBalance() view returns (uint256)
nextImplementation
viewfunction nextImplementation() view returns (address)
nextImplementationDelay
viewfunction nextImplementationDelay() view returns (uint256)
nextImplementationTimestamp
viewfunction nextImplementationTimestamp() view returns (uint256)
pausedInvesting
viewfunction pausedInvesting() view returns (bool)
pendingFee
viewfunction pendingFee() view returns (uint256)
platformFeeNumerator
viewfunction platformFeeNumerator() view returns (uint256)
profitSharingNumerator
viewfunction profitSharingNumerator() view returns (uint256)
rewardPool
viewfunction rewardPool() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sell
viewfunction sell() view returns (bool)
shouldUpgrade
viewfunction shouldUpgrade() view returns (bool, address)
storedBalance
viewfunction storedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
strategistFeeNumerator
viewfunction strategistFeeNumerator() view returns (uint256)
totalFeeNumerator
viewfunction totalFeeNumerator() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
universalLiquidator
viewfunction universalLiquidator() view returns (address)
unsalvagableTokens
viewfunction unsalvagableTokens(address token) view returns (bool)
vault
viewfunction vault() view returns (address)
weth
viewfunction weth() view returns (address)
addRewardToken
nonpayablefunction addRewardToken(address _token)
continueInvesting
nonpayablefunction continueInvesting()
doHardWork
nonpayablefunction doHardWork()
emergencyExit
nonpayablefunction emergencyExit()
finalizeUpgrade
nonpayablefunction finalizeUpgrade()
initialize
nonpayablefunction initialize()
initialize
nonpayablefunction initialize(address _storage, address _underlying, address _vault, address _rewardPool, address _rewardToken, address _strategist)
initialize
nonpayablefunction initialize(address _storage)
initializeBaseStrategy
nonpayablefunction initializeBaseStrategy(address _storage, address _underlying, address _vault, address _fToken, address _rewardToken)
initializeStrategy
nonpayablefunction initializeStrategy(address _storage, address _vault)
salvage
nonpayablefunction salvage(address recipient, address token, uint256 amount)
scheduleUpgrade
nonpayablefunction scheduleUpgrade(address impl)
setStorage
nonpayablefunction setStorage(address _store)
toggleMerklOperator
nonpayablefunction toggleMerklOperator(address merklClaim, address operator)
withdrawAllToVault
nonpayablefunction withdrawAllToVault()
withdrawToVault
nonpayablefunction withdrawToVault(uint256 amountUnderlying)
events
PlatformFeeLogInReward
event PlatformFeeLogInReward(address indexed treasury, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitsNotCollected
event ProfitsNotCollected(address indexed rewardToken, bool sell, bool floor)
ProfitsNotCollected
event ProfitsNotCollected(bool sell, bool floor)
StrategistFeeLogInReward
event StrategistFeeLogInReward(address indexed strategist, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061003c60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe266105ff565b7f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe251461006a5761006a610626565b61009560017fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dd6105ff565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc146100c3576100c3610626565b6100ee60017fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5316105ff565b7fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5301461011c5761011c610626565b61014760017fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d426105ff565b7fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d411461017557610175610626565b6101a060017fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bc06105ff565b7fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf146101ce576101ce610626565b6101f960017f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b96105ff565b7f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b81461022757610227610626565b61025260017f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb76105ff565b7f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb61461028057610280610626565b6102ab60017fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591b6105ff565b7fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a146102d9576102d9610626565b61030460017fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02a6105ff565b7fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c0291461033257610332610626565b61035d60017f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3c6105ff565b7f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3b1461038b5761038b610626565b6103b660017f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844486105ff565b7f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb84447146103e4576103e4610626565b61040f60017f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22f6105ff565b7f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e1461043d5761043d610626565b61046860017f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b326105ff565b7f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b311461049657610496610626565b6104c160017f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458e6105ff565b7f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d146104ef576104ef610626565b61051a60017f462e4d44c9bae3e0ee3d71929710bef82ca7c929ce31980e75572ea415835b0f6105ff565b7f462e4d44c9bae3e0ee3d71929710bef82ca7c929ce31980e75572ea415835b0e1461054857610548610626565b61057360017f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a36105ff565b7f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2146105a1576105a1610626565b6105cc60017f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd986105ff565b7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97146105fa576105fa610626565b61063c565b8181038181111561062057634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b61311d8061064b6000396000f3fe6080604052600436106102065760003560e01c806303140ff41461021257806306974e8d1461023a57806309ff18f01461025c5780630c80447a146102715780631113ef5214610293578063180b0d7e146102b35780631c03e6cc146102c85780631fe4a686146102e857806320d1ceaf146102fd5780633fc8cef314610312578063457100741461033a57806345d01e4a1461035f5780634d352ab2146103745780634fa5d8541461039457806350185946146103a95780635641ec03146103c95780635aa6e675146103de578063643090bc146103f357806366666aa9146104085780636f307dc31461041d5780637bb7bed1146104325780638129fc1c1461045257806382de9c1b146104675780639137c1a71461047c5780639a138d6d1461049c5780639a508c8e146104bc5780639d16acfd146104d1578063a836569314610505578063a8694e571461051a578063b60f151a1461052f578063b8d3370b14610544578063bfd131f114610559578063c2a2a07b1461056e578063c4d66de814610582578063cc2a9a5b146105a2578063ce845d1d146105c2578063ce8c42e8146105d7578063d3df8aa4146105f7578063db6204851461060c578063e5e7832514610621578063e9eca99414610641578063ec09560614610656578063f77c47911461067e578063f7c618c114610693578063fbfa77cf146106a857600080fd5b3661020d57005b600080fd5b34801561021e57600080fd5b506102276106bd565b6040519081526020015b60405180910390f35b34801561024657600080fd5b5061024f61072d565b6040516102319190612ad8565b34801561026857600080fd5b5061024f610798565b34801561027d57600080fd5b5061029161028c366004612b01565b6107b0565b005b34801561029f57600080fd5b506102916102ae366004612b1e565b61086f565b3480156102bf57600080fd5b50610227610979565b3480156102d457600080fd5b506102916102e3366004612b01565b6109c0565b3480156102f457600080fd5b5061024f610aa1565b34801561030957600080fd5b50610227610ab9565b34801561031e57600080fd5b5061024f7382af49447d8a07e3bd95bd0d56f35241523fbab181565b34801561034657600080fd5b5061034f610b00565b6040519015158152602001610231565b34801561036b57600080fd5b50610227610b19565b34801561038057600080fd5b5061029161038f366004612b5f565b610bb1565b3480156103a057600080fd5b50610291610c6d565b3480156103b557600080fd5b5061034f6103c4366004612b01565b610d05565b3480156103d557600080fd5b50610291610d4c565b3480156103ea57600080fd5b5061024f610df6565b3480156103ff57600080fd5b50610227610e3d565b34801561041457600080fd5b5061024f610e55565b34801561042957600080fd5b5061024f610e6d565b34801561043e57600080fd5b5061024f61044d366004612b98565b610e85565b34801561045e57600080fd5b50610291610eaf565b34801561047357600080fd5b50610227610f3e565b34801561048857600080fd5b50610291610497366004612b01565b610f56565b3480156104a857600080fd5b506102916104b7366004612b5f565b611045565b3480156104c857600080fd5b50610291611139565b3480156104dd57600080fd5b506104e66111d1565b6040805192151583526001600160a01b03909116602083015201610231565b34801561051157600080fd5b5061022761121d565b34801561052657600080fd5b5061024f611264565b34801561053b57600080fd5b5061022761127c565b34801561055057600080fd5b506102276112c3565b34801561056557600080fd5b506102916112e3565b34801561057a57600080fd5b50600161034f565b34801561058e57600080fd5b5061029161059d366004612b01565b611484565b3480156105ae57600080fd5b506102916105bd366004612bb1565b6114fa565b3480156105ce57600080fd5b506102276115b6565b3480156105e357600080fd5b506102916105f2366004612b98565b6116a7565b34801561060357600080fd5b5061034f611907565b34801561061857600080fd5b50610291611920565b34801561062d57600080fd5b5061029161063c366004612c33565b6119ba565b34801561064d57600080fd5b50610227611b0d565b34801561066257600080fd5b5061024f73f3d1a027e858976634f81b7c41b09a05a46eda2181565b34801561068a57600080fd5b5061024f611b25565b34801561069f57600080fd5b5061024f611b6c565b3480156106b457600080fd5b5061024f611b84565b60006106c7611b25565b6001600160a01b03166303140ff46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107289190612ca4565b905090565b6000610737611b25565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107289190612cbd565b6000610728600080516020612f688339815191525490565b6107b8611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016107e39190612ad8565b602060405180830381865afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190612cda565b6108495760405162461bcd60e51b815260040161084090612cfc565b60405180910390fd5b61085281611baf565b61086c61086761086061121d565b4290611bc6565b611bd2565b50565b610877611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016108a29190612ad8565b602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190612cda565b6108ff5760405162461bcd60e51b815260040161084090612cfc565b61090882610d05565b156109605760405162461bcd60e51b815260206004820152602260248201527f746f6b656e20697320646566696e6564206173206e6f742073616c76616761626044820152616c6560f01b6064820152608401610840565b6109746001600160a01b0383168483611be9565b505050565b6000610983611b25565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d6000803e3d6000fd5b6109c8611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109f39190612ad8565b602060405180830381865afa158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a349190612cda565b610a505760405162461bcd60e51b815260040161084090612cfc565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610728600080516020612f888339815191525490565b6000610ac3611b25565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d6000803e3d6000fd5b6000610728600080516020612f08833981519152611c3f565b6000610728610b26610e3d565b610bab610b31611b0d565b610b39610e6d565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610b649190612ad8565b602060405180830381865afa158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba59190612ca4565b90611bc6565b90611c52565b600054610100900460ff1680610bca575060005460ff16155b610be65760405162461bcd60e51b815260040161084090612d24565b600054610100900460ff16158015610c08576000805461ffff19166101011790555b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9734a03f37e7d3fc243e3f99341d36f4b829bee5e037382af49447d8a07e3bd95bd0d56f35241523fbab1610c5486848785856119ba565b5050508015610974576000805461ff0019169055505050565b610c75611b84565b6001600160a01b0316336001600160a01b03161480610cac5750610c97611b25565b6001600160a01b0316336001600160a01b0316145b80610ccf5750610cba610df6565b6001600160a01b0316336001600160a01b0316145b610ceb5760405162461bcd60e51b815260040161084090612d72565b610cf3611c5e565b610cfb611cb6565b610d03611d8c565b565b6000610d0f611b6c565b6001600160a01b0316826001600160a01b03161480610d465750610d31610e6d565b6001600160a01b0316826001600160a01b0316145b92915050565b610d54611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610d7f9190612ad8565b602060405180830381865afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190612cda565b610ddc5760405162461bcd60e51b815260040161084090612cfc565b610de4611daf565b610dec611e27565b610cfb6001611f80565b6000610e00611b9c565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610774573d6000803e3d6000fd5b60006107286000805160206130a88339815191525490565b6000610728600080516020612fa88339815191525490565b60006107286000805160206130888339815191525490565b60018181548110610e9557600080fd5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff1680610ec8575060005460ff16155b610ee45760405162461bcd60e51b815260040161084090612d24565b600054610100900460ff16158015610f06576000805461ffff19166101011790555b60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe2555801561086c576000805461ff001916905550565b60006107286000805160206130288339815191525490565b610f5e611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610f899190612ad8565b602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190612cda565b610fe65760405162461bcd60e51b815260040161084090612cfc565b6001600160a01b03811661103c5760405162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d70747900006044820152606401610840565b61086c81611f98565b61104d611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016110789190612ad8565b602060405180830381865afa158015611095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b99190612cda565b6110d55760405162461bcd60e51b815260040161084090612cfc565b60405163bdac7ca360e01b81526001600160a01b0383169063bdac7ca3906111039030908590600401612d97565b600060405180830381600087803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b505050505050565b611141611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161116c9190612ad8565b602060405180830381865afa158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad9190612cda565b6111c95760405162461bcd60e51b815260040161084090612cfc565b610d03611faa565b6000806111dc610f3e565b158015906111f057506111ed610f3e565b42115b801561120d57506000611201610798565b6001600160a01b031614155b611215610798565b915091509091565b6000611227611b25565b6001600160a01b031663a83656936040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d6000803e3d6000fd5b6000610728600080516020612f488339815191525490565b6000611286611b25565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d6000803e3d6000fd5b60006107286112d061127c565b610ba56112db610ab9565b610ba56106bd565b6112eb611b84565b6001600160a01b0316336001600160a01b03161480611322575061130d611b25565b6001600160a01b0316336001600160a01b0316145b806113455750611330610df6565b6001600160a01b0316336001600160a01b0316145b6113615760405162461bcd60e51b815260040161084090612d72565b611369611c5e565b6000611373610e6d565b905061137d611e27565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906113ac903090600401612ad8565b602060405180830381865afa1580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed9190612ca4565b111561147c5761147c6113fe611b84565b6040516370a0823160e01b81526001600160a01b038416906370a082319061142a903090600401612ad8565b602060405180830381865afa158015611447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146b9190612ca4565b6001600160a01b0384169190611be9565b61086c611d8c565b600054610100900460ff168061149d575060005460ff16155b6114b95760405162461bcd60e51b815260040161084090612d24565b600054610100900460ff161580156114db576000805461ffff19166101011790555b6114e482611fbe565b80156114f6576000805461ff00191690555b5050565b600054610100900460ff1680611513575060005460ff16155b61152f5760405162461bcd60e51b815260040161084090612d24565b600054610100900460ff16158015611551576000805461ffff19166101011790555b61155a87611484565b61156386612026565b61156c8561203d565b61157584612054565b61157e8361206b565b61158782612082565b6115916001612099565b61159b6000611f80565b80156115ad576000805461ff00191690555b50505050505050565b6000806115c1611264565b90506000816001600160a01b0316634cdad506836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016116009190612ad8565b602060405180830381865afa15801561161d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116419190612ca4565b6040518263ffffffff1660e01b815260040161165f91815260200190565b602060405180830381865afa15801561167c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a09190612ca4565b9392505050565b6116af611b84565b6001600160a01b0316336001600160a01b031614806116e657506116d1611b25565b6001600160a01b0316336001600160a01b0316145b8061170957506116f4610df6565b6001600160a01b0316336001600160a01b0316145b6117255760405162461bcd60e51b815260040161084090612d72565b61172d611daf565b6000611737610e6d565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016117679190612ad8565b602060405180830381865afa158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a89190612ca4565b90508083116117cd576109746117bc611b84565b6001600160a01b0384169085611be9565b60006117d98483611c52565b90506117e4816120b1565b6040516370a0823160e01b81526001600160a01b038416906370a0823190611810903090600401612ad8565b602060405180830381865afa15801561182d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118519190612ca4565b915061187961185e611b84565b6118688685612131565b6001600160a01b0386169190611be9565b6040516370a0823160e01b81526001600160a01b038416906370a08231906118a5903090600401612ad8565b602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e69190612ca4565b9150600a8211156118f9576118f9611cb6565b611901611d8c565b50505050565b6000610728600080516020613048833981519152611c3f565b611928611b9c565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016119539190612ad8565b602060405180830381865afa158015611970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119949190612cda565b6119b05760405162461bcd60e51b815260040161084090612cfc565b610d036000611f80565b600054610100900460ff16806119d3575060005460ff16155b6119ef5760405162461bcd60e51b815260040161084090612d24565b600054610100900460ff16158015611a11576000805461ffff19166101011790555b611a33868686868673f3d1a027e858976634f81b7c41b09a05a46eda216114fa565b846001600160a01b0316836001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190612cbd565b6001600160a01b031614611aeb5760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610840565b611af483612147565b8015611131576000805461ff0019169055505050505050565b60006107286000805160206130688339815191525490565b6000611b2f611b9c565b6001600160a01b031663f77c47916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610774573d6000803e3d6000fd5b60006107286000805160206130088339815191525490565b6000610728600080516020612fc88339815191525490565b600080516020612f288339815191525490565b61086c600080516020612f68833981519152829055565b60006116a08284612dc7565b61086c600080516020613028833981519152829055565b6109748363a9059cbb60e01b8484604051602401611c08929190612dda565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261215e565b6000611c49825490565b60011492915050565b60006116a08284612df3565b611c66610b00565b611cae577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c2611c93610b00565b604080519115158252600060208301520160405180910390a1565b610d03612233565b611cbe611907565b15611cfd5760405162461bcd60e51b815260206004820152600f60248201526e656d657267656e637920737461746560881b6044820152606401610840565b6000611d07610e6d565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611d379190612ad8565b602060405180830381865afa158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612ca4565b905060648111156114f6576114f6816123a4565b6000611d966115b6565b905061086c600080516020613068833981519152829055565b6000611db9611b0d565b611dc16115b6565b1115611e05576000611ddc611dd4611b0d565b610bab6115b6565b9050611e01611de9610979565b611dfb611df46112c3565b8490612456565b90612462565b9150505b61147c6000805160206130a8833981519152611e2383610ba5610e3d565b9055565b6000611e31611264565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611e619190612ad8565b602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea29190612ca4565b111561086c576040516370a0823160e01b81526001600160a01b0382169063ba0876529082906370a0823190611edc903090600401612ad8565b602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190612ca4565b30306040518463ffffffff1660e01b8152600401611f3d93929190612e06565b6020604051808303816000875af1158015611f5c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f69190612ca4565b61086c6000805160206130488339815191528261246e565b600080516020612f2883398151915255565b611fb46000611baf565b610d036000611bd2565b600054610100900460ff1680611fd7575060005460ff16155b611ff35760405162461bcd60e51b815260040161084090612d24565b600054610100900460ff16158015612015576000805461ffff19166101011790555b61201e82611f98565b6114e4610eaf565b61086c600080516020613088833981519152829055565b61086c600080516020612fc8833981519152829055565b61086c600080516020612fa8833981519152829055565b61086c600080516020613008833981519152829055565b61086c600080516020612f88833981519152829055565b61086c600080516020612f088339815191528261246e565b60006120bb611264565b604051632d182be560e21b81529091506001600160a01b0382169063b460af94906120ee90859030908190600401612e06565b6020604051808303816000875af115801561210d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190612ca4565b600081831061214057816116a0565b5090919050565b61086c600080516020612f48833981519152829055565b60006121b3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166124889092919063ffffffff16565b90508051600014806121d45750808060200190518101906121d49190612cda565b6109745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610840565b61223b611daf565b6000612245610e3d565b9050801561086c57600061226c61225a6112c3565b611dfb612265610979565b8590612456565b9050612277826120b1565b6000612281610e6d565b905082816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016122b09190612ad8565b602060405180830381865afa1580156122cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f19190612ca4565b1015612383576123806123026112c3565b611dfb61230d610979565b6040516370a0823160e01b81526001600160a01b038616906370a0823190612339903090600401612ad8565b602060405180830381865afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a9190612ca4565b90612456565b91505b61238d818361249f565b60006000805160206130a883398151915255505050565b60006123ae610e6d565b905060006123ba611264565b90506123d16001600160a01b03831682600061285c565b6123e56001600160a01b038316828561285c565b604051636e553f6560e01b8152600481018490523060248201526001600160a01b03821690636e553f65906044016020604051808303816000875af1158015612432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119019190612ca4565b60006116a08284612e25565b60006116a08284612e3c565b6114f6828261247e576000612481565b60015b60ff169055565b6060612497848460008561295f565b949350505050565b60648111156127395760006124b2610979565b905060006124cc82611dfb6124c56106bd565b8690612456565b905060006124e683611dfb6124df610ab9565b8790612456565b9050600061250084611dfb6124f961127c565b8890612456565b9050600061250c610aa1565b90506000612518611b25565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa158015612555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125799190612cbd565b9050876001600160a01b0316600080516020612ee88339815191528885426040516125a693929190612e5e565b60405180910390a2876001600160a01b0316816001600160a01b03166000805160206130c88339815191528987426040516125e393929190612e5e565b60405180910390a3876001600160a01b0316826001600160a01b0316600080516020612fe883398151915289884260405161262093929190612e5e565b60405180910390a36000612632611b25565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126939190612cbd565b90506126aa6001600160a01b038a1682600061285c565b6126be6001600160a01b038a16828a61285c565b604051631112a1b760e11b81526001600160a01b038a81166004830152602482018690526044820188905260648201879052821690632225436e90608401600060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b50505050505050505050505050565b816001600160a01b0316600080516020612ee88339815191526000804260405161276593929190612e5e565b60405180910390a2816001600160a01b031661277f611b25565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e09190612cbd565b6001600160a01b03166000805160206130c88339815191526000804260405161280b93929190612e5e565b60405180910390a3816001600160a01b0316612825610aa1565b6001600160a01b0316600080516020612fe88339815191526000804260405161285093929190612e5e565b60405180910390a35050565b8015806128d55750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906128929030908690600401612d97565b602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d39190612ca4565b155b6129405760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610840565b6109748363095ea7b360e01b8484604051602401611c08929190612dda565b6060824710156129c05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610840565b600080866001600160a01b031685876040516129dc9190612e98565b60006040518083038185875af1925050503d8060008114612a19576040519150601f19603f3d011682016040523d82523d6000602084013e612a1e565b606091505b5091509150612a2f87838387612a3a565b979650505050505050565b60608315612aa9578251600003612aa2576001600160a01b0385163b612aa25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610840565b5081612497565b6124978383815115612abe5781518083602001fd5b8060405162461bcd60e51b81526004016108409190612eb4565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461086c57600080fd5b600060208284031215612b1357600080fd5b81356116a081612aec565b600080600060608486031215612b3357600080fd5b8335612b3e81612aec565b92506020840135612b4e81612aec565b929592945050506040919091013590565b60008060408385031215612b7257600080fd5b8235612b7d81612aec565b91506020830135612b8d81612aec565b809150509250929050565b600060208284031215612baa57600080fd5b5035919050565b60008060008060008060c08789031215612bca57600080fd5b8635612bd581612aec565b95506020870135612be581612aec565b94506040870135612bf581612aec565b93506060870135612c0581612aec565b92506080870135612c1581612aec565b915060a0870135612c2581612aec565b809150509295509295509295565b600080600080600060a08688031215612c4b57600080fd5b8535612c5681612aec565b94506020860135612c6681612aec565b93506040860135612c7681612aec565b92506060860135612c8681612aec565b91506080860135612c9681612aec565b809150509295509295909350565b600060208284031215612cb657600080fd5b5051919050565b600060208284031215612ccf57600080fd5b81516116a081612aec565b600060208284031215612cec57600080fd5b815180151581146116a057600080fd5b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d4657610d46612db1565b6001600160a01b03929092168252602082015260400190565b81810381811115610d4657610d46612db1565b9283526001600160a01b03918216602084015216604082015260600190565b8082028115828204841417610d4657610d46612db1565b600082612e5957634e487b7160e01b600052601260045260246000fd5b500490565b9283526020830191909152604082015260600190565b60005b83811015612e8f578181015183820152602001612e77565b50506000910152565b60008251612eaa818460208701612e74565b9190910192915050565b6020815260008251806020840152612ed3816040850160208701612e74565b601f01601f1916919091016040019291505056fe1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6a7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc462e4d44c9bae3e0ee3d71929710bef82ca7c929ce31980e75572ea415835b0e29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844476a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8efd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4111b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cddae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22ea07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2a1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5300af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97a9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c7a26469706673582212203e55783eb3f36106ff9fdd3605f3e306a92bfccff4b9e757224b97159ffe40e964736f6c634300081a0033