0 txs
314 calls
constructor
constructor(address _factory)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
apiVersion
purefunction apiVersion() pure returns (string)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
emergencyAdmin
viewfunction emergencyAdmin() view returns (address)
FACTORY
viewfunction FACTORY() view returns (address)
fullProfitUnlockDate
viewfunction fullProfitUnlockDate() view returns (uint256)
isShutdown
viewfunction isShutdown() view returns (bool)
keeper
viewfunction keeper() view returns (address)
lastReport
viewfunction lastReport() view returns (uint256)
management
viewfunction management() view returns (address)
MAX_FEE
viewfunction MAX_FEE() view returns (uint16)
maxDeposit
viewfunction maxDeposit(address owner) view returns (uint256)
maxMint
viewfunction maxMint(address owner) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address _owner) view returns (uint256)
pendingManagement
viewfunction pendingManagement() view returns (address)
performanceFee
viewfunction performanceFee() view returns (uint16)
performanceFeeRecipient
viewfunction performanceFeeRecipient() view returns (address)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
pricePerShare
viewfunction pricePerShare() view returns (uint256)
profitMaxUnlockTime
viewfunction profitMaxUnlockTime() view returns (uint256)
profitUnlockingRate
viewfunction profitUnlockingRate() view returns (uint256)
requireEmergencyAuthorized
viewfunction requireEmergencyAuthorized(address _sender) view
requireKeeperOrManagement
viewfunction requireKeeperOrManagement(address _sender) view
requireManagement
viewfunction requireManagement(address _sender) view
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
unlockedShares
viewfunction unlockedShares() view returns (uint256)
acceptManagement
nonpayablefunction acceptManagement()
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256 shares)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(uint256 amount)
initialize
nonpayablefunction initialize(address _asset, string _name, address _management, address _performanceFeeRecipient, address _keeper)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256 assets)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner, uint256 maxLoss) returns (uint256)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256)
report
nonpayablefunction report() returns (uint256 profit, uint256 loss)
setEmergencyAdmin
nonpayablefunction setEmergencyAdmin(address _emergencyAdmin)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setPendingManagement
nonpayablefunction setPendingManagement(address _management)
setPerformanceFee
nonpayablefunction setPerformanceFee(uint16 _performanceFee)
setPerformanceFeeRecipient
nonpayablefunction setPerformanceFeeRecipient(address _performanceFeeRecipient)
setProfitMaxUnlockTime
nonpayablefunction setProfitMaxUnlockTime(uint256 _profitMaxUnlockTime)
shutdownStrategy
nonpayablefunction shutdownStrategy()
tend
nonpayablefunction tend()
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner, uint256 maxLoss) returns (uint256 shares)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256 shares)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares)
NewTokenizedStrategy
event NewTokenizedStrategy(address indexed strategy, address indexed asset, string apiVersion)
Reported
event Reported(uint256 profit, uint256 loss, uint256 protocolFees, uint256 performanceFees)
StrategyShutdown
event StrategyShutdown()
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UpdateEmergencyAdmin
event UpdateEmergencyAdmin(address indexed newEmergencyAdmin)
UpdateKeeper
event UpdateKeeper(address indexed newKeeper)
UpdateManagement
event UpdateManagement(address indexed newManagement)
UpdatePendingManagement
event UpdatePendingManagement(address indexed newPendingManagement)
UpdatePerformanceFee
event UpdatePerformanceFee(uint16 newPerformanceFee)
UpdatePerformanceFeeRecipient
event UpdatePerformanceFeeRecipient(address indexed newPerformanceFeeRecipient)
UpdateProfitMaxUnlockTime
event UpdateProfitMaxUnlockTime(uint256 newProfitMaxUnlockTime)
Withdraw
event Withdraw(address indexed caller, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
errors
AddressZero
error AddressZero()
AlreadyInitialized
error AlreadyInitialized()
CannotBeSelf
error CannotBeSelf()
CannotBurnToAddressZero
error CannotBurnToAddressZero()
CannotMintToAddressZero
error CannotMintToAddressZero()
DepositMoreThanMax
error DepositMoreThanMax()
ExceedsMaxBPS
error ExceedsMaxBPS()
ExceedsMaxFee
error ExceedsMaxFee()
InsufficientAllowance
error InsufficientAllowance()
InvalidChainID
error InvalidChainID()
InvalidSigner
error InvalidSigner()
InvalidTransfer
error InvalidTransfer()
MintMoreThanMax
error MintMoreThanMax()
NotEmergencyAuthorized
error NotEmergencyAuthorized()
NotKeeper
error NotKeeper()
NotManagement
error NotManagement()
NotPending
error NotPending()
NotShutdown
error NotShutdown()
PermitDeadlineExpired
error PermitDeadlineExpired()
RedeemMoreThanMax
error RedeemMoreThanMax()
ReentrantCall
error ReentrantCall()
SelfMint
error SelfMint()
TooLong
error TooLong()
TooMuchLoss
error TooMuchLoss()
WithdrawMoreThanMax
error WithdrawMoreThanMax()
ZeroAssets
error ZeroAssets()
ZeroShares
error ZeroShares()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162003d7b38038062003d7b8339810160408190526200003491620000a8565b6001600160a01b03811660805260016200004d62000072565b80546001600160a01b0319166001600160a01b03929092169190911790555062000100565b600080620000a260017fd2841a5d2692465040bd5e06a6f3b37483952c866e0f304dc0e03f76a1f8a0b1620000da565b92915050565b600060208284031215620000bb57600080fd5b81516001600160a01b0381168114620000d357600080fd5b9392505050565b600082821015620000fb57634e487b7160e01b600052601160045260246000fd5b500390565b608051613c5862000123600039600081816104bb0152610a790152613c586000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c806387788782116101f4578063be8f16681161011a578063d505accf116100ad578063df69b22a1161007c578063df69b22a1461077b578063ed27f7c91461078e578063ef8b30f7146106f9578063f629b7901461079657600080fd5b8063d505accf1461073a578063d905777e1461074d578063d9a0e97a14610760578063dd62ed3e1461076857600080fd5b8063c6e6f592116100e9578063c6e6f592146106f9578063c8c2fe6c1461070c578063ce96cb7714610714578063d43fdcf71461072757600080fd5b8063be8f1668146106ce578063bf86d690146106d6578063c3535b52146106de578063c63d75b6146106e657600080fd5b8063a318c1a411610192578063b3d7f6b911610161578063b3d7f6b91461068c578063b460af941461069f578063ba087652146106b2578063bc063e1a146106c557600080fd5b8063a318c1a41461064b578063a9059cbb1461065e578063aa290e6d14610671578063aced16611461068457600080fd5b806395d89b41116101ce57806395d89b411461061557806397073ae61461061d57806399530b06146106305780639f40a7b31461063857600080fd5b806387788782146105df57806388a8d602146105fa57806394bf804d1461060257600080fd5b80633644e515116102d95780635312ea8e1161027757806370a082311161024657806370a0823114610593578063748747e6146105a65780637ecebe00146105b957806382e00a44146105cc57600080fd5b80635312ea8e146105525780636a5f1aa2146105655780636e553f651461057857806370905dce1461058b57600080fd5b8063440368a3116102b3578063440368a31461052f57806348e4a649146105375780634cdad506146103e45780635141eebb1461054a57600080fd5b80633644e5151461050c57806338d52e0f14610514578063402d267d1461051c57600080fd5b806318160ddd116103515780632d632692116103205780632d632692146104ae5780632dd31000146104b6578063313ce567146104dd57806335da3394146104f757600080fd5b806318160ddd1461045557806323b872dd1461045d57806325829410146104705780632606a10b1461049157600080fd5b80630952864e1161038d5780630952864e146103f7578063095ea7b3146103ff5780630a28a477146104225780630b68f46f1461043557600080fd5b806301e1d114146103b457806306fdde03146103cf57806307a2d13a146103e4575b600080fd5b6103bc6107a9565b6040519081526020015b60405180910390f35b6103d76107c2565b6040516103c69190613492565b6103bc6103f23660046134c5565b61085d565b6103bc610878565b61041261040d366004613503565b610891565b60405190151581526020016103c6565b6103bc6104303660046134c5565b6108af565b61043d6108c4565b6040516001600160a01b0390911681526020016103c6565b6103bc6108e0565b61041261046b36600461352f565b6108f2565b604080518082019091526005815264199718171960d91b60208201526103d7565b610499610924565b604080519283526020830191909152016103c6565b6103bc610d60565b61043d7f000000000000000000000000000000000000000000000000000000000000000081565b6104e5610d7c565b60405160ff90911681526020016103c6565b61050a610505366004613570565b610d96565b005b6103bc610e27565b61043d610e6b565b6103bc61052a366004613570565b610e84565b61050a610e97565b61050a610545366004613570565b610fd2565b6103bc611029565b61050a6105603660046134c5565b61103c565b61050a610573366004613570565b611166565b6103bc61058636600461358d565b611250565b61043d611345565b6103bc6105a1366004613570565b611361565b61050a6105b4366004613570565b611374565b6103bc6105c7366004613570565b6113d8565b61050a6105da366004613570565b611404565b6105e7611483565b60405161ffff90911681526020016103c6565b61043d6114a2565b6103bc61061036600461358d565b6114c5565b6103d761159f565b61050a61062b36600461362c565b611656565b6103bc611975565b6103bc6106463660046136f1565b6119a7565b6103bc6106593660046136f1565b611aa5565b61041261066c366004613503565b611b9f565b61050a61067f366004613749565b611bb4565b61043d611c5c565b6103bc61069a3660046134c5565b611c7f565b6103bc6106ad366004613766565b611c94565b6103bc6106c0366004613766565b611cab565b6105e761138881565b61050a611cbb565b610412611d31565b6103bc611d4e565b6103bc6106f4366004613570565b611d6a565b6103bc6107073660046134c5565b611d7d565b61050a611d92565b6103bc610722366004613570565b611e4e565b61050a610735366004613570565b611e61565b61050a6107483660046137b7565b611ee3565b6103bc61075b366004613570565b6120e8565b6103bc6120fb565b6103bc610776366004613828565b61210d565b61050a6107893660046134c5565b612148565b61043d612231565b61050a6107a4366004613570565b612257565b60006107bd6107b66122ea565b6007015490565b905090565b60606107cc6122ea565b60010180546107da90613856565b80601f016020809104026020016040519081016040528092919081815260200182805461080690613856565b80156108535780601f1061082857610100808354040283529160200191610853565b820191906000526020600020905b81548152906001019060200180831161083657829003601f168201915b5050505050905090565b600061087261086a6122ea565b836000612318565b92915050565b60006108826122ea565b600a015463ffffffff16919050565b60006108a661089e6122ea565b338585612353565b50600192915050565b60006108726108bc6122ea565b8360016123f3565b60006108ce6122ea565b600c01546001600160a01b0316919050565b60006107bd6108ed6122ea565b612443565b6000806108fd6122ea565b905061090b8186338661245d565b610917818686866124dd565b60019150505b9392505050565b60008060006109316122ea565b600d810154909150600160a01b900460ff1660021415610964576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b17905561098233611e61565b600061098c6122ea565b90506000306001600160a01b03166349317f1d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f4919061388b565b90506000610a03836007015490565b90506000610a10846125cb565b600a8501549091506000908190819063ffffffff1685871115610b94578587039a50610a3e888c60006123f3565b600a890154909250640100000000900461ffff1660008115610b535761271061ffff83168e0204955061271061ffff831685020490506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635153b1996040518163ffffffff1660e01b81526004016040805180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af891906138ba565b9150915060008261ffff16600014610b29575061271061ffff83168981028290049850840204610b298d8383612633565b600a8d0154610b4f908e90660100000000000090046001600160a01b0316838703612633565b5050505b8215610b8d57808403935083871115610b7857610b738a30868a036126e4565b610b8d565b86841115610b8d57610b8d8a30898703612633565b5050610be9565b868603995089600014610bd857306000908152600589016020526040812054610bd5918790610bc6908c908f906123f3565b610bd091906138ff565b61279c565b94505b8415610be957610be98830876126e4565b3060009081526005890160205260409020548015610ca95760098901546000906001600160601b031642811115610c2d5784830342826001600160601b0316030291505b600083610c3a8688613917565b610c4490856138ff565b610c4e9190613936565b905080610c6064e8d4a5100086613917565b610c6a9190613936565b60088d0155610c7981426138ff565b60098d0180546bffffffffffffffffffffffff19166001600160601b039290921691909117905550610cc1915050565b6009890180546bffffffffffffffffffffffff191690555b60078901889055600b890180546bffffffffffffffffffffffff1916426001600160601b03161790557fecdd072e4d5bd913a75a37f02daedcea7e2dc0281f9942c0063cfd1cfe5c4c4f8c8c86610d18818a613958565b60408051948552602085019390935291830152606082015260800160405180910390a1505050600d909601805460ff60a01b1916600160a01b17905550959694955050505050565b6000610d6a6122ea565b600901546001600160601b0316919050565b6000610d866122ea565b54600160a01b900460ff16919050565b610d9f33610fd2565b806001600160a01b0316610db16122ea565b600d01546001600160a01b031614610e245780610dcc6122ea565b600d01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055604051908216907f2bf242d027263e45fab022c28b4144255c97b30b8e54c30f1f5757906d487f0990600090a25b50565b600080610e326122ea565b8054909150600160a81b90046affffffffffffffffffffff164614610e5f57610e5a816127b2565b610e65565b80600301545b91505090565b6000610e756122ea565b546001600160a01b0316919050565b6000610872610e916122ea565b83612869565b6000610ea16122ea565b600d810154909150600160a01b900460ff1660021415610ed4576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b179055610ef233611e61565b30639d7fb70c610f006122ea565b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a919061388b565b6040518263ffffffff1660e01b8152600401610f8891815260200190565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050600d909101805460ff60a01b1916600160a01b17905550565b610fda6122ea565b600b01546001600160a01b03828116600160601b9092041614610e24576040517f0f86c97b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110336122ea565b60080154905090565b60006110466122ea565b600d810154909150600160a01b900460ff1660021415611079576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b17905561109733611404565b61109f6122ea565b600d0154600160a81b900460ff166110e3576040517ff1516dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffde813a800000000000000000000000000000000000000000000000000000000815260048101839052309063fde813a890602401600060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b505050600d909101805460ff60a01b1916600160a01b1790555050565b61116f33610fd2565b6001600160a01b03811661119657604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b0381163014156111d9576040517f9941e6f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806111e26122ea565b600a0180547fffffffffffff0000000000000000000000000000000000000000ffffffffffff1666010000000000006001600160a01b0393841602179055604051908216907f9ebbf695dd251e855d9d15a146a72f5f654dc6f8630fbc11212f27e0c88ba11a90600090a250565b60008061125b6122ea565b600d810154909150600160a01b900460ff166002141561128e576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b17905560006112ad6122ea565b90506112b98185612869565b8511156112f2576040517fb3c61a8300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fe818660006123f3565b92508261131e57604051639811e0c760e01b815260040160405180910390fd5b61132a818587866128f0565b50600d01805460ff60a01b1916600160a01b17905592915050565b600061134f6122ea565b600d01546001600160a01b0316919050565b600061087261136e6122ea565b83612a64565b61137d33610fd2565b806113866122ea565b60090180546001600160601b0316600160601b6001600160a01b0393841602179055604051908216907fd7f49e282c36d417b290d4181a56943f6d670aaa2987c0d40e60d39919c6888290600090a250565b60006113e26122ea565b6001600160a01b03909216600090815260049290920160205250604090205490565b600061140e6122ea565b600d8101549091506001600160a01b038381169116148015906114485750600b8101546001600160a01b03838116600160601b9092041614155b1561147f576040517f6bb081d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600061148d6122ea565b600a0154640100000000900461ffff16919050565b60006114ac6122ea565b600b0154600160601b90046001600160a01b0316919050565b6000806114d06122ea565b600d810154909150600160a01b900460ff1660021415611503576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b17905560006115226122ea565b905061152e8185612acc565b851115611567576040517f6a69595900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61157381866001612318565b92508261159357604051630cb65c7760e21b815260040160405180910390fd5b61132a818585886128f0565b60606115a96122ea565b54604080517f95d89b4100000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916395d89b41916004808201926000929091908290030181865afa15801561160a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611632919081019061396f565b60405160200161164291906139dd565b604051602081830303815290604052905090565b60006116606122ea565b80549091506001600160a01b0316156116a5576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03871617815584516116e090600183019060208801906133cd565b50856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561171f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117439190613a22565b815460ff91909116600160a01b0260ff60a01b199091161781556affffffffffffffffffffff4611156117a2576040517f86d846fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805474ffffffffffffffffffffffffffffffffffffffffff16600160a81b466affffffffffffffffffffff16021781556117db816127b2565b6003820155600a8101805463ffffffff191690556001600160a01b03831661181657604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b038316301415611840576040516309ba6e5760e11b815260040160405180910390fd5b600a810180547fffffffffffff00000000000000000000000000000000000000000000ffffffff1666010000000000006001600160a01b038681169190910265ffff000000001916919091176503e80000000017909155600b820180546bffffffffffffffffffffffff1916426001600160601b031617905584166118d857604051639fabe1c160e01b815260040160405180910390fd5b600b810180546001600160a01b03808716600160601b9081026001600160601b0393841617909355600984018054868316909402939092169290921790556040805180820182526005815264199718171960d91b602082015290519188169130917ffb1616746b8474b6b7c67f2fe5ada156ed24774d0efe8bfe529cf537ba173330916119659190613492565b60405180910390a3505050505050565b6000806119806122ea565b8054909150610e659082906119a090600160a01b900460ff16600a613b23565b6000612318565b6000806119b26122ea565b600d810154909150600160a01b900460ff16600214156119e5576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b1790556000611a046122ea565b9050611a108186612b6a565b871115611a49576040517f4656425a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a5782896000612318565b905080611a7757604051630cb65c7760e21b815260040160405180910390fd5b611a85828888848c8a612c04565b93505050600d01805460ff60a01b1916600160a01b179055949350505050565b600080611ab06122ea565b600d810154909150600160a01b900460ff1660021415611ae3576040516306fda65d60e31b815260040160405180910390fd5b600d8101805460ff60a01b1916600160a11b1790556000611b026122ea565b9050611b0e8186612edb565b871115611b47576040517f936941fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b53818860016123f3565b925082611b7357604051639811e0c760e01b815260040160405180910390fd5b611b818187878a8789612c04565b5050600d01805460ff60a01b1916600160a01b179055949350505050565b60006108a6611bac6122ea565b3385856124dd565b611bbd33610fd2565b61138861ffff82161115611bfd576040517f71b0df8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80611c066122ea565b600a01805465ffff00000000191664010000000061ffff9384160217905560405190821681527fdc843735e683348ec21c302ffff45462399c5c46f75f67b0a1a5395c535997539060200160405180910390a150565b6000611c666122ea565b60090154600160601b90046001600160a01b0316919050565b6000610872611c8c6122ea565b836001612318565b6000611ca38484846000611aa5565b949350505050565b6000611ca38484846127106119a7565b611cc433611404565b6001611cce6122ea565b600d018054911515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9092169190911790556040517ffc1249757a7f27c510c8173c55d03ba442e0d33d9223e06ceb416feac8c7693f90600090a1565b6000611d3b6122ea565b600d0154600160a81b900460ff16919050565b6000611d586122ea565b600b01546001600160601b0316919050565b6000610872611d776122ea565b83612acc565b6000610872611d8a6122ea565b8360006123f3565b6000611d9c6122ea565b600c8101549091506001600160a01b03163314611de5576040517f7dc6505a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b810180546001600160601b031633600160601b810291909117909155600c8201805473ffffffffffffffffffffffffffffffffffffffff191690556040517fff54978127edd34aec0f9061fb3b155fbe0ededdfa881ee3e0d541d3a1eef43890600090a250565b6000610872611e5b6122ea565b83612edb565b6000611e6b6122ea565b60098101549091506001600160a01b03838116600160601b9092041614801590611eac5750600b8101546001600160a01b03838116600160601b9092041614155b1561147f576040517ff512b27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42841015611f1d576040517f05787bdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001611f29610e27565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a611f556122ea565b6001600160a01b038f8116600090815260049290920160209081526040928390208054600181019091558351808301989098529582168784015293166060860152608085019190915260a084019290925260c08084018b90528251808503909101815260e0840190925281519101207f19010000000000000000000000000000000000000000000000000000000000006101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561205f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615806120945750876001600160a01b0316816001600160a01b031614155b156120cb576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120de6120d66122ea565b828989612353565b5050505050505050565b60006108726120f56122ea565b83612b6a565b60006107bd6121086122ea565b6125cb565b600061091d61211a6122ea565b6001600160a01b03808616600090815260069290920160209081526040808420928716845291905290205490565b61215133610fd2565b6301e1855881111561218f576040517f4ee45b5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121996122ea565b9050816121e35730600090815260058201602052604090205480156121c3576121c38230836126e4565b50600060088201556009810180546bffffffffffffffffffffffff191690555b600a8101805463ffffffff191663ffffffff84161790556040518281527ff361aed463da6fa20358e45c6209f1d3e16d4eca706e6eab0b0aeb338729c77a9060200160405180910390a15050565b600061223b6122ea565b600a0154660100000000000090046001600160a01b0316919050565b61226033610fd2565b6001600160a01b03811661228757604051639fabe1c160e01b815260040160405180910390fd5b806122906122ea565b600c01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055604051908216907fd74668a8c80a07cc56d7c3318a06439eaa815e740d97dcd83487e1fc75076b8b90600090a250565b60008061087260017fd2841a5d2692465040bd5e06a6f3b37483952c866e0f304dc0e03f76a1f8a0b1613958565b60008061232485612443565b905080156123485761234361233a866007015490565b85908386612f77565b61234a565b835b95945050505050565b6001600160a01b038316158061237057506001600160a01b038216155b1561238e57604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b03838116600081815260068701602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a350505050565b600080612401856007015490565b9050600061240e86612443565b90508161242d578015612422576000612424565b845b9250505061091d565b61243985828487612f77565b9695505050505050565b600061244e826125cb565b82600201546108729190613958565b6001600160a01b03838116600090815260068601602090815260408083209386168352929052205460001981146124d657818110156124c8576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124d6858585858503612353565b5050505050565b6001600160a01b03831615806124fa57506001600160a01b038216155b8061250d57506001600160a01b03821630145b15612544576040517f2f35253100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831660009081526005850160205260408120805483929061256e908490613958565b90915550506001600160a01b038083166000818152600587016020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123e59085815260200190565b60098101546000906001600160601b03164281111561260957600b830154600884015464e8d4a51000916001600160601b031642030204915061262d565b6001600160601b0381161561262d5730600090815260058401602052604090205491505b50919050565b6001600160a01b038216612673576040517f9d79445200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8083600201600082825461268791906138ff565b90915550506001600160a01b03821660008181526005850160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b6001600160a01b038216612724576040517fb67fd91c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526005840160205260408120805483929061274e908490613958565b909155505060028301805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016126d7565b60008183106127ab578161091d565b5090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f826001016040516127e69190613b32565b6040805191829003822082820182526005835264199718171960d91b6020938401528151928301939093528101919091527f9b05054bd9341297fefb2453389e7533e0f19626959ede8bc13c51627768c97460608201524660808201523060a082015260c001604051602081830303815290604052805190602001209050919050565b600d820154600090600160a81b900460ff161561288857506000610872565b604051632355178960e11b81526001600160a01b038316600482015230906346aa2f1290602401602060405180830381865afa1580156128cc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091d919061388b565b6001600160a01b03831630141561291a576040516309ba6e5760e11b815260040160405180910390fd5b83546001600160a01b031661293181333086612fc8565b6040516370a0823160e01b815230600482018190529063503160d9906001600160a01b038416906370a0823190602401602060405180830381865afa15801561297e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a2919061388b565b6040518263ffffffff1660e01b81526004016129c091815260200190565b600060405180830381600087803b1580156129da57600080fd5b505af11580156129ee573d6000803e3d6000fd5b5050505082856007016000828254612a0691906138ff565b90915550612a179050858584612633565b60408051848152602081018490526001600160a01b0386169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a35050505050565b60006001600160a01b038216301415612aac57612a80836125cb565b6001600160a01b0383166000908152600585016020526040902054612aa59190613958565b9050610872565b506001600160a01b03166000908152600591909101602052604090205490565b600d820154600090600160a81b900460ff1615612aeb57506000610872565b604051632355178960e11b81526001600160a01b038316600482015230906346aa2f1290602401602060405180830381865afa158015612b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b53919061388b565b905060001981146108725761091d838260006123f3565b6040516304bd462960e01b81526001600160a01b038216600482015260009030906304bd462990602401602060405180830381865afa158015612bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd5919061388b565b9050600019811415612beb57612aa58383612a64565b61091d612bfa848360006123f3565b610bd08585612a64565b60006001600160a01b038616612c2d57604051639fabe1c160e01b815260040160405180910390fd5b612710821115612c69576040517fb49de9a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614612c8557612c858786338661245d565b86546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015612cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf5919061388b565b9050600086821015612e40576040517f3d6cb57500000000000000000000000000000000000000000000000000000000815282880360048201523090633d6cb57590602401600060405180830381600087803b158015612d5457600080fd5b505af1158015612d68573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd4919061388b565b915086821015612e405750808603612710851015612e3c57612710612df98689613917565b612e039190613936565b811115612e3c576040517f0fecbc7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8196505b612e4a81886138ff565b8a6007016000828254612e5d9190613958565b90915550612e6e90508a89886126e4565b612e826001600160a01b0384168a8961307f565b60408051888152602081018890526001600160a01b03808b1692908c169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4509498975050505050505050565b6040516304bd462960e01b81526001600160a01b038216600482015260009030906304bd462990602401602060405180830381865afa158015612f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f46919061388b565b9050600019811415612f6057612aa5836119a08585612a64565b61091d612f71846119a08686612a64565b8261279c565b600080612f858686866130cd565b90506001836002811115612f9b57612f9b613bce565b148015612fb8575060008480612fb357612fb36138a4565b868809115b1561234a576124396001826138ff565b6040516001600160a01b03808516602483015283166044820152606481018290526130799085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526131c5565b50505050565b6040516001600160a01b0383166024820152604481018290526130c89084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613015565b505050565b600080806000198587098587029250828110838203039150508060001415613108578382816130fe576130fe6138a4565b049250505061091d565b80841161315c5760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f77000000000000000000000060448201526064015b60405180910390fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600061321a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166132ad9092919063ffffffff16565b905080516000148061323b57508080602001905181019061323b9190613be4565b6130c85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401613153565b6060611ca3848460008585600080866001600160a01b031685876040516132d49190613c06565b60006040518083038185875af1925050503d8060008114613311576040519150601f19603f3d011682016040523d82523d6000602084013e613316565b606091505b509150915061332787838387613332565b979650505050505050565b6060831561339e578251613397576001600160a01b0385163b6133975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401613153565b5081611ca3565b611ca383838151156133b35781518083602001fd5b8060405162461bcd60e51b81526004016131539190613492565b8280546133d990613856565b90600052602060002090601f0160209004810192826133fb5760008555613441565b82601f1061341457805160ff1916838001178555613441565b82800160010185558215613441579182015b82811115613441578251825591602001919060010190613426565b5061344d929150613451565b5090565b5b8082111561344d5760008155600101613452565b60005b83811015613481578181015183820152602001613469565b838111156130795750506000910152565b60208152600082518060208401526134b1816040850160208701613466565b601f01601f19169190910160400192915050565b6000602082840312156134d757600080fd5b5035919050565b6001600160a01b0381168114610e2457600080fd5b80356134fe816134de565b919050565b6000806040838503121561351657600080fd5b8235613521816134de565b946020939093013593505050565b60008060006060848603121561354457600080fd5b833561354f816134de565b9250602084013561355f816134de565b929592945050506040919091013590565b60006020828403121561358257600080fd5b813561091d816134de565b600080604083850312156135a057600080fd5b8235915060208301356135b2816134de565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156135fc576135fc6135bd565b604052919050565b600067ffffffffffffffff82111561361e5761361e6135bd565b50601f01601f191660200190565b600080600080600060a0868803121561364457600080fd5b853561364f816134de565b9450602086013567ffffffffffffffff81111561366b57600080fd5b8601601f8101881361367c57600080fd5b803561368f61368a82613604565b6135d3565b8181528960208385010111156136a457600080fd5b816020840160208301376000602083830101528096505050506136c9604087016134f3565b92506136d7606087016134f3565b91506136e5608087016134f3565b90509295509295909350565b6000806000806080858703121561370757600080fd5b843593506020850135613719816134de565b92506040850135613729816134de565b9396929550929360600135925050565b61ffff81168114610e2457600080fd5b60006020828403121561375b57600080fd5b813561091d81613739565b60008060006060848603121561377b57600080fd5b83359250602084013561378d816134de565b9150604084013561379d816134de565b809150509250925092565b60ff81168114610e2457600080fd5b600080600080600080600060e0888a0312156137d257600080fd5b87356137dd816134de565b965060208801356137ed816134de565b95506040880135945060608801359350608088013561380b816137a8565b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561383b57600080fd5b8235613846816134de565b915060208301356135b2816134de565b600181811c9082168061386a57607f821691505b6020821081141561262d57634e487b7160e01b600052602260045260246000fd5b60006020828403121561389d57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600080604083850312156138cd57600080fd5b82516138d881613739565b60208401519092506135b2816134de565b634e487b7160e01b600052601160045260246000fd5b60008219821115613912576139126138e9565b500190565b6000816000190483118215151615613931576139316138e9565b500290565b60008261395357634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561396a5761396a6138e9565b500390565b60006020828403121561398157600080fd5b815167ffffffffffffffff81111561399857600080fd5b8201601f810184136139a957600080fd5b80516139b761368a82613604565b8181528560208385010111156139cc57600080fd5b61234a826020830160208601613466565b7f7973000000000000000000000000000000000000000000000000000000000000815260008251613a15816002850160208701613466565b9190910160020192915050565b600060208284031215613a3457600080fd5b815161091d816137a8565b600181815b80851115613a7a578160001904821115613a6057613a606138e9565b80851615613a6d57918102915b93841c9390800290613a44565b509250929050565b600082613a9157506001610872565b81613a9e57506000610872565b8160018114613ab45760028114613abe57613ada565b6001915050610872565b60ff841115613acf57613acf6138e9565b50506001821b610872565b5060208310610133831016604e8410600b8410161715613afd575081810a610872565b613b078383613a3f565b8060001904821115613b1b57613b1b6138e9565b029392505050565b600061091d60ff841683613a82565b600080835481600182811c915080831680613b4e57607f831692505b6020808410821415613b6e57634e487b7160e01b86526022600452602486fd5b818015613b825760018114613b9357613bc0565b60ff19861689528489019650613bc0565b60008a81526020902060005b86811015613bb85781548b820152908501908301613b9f565b505084890196505b509498975050505050505050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613bf657600080fd5b8151801515811461091d57600080fd5b60008251613c18818460208701613466565b919091019291505056fea26469706673582212209c747e94dc37ea6a8e66853b0aea448949251dd6ac9f57688d7109d3476a8e6164736f6c634300080c0033000000000000000000000000f84117f7b77bf66bbec50d0178dc6493189cef6f