0 txs
0 calls
constructor
No constructor.
functions
aaveIncentivesController
viewfunction aaveIncentivesController() view returns (address)
addressesProvider
viewfunction addressesProvider() view returns (address)
borrowBalanceInOf
viewfunction borrowBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
BORROWING_MASK
viewfunction BORROWING_MASK() view returns (bytes32)
borrowMask
viewfunction borrowMask(address) view returns (bytes32)
DEFAULT_LIQUIDATION_CLOSE_FACTOR
viewfunction DEFAULT_LIQUIDATION_CLOSE_FACTOR() view returns (uint256)
defaultMaxGasForMatching
viewfunction defaultMaxGasForMatching() view returns (uint64 supply, uint64 borrow, uint64 withdraw, uint64 repay)
deltas
viewfunction deltas(address) view returns (uint256 p2pSupplyDelta, uint256 p2pBorrowDelta, uint256 p2pSupplyAmount, uint256 p2pBorrowAmount)
entryPositionsManager
viewfunction entryPositionsManager() view returns (address)
exitPositionsManager
viewfunction exitPositionsManager() view returns (address)
getHead
viewfunction getHead(address _poolToken, uint8 _positionType) view returns (address head)
getMarketsCreated
viewfunction getMarketsCreated() view returns (address[])
getNext
viewfunction getNext(address _poolToken, uint8 _positionType, address _user) view returns (address next)
HEALTH_FACTOR_LIQUIDATION_THRESHOLD
viewfunction HEALTH_FACTOR_LIQUIDATION_THRESHOLD() view returns (uint256)
incentivesVault
viewfunction incentivesVault() view returns (address)
interestRatesManager
viewfunction interestRatesManager() view returns (address)
isClaimRewardsPaused
viewfunction isClaimRewardsPaused() view returns (bool)
market
viewfunction market(address) view returns (address underlyingToken, uint16 reserveFactor, uint16 p2pIndexCursor, bool isCreated, bool isPaused, bool isPartiallyPaused, bool isP2PDisabled)
marketsCreated
viewfunction marketsCreated(uint256) view returns (address)
MAX_BASIS_POINTS
viewfunction MAX_BASIS_POINTS() view returns (uint16)
MAX_NB_OF_MARKETS
viewfunction MAX_NB_OF_MARKETS() view returns (uint256)
maxSortedUsers
viewfunction maxSortedUsers() view returns (uint256)
NO_REFERRAL_CODE
viewfunction NO_REFERRAL_CODE() view returns (uint8)
ONE
viewfunction ONE() view returns (bytes32)
owner
viewfunction owner() view returns (address)
p2pBorrowIndex
viewfunction p2pBorrowIndex(address) view returns (uint256)
p2pSupplyIndex
viewfunction p2pSupplyIndex(address) view returns (uint256)
pool
viewfunction pool() view returns (address)
poolIndexes
viewfunction poolIndexes(address) view returns (uint32 lastUpdateTimestamp, uint112 poolSupplyIndex, uint112 poolBorrowIndex)
rewardsManager
viewfunction rewardsManager() view returns (address)
supplyBalanceInOf
viewfunction supplyBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
treasuryVault
viewfunction treasuryVault() view returns (address)
userMarkets
viewfunction userMarkets(address) view returns (bytes32)
VARIABLE_INTEREST_MODE
viewfunction VARIABLE_INTEREST_MODE() view returns (uint8)
borrow
nonpayablefunction borrow(address _poolToken, uint256 _amount, uint256 _maxGasForMatching)
borrow
nonpayablefunction borrow(address _poolToken, uint256 _amount)
claimRewards
nonpayablefunction claimRewards(address[] _assets, bool _tradeForMorphoToken) returns (uint256 claimedAmount)
claimToTreasury
nonpayablefunction claimToTreasury(address[] _poolTokens, uint256[] _amounts)
createMarket
nonpayablefunction createMarket(address _underlyingToken, uint16 _reserveFactor, uint16 _p2pIndexCursor)
initialize
nonpayablefunction initialize(address _entryPositionsManager, address _exitPositionsManager, address _interestRatesManager, address _lendingPoolAddressesProvider, tuple _defaultMaxGasForMatching, uint256 _maxSortedUsers)
liquidate
nonpayablefunction liquidate(address _poolTokenBorrowed, address _poolTokenCollateral, address _borrower, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(address _poolToken, address _onBehalf, uint256 _amount)
setAaveIncentivesController
nonpayablefunction setAaveIncentivesController(address _aaveIncentivesController)
setAssetAsCollateral
nonpayablefunction setAssetAsCollateral(address _poolToken, bool _newStatus)
setClaimRewardsPauseStatus
nonpayablefunction setClaimRewardsPauseStatus(bool _newStatus)
setDefaultMaxGasForMatching
nonpayablefunction setDefaultMaxGasForMatching(tuple _defaultMaxGasForMatching)
setEntryPositionsManager
nonpayablefunction setEntryPositionsManager(address _entryPositionsManager)
setExitPositionsManager
nonpayablefunction setExitPositionsManager(address _exitPositionsManager)
setIncentivesVault
nonpayablefunction setIncentivesVault(address _incentivesVault)
setInterestRatesManager
nonpayablefunction setInterestRatesManager(address _interestRatesManager)
setMaxSortedUsers
nonpayablefunction setMaxSortedUsers(uint256 _newMaxSortedUsers)
setP2PDisabledStatus
nonpayablefunction setP2PDisabledStatus(address _poolToken, bool _newStatus)
setP2PIndexCursor
nonpayablefunction setP2PIndexCursor(address _poolToken, uint16 _p2pIndexCursor)
setPartialPauseStatus
nonpayablefunction setPartialPauseStatus(address _poolToken, bool _newStatus)
setPauseStatus
nonpayablefunction setPauseStatus(address _poolToken, bool _newStatus)
setPauseStatusForAllMarkets
nonpayablefunction setPauseStatusForAllMarkets(bool _newStatus)
setReserveFactor
nonpayablefunction setReserveFactor(address _poolToken, uint16 _newReserveFactor)
setRewardsManager
nonpayablefunction setRewardsManager(address _rewardsManager)
setTreasuryVault
nonpayablefunction setTreasuryVault(address _treasuryVault)
supply
nonpayablefunction supply(address _poolToken, address _onBehalf, uint256 _amount, uint256 _maxGasForMatching)
supply
nonpayablefunction supply(address _poolToken, address _onBehalf, uint256 _amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateIndexes
nonpayablefunction updateIndexes(address _poolToken)
withdraw
nonpayablefunction withdraw(address _poolToken, uint256 _amount)
events
AaveIncentivesControllerSet
event AaveIncentivesControllerSet(address indexed _aaveIncentivesController)
ClaimRewardsPauseStatusSet
event ClaimRewardsPauseStatusSet(bool _newStatus)
DefaultMaxGasForMatchingSet
event DefaultMaxGasForMatchingSet((uint64 supply, uint64 borrow, uint64 withdraw, uint64 repay) _defaultMaxGasForMatching)
EntryPositionsManagerSet
event EntryPositionsManagerSet(address indexed _entryPositionsManager)
ExitPositionsManagerSet
event ExitPositionsManagerSet(address indexed _exitPositionsManager)
IncentivesVaultSet
event IncentivesVaultSet(address indexed _newIncentivesVaultAddress)
InterestRatesSet
event InterestRatesSet(address indexed _interestRatesManager)
MarketCreated
event MarketCreated(address indexed _poolToken, uint16 _reserveFactor, uint16 _p2pIndexCursor)
MaxSortedUsersSet
event MaxSortedUsersSet(uint256 _newValue)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
P2PIndexCursorSet
event P2PIndexCursorSet(address indexed _poolToken, uint16 _newValue)
P2PStatusSet
event P2PStatusSet(address indexed _poolToken, bool _isP2PDisabled)
PartialPauseStatusSet
event PartialPauseStatusSet(address indexed _poolToken, bool _newStatus)
PauseStatusSet
event PauseStatusSet(address indexed _poolToken, bool _newStatus)
ReserveFactorSet
event ReserveFactorSet(address indexed _poolToken, uint16 _newValue)
ReserveFeeClaimed
event ReserveFeeClaimed(address indexed _poolToken, uint256 _amountClaimed)
RewardsClaimed
event RewardsClaimed(address indexed _user, uint256 _amountClaimed, bool indexed _traded)
RewardsManagerSet
event RewardsManagerSet(address indexed _newRewardsManagerAddress)
TreasuryVaultSet
event TreasuryVaultSet(address indexed _newTreasuryVaultAddress)
errors
ClaimRewardsPaused
error ClaimRewardsPaused()
ExceedsMaxBasisPoints
error ExceedsMaxBasisPoints()
MarketAlreadyCreated
error MarketAlreadyCreated()
MarketIsNotListedOnAave
error MarketIsNotListedOnAave()
MarketNotCreated
error MarketNotCreated()
MarketPaused
error MarketPaused()
MaxNumberOfMarkets
error MaxNumberOfMarkets()
MaxSortedUsersCannotBeZero
error MaxSortedUsersCannotBeZero()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b506200010b565b6000620000f630620000fc60201b620031971760201c565b15905090565b6001600160a01b03163b151590565b613f19806200011b6000396000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c8063947574ac1161020a578063c72c4d1011610125578063e5a602ac116100b8578063f3fef3a311610087578063f3fef3a314610a89578063f4ea93d814610a9c578063f62256c714610ab8578063f8180c6614610acb578063fb8b758d14610ade57600080fd5b8063e5a602ac146109f5578063e61c6d6f14610a08578063f2f4ca1614610a11578063f2fde38b14610a7657600080fd5b8063d664f72c116100f4578063d664f72c14610994578063defe20531461099d578063df303f8a146109b0578063e501ed04146109c357600080fd5b8063c72c4d101461093e578063c7a5b98314610951578063cb830d0314610964578063d5f80c341461098157600080fd5b8063af8b1c6f1161019d578063bc45d1901161016c578063bc45d190146108f4578063c1bce0b714610914578063c2ee3a0814610927578063c3525c281461092f57600080fd5b8063af8b1c6f14610894578063b24be687146108a7578063b505e7a2146108ba578063b650f86d146108e157600080fd5b8063a1d6000c116101d9578063a1d6000c14610846578063a2253eec1461085b578063aab3f8681461086e578063ac0b4b121461088157600080fd5b8063947574ac146106ea5780639f382f6a14610731578063a086fc22146107e9578063a10c02501461083e57600080fd5b806341bb0725116102fa578063715018a61161028d57806380a67a7d1161025c57806380a67a7d14610693578063854f7ebb146106a65780638da5cb5b146106c65780639023951b146106d757600080fd5b8063715018a6146106525780637683a9081461065a578063789caa3e1461066d5780637f3ad0561461068057600080fd5b80635f2475ca116102c95780635f2475ca146105aa57806361749c98146105bd578063661cd5fc146105d05780636ade46611461063f57600080fd5b806341bb07251461055e5780634b8a352914610571578063582d44bb146105845780635acff0271461059757600080fd5b80632ff34fe1116103725780633b0a79ec116103415780633b0a79ec146105125780633c42c3b7146105255780633cfe573814610538578063411302501461054b57600080fd5b80632ff34fe1146104b257806331bc9959146104c5578063361399f4146104df578063381adc6b146104f257600080fd5b806316f0115b116103ae57806316f0115b146104415780631da649cf1461046c5780631f3d2e6e1461047f5780632ebf4be01461049257600080fd5b80630a8ddc5e146103e05780630c0a769b146103f55780630cda22dc14610408578063148e23ce1461041b575b600080fd5b6103f36103ee366004613510565b610ae6565b005b6103f361040336600461352d565b610b63565b6103f3610416366004613510565b610cee565b61042e6104293660046135c9565b610d89565b6040519081526020015b60405180910390f35b60aa54610454906001600160a01b031681565b6040516001600160a01b039091168152602001610438565b6103f361047a36600461352d565b611009565b6103f361048d36600461361c565b611182565b61042e6104a0366004613510565b60a36020526000908152604090205481565b6103f36104c0366004613637565b611251565b6104cd600081565b60405160ff9091168152602001610438565b6103f36104ed366004613650565b6112d8565b61042e610500366004613510565b60a76020526000908152604090205481565b60ac54610454906001600160a01b031681565b6103f3610533366004613510565b6113c2565b6103f3610546366004613510565b61145d565b6103f3610559366004613510565b6114d1565b6103f361056c366004613650565b61156c565b6103f361057f366004613685565b611648565b6103f3610592366004613650565b6117a4565b6104546105a53660046136c0565b611873565b60a954610454906001600160a01b031681565b6103f36105cb3660046136fe565b611953565b6106136105de366004613510565b60a46020526000908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610438565b6103f361064d366004613815565b611f44565b6103f361216d565b6103f361066836600461388d565b6121a3565b61045461067b3660046138a9565b61229e565b60ad54610454906001600160a01b031681565b6103f36106a136600461361c565b612383565b61042e6106b4366004613510565b60a26020526000908152604090205481565b6033546001600160a01b0316610454565b6103f36106e53660046138f2565b6123ee565b61071c6106f836600461395d565b609f6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610438565b61079c61073f366004613510565b60a5602052600090815260409020546001600160a01b0381169061ffff600160a01b8204811691600160b01b81049091169060ff600160c01b8204811691600160c81b8104821691600160d01b8204811691600160d81b90041687565b604080516001600160a01b03909816885261ffff9687166020890152959094169486019490945290151560608501521515608084015290151560a0830152151560c082015260e001610438565b61081e6107f7366004613510565b60a66020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610438565b6104cd600281565b61084e61265a565b6040516104389190613996565b6103f3610869366004613510565b6126bc565b6103f361087c3660046139e3565b61270b565b61045461088f366004613637565b61292c565b60b054610454906001600160a01b031681565b60ae54610454906001600160a01b031681565b61042e7f555555555555555555555555555555555555555555555555555555555555555581565b6103f36108ef366004613510565b612956565b61042e610902366004613510565b60a06020526000908152604090205481565b6103f3610922366004613a34565b6129ca565b61042e600181565b61042e670de0b6b3a764000081565b60a854610454906001600160a01b031681565b6103f361095f366004613650565b612b08565b6097546109719060ff1681565b6040519015158152602001610438565b6103f361098f366004613510565b612bd7565b61042e61138881565b60af54610454906001600160a01b031681565b6103f36109be366004613a69565b612c4b565b61071c6109d136600461395d565b609e6020908152600092835260408084209091529082529020805460019091015482565b6103f3610a03366004613a69565b612d4e565b61042e60985481565b609954610a43906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b0395861681529385166020850152918416918301919091529091166060820152608001610438565b6103f3610a84366004613510565b612e51565b6103f3610a97366004613685565b612eec565b610aa561271081565b60405161ffff9091168152602001610438565b6103f3610ac6366004613a95565b61303d565b60ab54610454906001600160a01b031681565b61042e608081565b6033546001600160a01b03163314610b195760405162461bcd60e51b8152600401610b1090613adb565b60405180910390fd5b60af80546001600160a01b0319166001600160a01b0383169081179091556040517f22597c132d394cddf8eee9722c4dfc456da51de4c9d9cdf2b8f2523ae0e7eb8190600090a250565b600260655403610b855760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808416600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c08201528491610c3d576040516396e1352960e01b815260040160405180910390fd5b806080015180610c4e57508060a001515b15610c6c57604051630a9105a360e31b815260040160405180910390fd5b609954604051610ce1916385d7334d60e01b91610c9d91899133918a918a916001600160401b031690602401613b47565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260ab546001600160a01b0316906131a6565b5050600160655550505050565b6033546001600160a01b03163314610d185760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038116610d3f5760405163d92e233d60e01b815260040160405180910390fd5b60ab80546001600160a01b0319166001600160a01b0383169081179091556040517f7c0388b4f238710366ef8639dfdbad78e473a2b381ddde99fdcb50de646bf51090600090a250565b6000600260655403610dad5760405162461bcd60e51b8152600401610b1090613b10565b600260655560975460ff1615610dd657604051633be92ecd60e21b815260040160405180910390fd5b60af5460a954604051632b70a16560e11b81526001600160a01b03928316926356e142ca92610e1092911690889088903390600401613bcc565b6020604051808303816000875af1158015610e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e539190613c03565b90508015610ffd578115610f485760a95460ae54604051633111e7b360e01b81526001600160a01b0392831692633111e7b392610e9b92899289928892911690600401613c1c565b6020604051808303816000875af1158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190613c03565b5060ae546040516308c487b560e41b8152336004820152602481018390526001600160a01b0390911690638c487b5090604401600060405180830381600087803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b50505050610fc3565b60a954604051633111e7b360e01b81526001600160a01b0390911690633111e7b390610f7e908790879086903390600401613c1c565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190613c03565b505b6040518181528215159033907fab3c4ae116d5285676cffaad9c32cae8acf49b49ca0fc9953b029f97acb955ef9060200160405180910390a35b60016065559392505050565b60026065540361102b5760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808416600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c082015284916110e3576040516396e1352960e01b815260040160405180910390fd5b80608001511561110657604051630a9105a360e31b815260040160405180910390fd5b609954604051610ce19163c2af978760e01b9161113e91899133918a918a91600160c01b90046001600160401b031690602401613b47565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260ac546001600160a01b0316906131a6565b6033546001600160a01b031633146111ac5760405162461bcd60e51b8152600401610b1090613adb565b60a15460005b8181101561124c57600060a182815481106111cf576111cf613c51565b6000918252602080832091909101546001600160a01b031680835260a58252604092839020805460ff60c81b1916600160c81b891515908102919091179091559251928352925082917f5fb0304a827d06fca0ab552393a60b0224e0ac91b574df99de28e8f8bf891605910160405180910390a2506001016111b2565b505050565b6033546001600160a01b0316331461127b5760405162461bcd60e51b8152600401610b1090613adb565b8060000361129c5760405163275644a160e21b815260040160405180910390fd5b60988190556040518181527f51f9468910070fc9ae906e375f46182f4f84ab311131794a3eceb0b6b80e7f1b906020015b60405180910390a150565b6033546001600160a01b031633146113025760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038216600090815260a560205260409020548290600160c01b900460ff16611344576040516396e1352960e01b815260040160405180910390fd5b60aa546001600160a01b03848116600090815260a5602052604090819020549051635a3b74b960e01b815290821660048201528415156024820152911690635a3b74b990604401600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b50505050505050565b6033546001600160a01b031633146113ec5760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b0381166114135760405163d92e233d60e01b815260040160405180910390fd5b60ac80546001600160a01b0319166001600160a01b0383169081179091556040517f3dcc0a66d404037e318c6af57572c7f3dfe9250a0a58df79167e76795027946d90600090a250565b6033546001600160a01b031633146114875760405162461bcd60e51b8152600401610b1090613adb565b60a980546001600160a01b0319166001600160a01b0383169081179091556040517f9f43a60bcf56fe19c6ef946464526881d6871673d5b8e62fb4df922882abcb4990600090a250565b6033546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b0381166115225760405163d92e233d60e01b815260040160405180910390fd5b60ad80546001600160a01b0319166001600160a01b0383169081179091556040517fc1a4bb1bd557bbfbac2d5702ef3fd93590f2c98c8ccc7f4200564e5992a2aaa590600090a250565b6033546001600160a01b031633146115965760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038216600090815260a560205260409020548290600160c01b900460ff166115d8576040516396e1352960e01b815260040160405180910390fd5b6001600160a01b038316600081815260a56020526040908190208054851515600160d01b0260ff60d01b19909116179055517f5024f94e1f582131506b852f4d0aaaaf1c4f03825397c5e64da730ada4e2437a9061163b90851515815260200190565b60405180910390a2505050565b60026065540361166a5760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808316600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c08201528391611722576040516396e1352960e01b815260040160405180910390fd5b80608001518061173357508060a001515b1561175157604051630a9105a360e31b815260040160405180910390fd5b6099546040516001600160a01b038616602482015260448101859052600160401b9091046001600160401b0316606482015261179890634fd5881b60e11b90608401610c9d565b50506001606555505050565b6033546001600160a01b031633146117ce5760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038216600090815260a560205260409020548290600160c01b900460ff16611810576040516396e1352960e01b815260040160405180910390fd5b6001600160a01b038316600081815260a56020526040908190208054851515600160c81b0260ff60c81b19909116179055517f5fb0304a827d06fca0ab552393a60b0224e0ac91b574df99de28e8f8bf8916059061163b90851515815260200190565b60008082600381111561188857611888613c67565b036118b5576001600160a01b0383166000908152609a602052604090206118ae906131ef565b905061194d565b60018260038111156118c9576118c9613c67565b036118ef576001600160a01b0383166000908152609b602052604090206118ae906131ef565b600282600381111561190357611903613c67565b03611929576001600160a01b0383166000908152609c602052604090206118ae906131ef565b6001600160a01b0383166000908152609d6020526040902061194a906131ef565b90505b92915050565b6033546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610b1090613adb565b60a1546080116119a05760405163b285db3b60e01b815260040160405180910390fd5b6001600160a01b0383166119c75760405163d92e233d60e01b815260040160405180910390fd5b61271061ffff821611806119e0575061271061ffff8316115b156119fe57604051631a97cb1b60e31b815260040160405180910390fd5b60aa5460405163c44b11f760e01b81526001600160a01b038581166004830152611a7e92169063c44b11f790602401602060405180830381865afa158015611a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6e9190613ccc565b5167010000000000000016151590565b611a9b57604051635807a7ab60e11b815260040160405180910390fd5b60aa546040516335ea6a7560e01b81526001600160a01b03858116600483015260009216906335ea6a759060240161018060405180830381865afa158015611ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0b9190613d30565b60e001516001600160a01b038116600090815260a56020526040902054909150600160c01b900460ff1615611b5357604051631afb05cb60e31b815260040160405180910390fd5b6001600160a01b03818116600090815260a2602090815260408083206b033b2e3c9fd0803ce80000009081905560a383528184205560a490915290819020805463ffffffff19164263ffffffff1617815560aa54915163d15e005360e01b815287841660048201529092919091169063d15e005390602401602060405180830381865afa158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190613c03565b81546001600160701b03919091166401000000000271ffffffffffffffffffffffffffff000000001990911617815560aa5460405163386497fd60e01b81526001600160a01b0387811660048301529091169063386497fd90602401602060405180830381865afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca99190613c03565b8160000160126101000a8154816001600160701b0302191690836001600160701b031602179055506040518060e00160405280866001600160a01b031681526020018561ffff1681526020018461ffff1681526020016001151581526020016000151581526020016000151581526020016000151581525060a56000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548161ffff021916908361ffff16021790555060408201518160000160166101000a81548161ffff021916908361ffff16021790555060608201518160000160186101000a81548160ff02191690831515021790555060808201518160000160196101000a81548160ff02191690831515021790555060a082015181600001601a6101000a81548160ff02191690831515021790555060c082015181600001601b6101000a81548160ff021916908315150217905550905050600160a180549050901b600160001b901b60a76000846001600160a01b03166001600160a01b031681526020019081526020016000208190555060a1829080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550611ef460aa60009054906101000a90046001600160a01b0316600019876001600160a01b03166132219092919063ffffffff16565b6040805161ffff8087168252851660208201526001600160a01b038416917f411078003dc53bceaaa8a7c1d423236d5ce8eaac303e86acab168abcd3e91ffd910160405180910390a25050505050565b600054610100900460ff16611f5f5760005460ff1615611f63565b303b155b611fc65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b10565b600054610100900460ff16158015611fe8576000805461ffff19166101011790555b816000036120095760405163275644a160e21b815260040160405180910390fd5b61201161329e565b6120196132cd565b60ad80546001600160a01b038088166001600160a01b03199283161790925560ab80548a841690831617905560ac805489841690831617905560a88054928716929091168217905560408051630261bf8b60e01b81529051630261bf8b916004818101926020929091908290030181865afa15801561209c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c09190613e1d565b60aa80546001600160a01b03929092166001600160a01b03199092169190911790558251609980546020860151604087015160608801516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03938216600160401b026001600160801b03199095169190961617929092171692909217919091179055609882905580156113b9576000805461ff001916905550505050505050565b6033546001600160a01b031633146121975760405162461bcd60e51b8152600401610b1090613adb565b6121a160006132fc565b565b6033546001600160a01b031633146121cd5760405162461bcd60e51b8152600401610b1090613adb565b805160998054602084015160408086015160608701516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b03199096169190971617939093179190911693909317179055517f837ae3fc1cda9774726e0150f9f2ba34b5b33716fe86de000a7e552622fed8d5906112cd90839081516001600160401b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b6000808360038111156122b3576122b3613c67565b036122e1576001600160a01b0384166000908152609a602052604090206122da908361334e565b905061237c565b60018360038111156122f5576122f5613c67565b0361231c576001600160a01b0384166000908152609b602052604090206122da908361334e565b600283600381111561233057612330613c67565b03612357576001600160a01b0384166000908152609c602052604090206122da908361334e565b6001600160a01b0384166000908152609d60205260409020612379908361334e565b90505b9392505050565b6033546001600160a01b031633146123ad5760405162461bcd60e51b8152600401610b1090613adb565b6097805460ff19168215159081179091556040519081527f629214570a96e8f58ccbce4488267cbe9ce88c21626ba835f9dedc9d69ab89c3906020016112cd565b6033546001600160a01b031633146124185760405162461bcd60e51b8152600401610b1090613adb565b60b0546001600160a01b03166124415760405163d92e233d60e01b815260040160405180910390fd5b8260005b8181101561265257600086868381811061246157612461613c51565b90506020020160208101906124769190613510565b6001600160a01b03808216600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b830481161580156060840152600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c082015291925080612518575080608001515b8061252457508060a001515b15612530575050612642565b80516040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015612579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259d9190613c03565b9050806000036125b05750505050612642565b60006125dc8989888181106125c7576125c7613c51565b90506020020135838082109182029115020190565b60b0549091506125f9906001600160a01b038581169116836133a3565b846001600160a01b03167fbc50cfea30a46f2c6d1638717dc48ef12ab41ce93c25960f749ed48623b5aeca8260405161263491815260200190565b60405180910390a250505050505b61264b81613e50565b9050612445565b505050505050565b606060a18054806020026020016040519081016040528092919081815260200182805480156126b257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612694575b5050505050905090565b6001600160a01b038116600090815260a560205260409020548190600160c01b900460ff166126fe576040516396e1352960e01b815260040160405180910390fd5b6127078261341b565b5050565b60026065540361272d5760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808516600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c082015285916127e5576040516396e1352960e01b815260040160405180910390fd5b80608001511561280857604051630a9105a360e31b815260040160405180910390fd5b6001600160a01b03808616600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c082015286916128bb576040516396e1352960e01b815260040160405180910390fd5b8060800151156128de57604051630a9105a360e31b815260040160405180910390fd5b6040516001600160a01b03808a1660248301528089166044830152871660648201526084810186905261291c90633c8380b560e11b9060a40161113e565b5050600160655550505050505050565b60a1818154811061293c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6033546001600160a01b031633146129805760405162461bcd60e51b8152600401610b1090613adb565b60ae80546001600160a01b0319166001600160a01b0383169081179091556040517f326b2e6be6f045d4eea85a41c714df3692132315a6ff6a80196817272c89aa4e90600090a250565b6002606554036129ec5760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808416600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c08201528491612aa4576040516396e1352960e01b815260040160405180910390fd5b806080015180612ab557508060a001515b15612ad357604051630a9105a360e31b815260040160405180910390fd5b6040516001600160a01b03861660248201526044810185905260648101849052610ce190634fd5881b60e11b90608401610c9d565b6033546001600160a01b03163314612b325760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038216600090815260a560205260409020548290600160c01b900460ff16612b74576040516396e1352960e01b815260040160405180910390fd5b6001600160a01b038316600081815260a56020526040908190208054851515600160d81b0260ff60d81b19909116179055517f8d2c76c0d7dcf49cd4c4f8a206eb0f990b10bf5635ece070fb58ce9d33a7874f9061163b90851515815260200190565b6033546001600160a01b03163314612c015760405162461bcd60e51b8152600401610b1090613adb565b60b080546001600160a01b0319166001600160a01b0383169081179091556040517f7b23bd31f405e09a43804fe266d4b6c17f4f4369ff5f43f71452c76aa43620ac90600090a250565b6033546001600160a01b03163314612c755760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038216600090815260a560205260409020548290600160c01b900460ff16612cb7576040516396e1352960e01b815260040160405180910390fd5b61271061ffff83161115612cde57604051631a97cb1b60e31b815260040160405180910390fd5b612ce78361341b565b6001600160a01b038316600081815260a56020908152604091829020805461ffff60a01b1916600160a01b61ffff88169081029190911790915591519182527f07e13f8ca204c42dabbc3599491f28193fc66fb9dac125630b2eb7c21bed9be9910161163b565b6033546001600160a01b03163314612d785760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038216600090815260a560205260409020548290600160c01b900460ff16612dba576040516396e1352960e01b815260040160405180910390fd5b61271061ffff83161115612de157604051631a97cb1b60e31b815260040160405180910390fd5b612dea8361341b565b6001600160a01b038316600081815260a56020908152604091829020805461ffff60b01b1916600160b01b61ffff88169081029190911790915591519182527ff9da65ad6e566b695847a15f00a9b1d9a737638ec570828b2043dca63737b305910161163b565b6033546001600160a01b03163314612e7b5760405162461bcd60e51b8152600401610b1090613adb565b6001600160a01b038116612ee05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b10565b612ee9816132fc565b50565b600260655403612f0e5760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808316600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c08201528391612fc6576040516396e1352960e01b815260040160405180910390fd5b806080015115612fe957604051630a9105a360e31b815260040160405180910390fd5b6099546040516001600160a01b03861660248201526044810185905233606482018190526084820152600160801b9091046001600160401b031660a482015261179890632dbcafc760e21b9060c40161113e565b60026065540361305f5760405162461bcd60e51b8152600401610b1090613b10565b60026065556001600160a01b03808516600090815260a56020908152604091829020825160e0810184529054938416815261ffff600160a01b8504811692820192909252600160b01b84049091169181019190915260ff600160c01b83048116151560608301819052600160c81b8404821615156080840152600160d01b84048216151560a0840152600160d81b90930416151560c08201528591613117576040516396e1352960e01b815260040160405180910390fd5b80608001518061312857508060a001515b1561314657604051630a9105a360e31b815260040160405180910390fd5b6040516001600160a01b038088166024830152336044830152861660648201526084810185905260a48101849052613189906385d7334d60e01b9060c401610c9d565b505060016065555050505050565b6001600160a01b03163b151590565b6040518151600090819060208501865af46131d8573d6131cf5763037b81af60e11b8152600481fd5b3d6000823e3d81fd5b3d8152602081013d6000823e3d0160405292915050565b8054600090156132145761320482600161346d565b546001600160a01b031692915050565b506000919050565b919050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806132985760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610b10565b50505050565b600054610100900460ff166132c55760405162461bcd60e51b8152600401610b1090613e69565b6121a161349d565b600054610100900460ff166132f45760405162461bcd60e51b8152600401610b1090613e69565b6121a16134cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116600090815260028301602052604081205483548110156133995761338684613381836001613eb4565b61346d565b546001600160a01b0316915061194d9050565b600091505061194d565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806132985760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610b10565b604080516001600160a01b038381166024808401919091528351808403909101815260449092019092526020810180516001600160e01b03166328894fbb60e21b17905260ad546127079216906131a6565b60008261347b600184613ecc565b8154811061348b5761348b613c51565b90600052602060002001905092915050565b600054610100900460ff166134c45760405162461bcd60e51b8152600401610b1090613e69565b6001606555565b600054610100900460ff166134f25760405162461bcd60e51b8152600401610b1090613e69565b6121a1336132fc565b6001600160a01b0381168114612ee957600080fd5b60006020828403121561352257600080fd5b813561237c816134fb565b60008060006060848603121561354257600080fd5b833561354d816134fb565b9250602084013561355d816134fb565b929592945050506040919091013590565b60008083601f84011261358057600080fd5b5081356001600160401b0381111561359757600080fd5b6020830191508360208260051b85010111156135b257600080fd5b9250929050565b8035801515811461321c57600080fd5b6000806000604084860312156135de57600080fd5b83356001600160401b038111156135f457600080fd5b6136008682870161356e565b90945092506136139050602085016135b9565b90509250925092565b60006020828403121561362e57600080fd5b61194a826135b9565b60006020828403121561364957600080fd5b5035919050565b6000806040838503121561366357600080fd5b823561366e816134fb565b915061367c602084016135b9565b90509250929050565b6000806040838503121561369857600080fd5b82356136a3816134fb565b946020939093013593505050565b80356004811061321c57600080fd5b600080604083850312156136d357600080fd5b82356136de816134fb565b915061367c602084016136b1565b803561ffff8116811461321c57600080fd5b60008060006060848603121561371357600080fd5b833561371e816134fb565b925061372c602085016136ec565b9150613613604085016136ec565b60405161018081016001600160401b038111828210171561376b57634e487b7160e01b600052604160045260246000fd5b60405290565b80356001600160401b038116811461321c57600080fd5b60006080828403121561379a57600080fd5b604051608081018181106001600160401b03821117156137ca57634e487b7160e01b600052604160045260246000fd5b6040529050806137d983613771565b81526137e760208401613771565b60208201526137f860408401613771565b604082015261380960608401613771565b60608201525092915050565b600080600080600080610120878903121561382f57600080fd5b863561383a816134fb565b9550602087013561384a816134fb565b9450604087013561385a816134fb565b9350606087013561386a816134fb565b92506138798860808901613788565b915061010087013590509295509295509295565b60006080828403121561389f57600080fd5b61194a8383613788565b6000806000606084860312156138be57600080fd5b83356138c9816134fb565b92506138d7602085016136b1565b915060408401356138e7816134fb565b809150509250925092565b6000806000806040858703121561390857600080fd5b84356001600160401b038082111561391f57600080fd5b61392b8883890161356e565b9096509450602087013591508082111561394457600080fd5b506139518782880161356e565b95989497509550505050565b6000806040838503121561397057600080fd5b823561397b816134fb565b9150602083013561398b816134fb565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156139d75783516001600160a01b0316835292840192918401916001016139b2565b50909695505050505050565b600080600080608085870312156139f957600080fd5b8435613a04816134fb565b93506020850135613a14816134fb565b92506040850135613a24816134fb565b9396929550929360600135925050565b600080600060608486031215613a4957600080fd5b8335613a54816134fb565b95602085013595506040909401359392505050565b60008060408385031215613a7c57600080fd5b8235613a87816134fb565b915061367c602084016136ec565b60008060008060808587031215613aab57600080fd5b8435613ab6816134fb565b93506020850135613ac6816134fb565b93969395505050506040820135916060013590565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b039586168152938516602085015291909316604083015260608201929092526001600160401b03909116608082015260a00190565b8183526000602080850194508260005b85811015613bc1578135613ba6816134fb565b6001600160a01b031687529582019590820190600101613b93565b509495945050505050565b600060018060a01b03808716835260606020840152613bef606084018688613b83565b915080841660408401525095945050505050565b600060208284031215613c1557600080fd5b5051919050565b606081526000613c30606083018688613b83565b6020830194909452506001600160a01b039190911660409091015292915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215613c8f57600080fd5b604051602081018181106001600160401b0382111715613cbf57634e487b7160e01b600052604160045260246000fd5b6040529151825250919050565b600060208284031215613cde57600080fd5b61194a8383613c7d565b80516001600160801b038116811461321c57600080fd5b805164ffffffffff8116811461321c57600080fd5b805161321c816134fb565b805160ff8116811461321c57600080fd5b60006101808284031215613d4357600080fd5b613d4b61373a565b613d558484613c7d565b8152613d6360208401613ce8565b6020820152613d7460408401613ce8565b6040820152613d8560608401613ce8565b6060820152613d9660808401613ce8565b6080820152613da760a08401613ce8565b60a0820152613db860c08401613cff565b60c0820152613dc960e08401613d14565b60e0820152610100613ddc818501613d14565b90820152610120613dee848201613d14565b90820152610140613e00848201613d14565b90820152610160613e12848201613d1f565b908201529392505050565b600060208284031215613e2f57600080fd5b815161237c816134fb565b634e487b7160e01b600052601160045260246000fd5b600060018201613e6257613e62613e3a565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115613ec757613ec7613e3a565b500190565b600082821015613ede57613ede613e3a565b50039056fea26469706673582212202dd4d1f227c5cf014a4f0c0d603619243288f261c2c717034da9baebe4c4319864736f6c634300080d0033