0 txs
0 calls
constructor
No constructor.
functions
_curveMaster
viewfunction _curveMaster() view returns (address)
_enabledTokens
viewfunction _enabledTokens(uint256) view returns (address)
_interest
viewfunction _interest() view returns (uint64 lastTime, uint192 factor)
_oracleMaster
viewfunction _oracleMaster() view returns (address)
_tokenAddress_liquidationIncentive
viewfunction _tokenAddress_liquidationIncentive(address) view returns (uint256)
_tokenAddress_tokenId
viewfunction _tokenAddress_tokenId(address) view returns (uint256)
_tokenId_oracleAddress
viewfunction _tokenId_oracleAddress(uint256) view returns (address)
_tokenId_tokenLTV
viewfunction _tokenId_tokenLTV(uint256) view returns (uint256)
_usdi
viewfunction _usdi() view returns (address)
_vaultId_vaultAddress
viewfunction _vaultId_vaultAddress(uint96) view returns (address)
_vaultsMinted
viewfunction _vaultsMinted() view returns (uint96)
_wallet_vaultIDs
viewfunction _wallet_vaultIDs(address, uint256) view returns (uint96)
amountToSolvency
viewfunction amountToSolvency(uint96 id) view returns (uint256)
checkVault
viewfunction checkVault(uint96 id) view returns (bool)
getCurveMaster
viewfunction getCurveMaster() view returns (address)
getOracleMaster
viewfunction getOracleMaster() view returns (address)
interestFactor
viewfunction interestFactor() view returns (uint192)
lastInterestTime
viewfunction lastInterestTime() view returns (uint64)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
protocolFee
viewfunction protocolFee() view returns (uint192)
tokensRegistered
viewfunction tokensRegistered() view returns (uint256)
tokensToLiquidate
viewfunction tokensToLiquidate(uint96 id, address asset_address) view returns (uint256)
totalBaseLiability
viewfunction totalBaseLiability() view returns (uint192)
vaultAddress
viewfunction vaultAddress(uint96 id) view returns (address)
vaultBorrowingPower
viewfunction vaultBorrowingPower(uint96 id) view returns (uint192)
vaultIDs
viewfunction vaultIDs(address wallet) view returns (uint96[])
vaultLiability
viewfunction vaultLiability(uint96 id) view returns (uint192)
vaultsMinted
viewfunction vaultsMinted() view returns (uint96)
vaultSummaries
viewfunction vaultSummaries(uint96 start, uint96 stop) view returns (tuple[])
borrowUSDCto
nonpayablefunction borrowUSDCto(uint96 id, uint192 usdc_amount, address target)
borrowUsdi
nonpayablefunction borrowUsdi(uint96 id, uint192 amount)
borrowUSDIto
nonpayablefunction borrowUSDIto(uint96 id, uint192 amount, address target)
calculateInterest
nonpayablefunction calculateInterest() returns (uint256)
changeProtocolFee
nonpayablefunction changeProtocolFee(uint192 new_protocol_fee)
initialize
nonpayablefunction initialize()
liquidateVault
nonpayablefunction liquidateVault(uint96 id, address asset_address, uint256 tokens_to_liquidate) returns (uint256)
mintVault
nonpayablefunction mintVault() returns (address)
patchTBL
nonpayablefunction patchTBL()
pause
nonpayablefunction pause()
registerCurveMaster
nonpayablefunction registerCurveMaster(address master_curve_address)
registerErc20
nonpayablefunction registerErc20(address token_address, uint256 LTV, address oracle_address, uint256 liquidationIncentive)
registerOracleMaster
nonpayablefunction registerOracleMaster(address master_oracle_address)
registerUSDi
nonpayablefunction registerUSDi(address usdi_address)
renounceOwnership
nonpayablefunction renounceOwnership()
repayAllUSDi
nonpayablefunction repayAllUSDi(uint96 id)
repayUSDi
nonpayablefunction repayUSDi(uint96 id, uint192 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateRegisteredErc20
nonpayablefunction updateRegisteredErc20(address token_address, uint256 LTV, address oracle_address, uint256 liquidationIncentive)
events
BorrowUSDi
event BorrowUSDi(uint256 vaultId, address vaultAddress, uint256 borrowAmount)
InterestEvent
event InterestEvent(uint64 epoch, uint192 amount, uint256 curve_val)
Liquidate
event Liquidate(uint256 vaultId, address asset_address, uint256 usdi_to_repurchase, uint256 tokens_to_liquidate)
NewProtocolFee
event NewProtocolFee(uint256 protocol_fee)
NewVault
event NewVault(address vault_address, uint256 vaultId, address vaultOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RegisterCurveMaster
event RegisterCurveMaster(address curveMasterAddress)
RegisteredErc20
event RegisteredErc20(address token_address, uint256 LTVe4, address oracle_address, uint256 liquidationIncentivee4)
RegisterOracleMaster
event RegisterOracleMaster(address oracleMasterAddress)
RepayUSDi
event RepayUSDi(uint256 vaultId, address vaultAddress, uint256 repayAmount)
Unpaused
event Unpaused(address account)
UpdateRegisteredErc20
event UpdateRegisteredErc20(address token_address, uint256 LTVe4, address oracle_address, uint256 liquidationIncentivee4)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50614e5e806100206000396000f3fe60806040523480156200001157600080fd5b5060043610620003125760003560e01c80638129fc1c11620001a2578063c575c56111620000fc578063dddd91f611620000af578063ede17f891162000086578063ede17f8914620007dd578063f2fde38b14620007f4578063f445c787146200080b578063fa7651c4146200081d57600080fd5b8063dddd91f6146200079c578063de7a279114620007b0578063eb0c495514620007d357600080fd5b8063c575c56114620006f5578063c7683b491462000709578063ce0a25641462000720578063cf2ab4a41462000739578063d912c4271462000750578063dc3a1e37146200078557600080fd5b8063adddb3f21162000155578063adddb3f2146200068f578063b028b05c14620006a1578063b0e21e8a14620006ab578063b4fe649d14620006bd578063bcff117714620006c7578063bf7c598514620006de57600080fd5b80638129fc1c14620006155780638456cb59146200061f5780638da5cb5b146200062957806390b76499146200063b578063997d7b3d14620006615780639e0a7688146200067857600080fd5b806344ce2952116200027157806369f5e1fe1162000224578063715018a611620001fb578063715018a614620005bd5780637158092614620005c757806373263c9f14620005de5780637afcc92714620005f257600080fd5b806369f5e1fe14620005695780636cde570514620005805780636e8458f714620005a657600080fd5b806344ce295214620004c45780634e2aece314620004db57806356dc3ac9146200050b5780635c975abb14620005245780635d09b58e146200053c578063648d0d33146200055757600080fd5b8063250f4e8511620002ca578063250f4e85146200042457806328388456146200043b5780632ac41e10146200045257806334e328ab14620004755780633836260b14620004a15780633f4ba83a14620004ba57600080fd5b8062d8e38414620003175780630786eea8146200032e5780630df2e2cf14620003455780631250d38b146200039357806312af500814620003c35780631fc6109d1462000408575b600080fd5b60a1545b6040519081526020015b60405180910390f35b6200031b6200033f36600462003a9b565b62000834565b60a4546200036b906001600160401b03811690600160401b90046001600160c01b031682565b604080516001600160401b0390931683526001600160c01b0390911660208301520162000325565b620003aa620003a436600462003ad7565b6200084f565b6040516001600160601b03909116815260200162000325565b620003ef620003d436600462003b06565b6097602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200162000325565b60a4546040516001600160401b03909116815260200162000325565b620003ef6200043536600462003b2b565b6200089c565b6200031b6200044c36600462003b45565b620008c7565b6200031b6200046336600462003b89565b609c6020526000908152604090205481565b620003ef6200048636600462003b2b565b609b602052600090815260409020546001600160a01b031681565b620004b8620004b236600462003b89565b62000c77565b005b620004b862000cf9565b620004b8620004d536600462003bbf565b62000ddf565b620004f2620004ec36600462003b06565b62000df0565b6040516001600160c01b03909116815260200162000325565b60a454600160401b90046001600160c01b0316620004f2565b60335460ff165b604051901515815260200162000325565b60a054620003aa90600160a01b90046001600160601b031681565b609e546001600160a01b0316620003ef565b620004b86200057a36600462003bf0565b62000e0d565b620005976200059136600462003b89565b62000e1f565b60405162000325919062003c40565b620004b8620005b736600462003c8f565b62000ebf565b620004b862001119565b620004b8620005d836600462003c8f565b62001152565b60a054620003ef906001600160a01b031681565b6200031b6200060336600462003b2b565b609a6020526000908152604090205481565b620004b8620013fb565b620004b8620014f0565b6065546001600160a01b0316620003ef565b620006526200064c36600462003cdc565b620015d4565b60405162000325919062003d51565b6200052b6200067236600462003b06565b620019be565b620004b86200068936600462003b89565b62001a9b565b60a2546001600160c01b0316620004f2565b620003ef62001b17565b60a3546001600160c01b0316620004f2565b620004b862001c94565b6200031b620006d836600462003b06565b62001dba565b620004f2620006ef36600462003b06565b62001e14565b609f54620003ef906001600160a01b031681565b620004b86200071a36600462003bf0565b62001e21565b60a054600160a01b90046001600160601b0316620003aa565b620004b86200074a36600462003b89565b620021a5565b620003ef6200076136600462003b06565b6001600160601b03166000908152609760205260409020546001600160a01b031690565b620004b86200079636600462003bbf565b620021f4565b609e54620003ef906001600160a01b031681565b6200031b620007c136600462003b89565b60996020526000908152604090205481565b6200031b6200249c565b620004b8620007ee36600462003b06565b620024ad565b620004b86200080536600462003b89565b620027df565b609f546001600160a01b0316620003ef565b620004b86200082e36600462003e41565b6200287e565b6000806200084684846000196200294f565b50949350505050565b609860205281600052604060002081815481106200086c57600080fd5b9060005260206000209060029182820401919006600c02915091509054906101000a90046001600160601b031681565b609d8181548110620008ad57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000620008d362002c15565b5060335460ff1615620009035760405162461bcd60e51b8152600401620008fa9062003e61565b60405180910390fd5b60008211620009485760405162461bcd60e51b815260206004820152601060248201526f06d757374206c69717569646174653e360841b6044820152606401620008fa565b6001600160a01b038316600090815260996020526040902054620009a65760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881b9bdd081c9959da5cdd195c995960621b6044820152606401620008fa565b600080620009b68686866200294f565b9150915081600014620009c7578193505b6000620009df620009d9868462003ea1565b6200304f565b90506000620009ee8862003065565b60a4549091506001600160a01b0382169063dfabefe790600090600160401b90046001600160c01b031662000a2c86670de0b6b3a764000062003ea1565b62000a38919062003ec3565b6040516001600160e01b031960e085901b16815291151560048301526024820152604401602060405180830381600087803b15801562000a7757600080fd5b505af115801562000a8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab2919062003ee6565b5060a0546001600160a01b031663178a6670336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801562000b0e57600080fd5b505af115801562000b23573d6000803e3d6000fd5b50505050806001600160a01b0316639b5043878862000b3f3390565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101899052606401600060405180830381600087803b15801562000b8f57600080fd5b505af115801562000ba4573d6000803e3d6000fd5b5050505062000bb388620030cd565b6001600160c01b031662000bc782620031a6565b6001600160c01b0316111562000c125760405162461bcd60e51b815260206004820152600f60248201526e37bb32b93634b8bab4b230ba34b7b760891b6044820152606401620008fa565b604080516001600160601b038a1681526001600160a01b0389166020820152908101839052606081018790527fd47e75cd6a3c0e59e63919b525eb69ce3bfd7f8de011363e440f2c58273f74d99060800160405180910390a150939695505050505050565b6065546001600160a01b0316331462000ca45760405162461bcd60e51b8152600401620008fa9062003f00565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f6efa49a27d1f19e0dca70a0d80483be4b5f3e1b8af1d9714eacc529dbf074a5b906020015b60405180910390a150565b60a060009054906101000a90046001600160a01b03166001600160a01b0316639fd0506d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000d4857600080fd5b505afa15801562000d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d83919062003f35565b6001600160a01b0316336001600160a01b03161462000dd35760405162461bcd60e51b815260206004820152600b60248201526a37b7363c903830bab9b2b960a91b6044820152606401620008fa565b62000ddd62003387565b565b62000dec8282336200341c565b5050565b600062000e0762000e018362003065565b620031a6565b92915050565b62000e1a8383836200341c565b505050565b6001600160a01b03811660009081526098602090815260409182902080548351818402810184019094528084526060939283018282801562000eb357602002820191906000526020600020906000905b82829054906101000a90046001600160601b03166001600160601b0316815260200190600c0190602082600b0104928301926001038202915080841162000e6f5790505b50505050509050919050565b6065546001600160a01b0316331462000eec5760405162461bcd60e51b8152600401620008fa9062003f00565b609e5460405163c054fd5d60e01b81526001600160a01b038481166004830152600092169063c054fd5d9060240160206040518083038186803b15801562000f3357600080fd5b505afa15801562000f48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f6e919062003f35565b6001600160a01b0316141562000fbf5760405162461bcd60e51b81526020600482015260156024820152741bdc9858db1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152606401620008fa565b6001600160a01b038416600090815260996020526040902054620010265760405162461bcd60e51b815260206004820152601760248201527f746f6b656e206973206e6f7420726567697374657265640000000000000000006044820152606401620008fa565b6200103a81670de0b6b3a764000062003f55565b83106200107d5760405162461bcd60e51b815260206004820152601060248201526f34b731b7b6b830ba34b1363290262a2b60811b6044820152606401620008fa565b60a180546000908152609b6020908152604080832080546001600160a01b0319166001600160a01b0388811691821790925594548452609a83528184208890558816808452609c8352928190208590558051928352908201869052810191909152606081018290527f7a717250e5aa97c909db1acf5a906f6201b7ce1dfbc055bc779f55d3717dfcdb906080015b60405180910390a150505050565b6065546001600160a01b03163314620011465760405162461bcd60e51b8152600401620008fa9062003f00565b62000ddd600062003766565b6065546001600160a01b031633146200117f5760405162461bcd60e51b8152600401620008fa9062003f00565b609e5460405163c054fd5d60e01b81526001600160a01b038481166004830152600092169063c054fd5d9060240160206040518083038186803b158015620011c657600080fd5b505afa158015620011db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001201919062003f35565b6001600160a01b03161415620012525760405162461bcd60e51b81526020600482015260156024820152741bdc9858db1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152606401620008fa565b6001600160a01b03841660009081526099602052604090205415620012ba5760405162461bcd60e51b815260206004820152601860248201527f746f6b656e20616c7265616479207265676973746572656400000000000000006044820152606401620008fa565b620012ce81670de0b6b3a764000062003f55565b8310620013115760405162461bcd60e51b815260206004820152601060248201526f34b731b7b6b830ba34b1363290262a2b60811b6044820152606401620008fa565b60a1546200132190600162003f6f565b60a18181556001600160a01b038681166000818152609960209081526040808320879055958252609b815285822080549489166001600160a01b0319958616811790915594548252609a8152858220899055828252609c8152858220879055609d805460018101825592527fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7b90910180549093168217909255835190815290810186905291820152606081018290527f22aafc99cc92fec579679933a118900440ff9130c071d53f7b841b49bb2b0b21906080016200110b565b600054610100900460ff168062001415575060005460ff16155b620014345760405162461bcd60e51b8152600401620008fa9062003f8a565b600054610100900460ff1615801562001457576000805461ffff19166101011790555b62001461620037b8565b6200146b6200383d565b604080518082019091526001600160401b034216808252670de0b6b3a76400006020909201919091526503782dace9d960521b1760a45560a380546001600160c01b0319908116655af3107a40001790915560a080546001600160a01b03169055600060a15560a2805490911690558015620014ed576000805461ff00191690555b50565b60a060009054906101000a90046001600160a01b03166001600160a01b0316639fd0506d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200153f57600080fd5b505afa15801562001554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200157a919062003f35565b6001600160a01b0316336001600160a01b031614620015ca5760405162461bcd60e51b815260206004820152600b60248201526a37b7363c903830bab9b2b960a91b6044820152606401620008fa565b62000ddd62003871565b60606000620015e4848462003fd8565b620015f190600162004003565b6001600160601b03166001600160401b0381111562001614576200161462004031565b6040519080825280602002602001820160405280156200166e57816020015b6040805160a0810182526000808252602080830182905292820152606080820181905260808201528252600019909201910181620016335790505b509050835b836001600160601b0316816001600160601b031611620019b65760006200169a8262003065565b609d549091506000906001600160401b03811115620016bd57620016bd62004031565b604051908082528060200260200182016040528015620016e7578160200160208202803683370190505b50905060005b609d54811015620017d957826001600160a01b031663eedc966a609d83815481106200171d576200171d62004047565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260240160206040518083038186803b1580156200176957600080fd5b505afa1580156200177e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017a4919062003ee6565b828281518110620017b957620017b962004047565b602090810291909101015280620017d0816200405d565b915050620016ed565b506040805160a0810182526001600160601b0385168082529151634e2aece360e01b815260048101929092529060208201903090634e2aece39060240160206040518083038186803b1580156200182f57600080fd5b505afa15801562001844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200186a91906200407b565b6001600160c01b0316815260405163bf7c598560e01b81526001600160601b0386166004820152602090910190309063bf7c59859060240160206040518083038186803b158015620018bb57600080fd5b505afa158015620018d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018f691906200407b565b6001600160c01b03168152602001609d8054806020026020016040519081016040528092919081815260200182805480156200195c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200193d575b50505091835250506020018290528462001977898662003fd8565b6001600160601b03168151811062001993576200199362004047565b602002602001018190525050508080620019ad906200409b565b91505062001673565b509392505050565b600080620019cc8362003065565b90506000620019db82620031a6565b6001600160c01b03169050600062001a8f60a460000160089054906101000a90046001600160c01b03166001600160c01b0316846001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001a4857600080fd5b505afa15801562001a5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a83919062003ee6565b620009d9919062003ea1565b90911015949350505050565b6065546001600160a01b0316331462001ac85760405162461bcd60e51b8152600401620008fa9062003f00565b609e80546001600160a01b0319166001600160a01b0383169081179091556040519081527f67d0daa6370ca90e96e13b330be2b5fb0e00bb91a58015caf05986c8ff74951f9060200162000cee565b60a05460009062001b3a90600160a01b90046001600160601b0316600162004003565b60a080546001600160a01b0316600160a01b6001600160601b0393841681029190911791829055600092910416333060405162001b779062003a5a565b6001600160601b0390931683526001600160a01b039182166020840152166040820152606001604051809103906000f08015801562001bba573d6000803e3d6000fd5b5060a08054600160a01b908190046001600160601b03908116600090815260976020908152604080832080546001600160a01b0319166001600160a01b038916908117909155338085526098845282852088548154600181810184559288529686902060028804018054918a90048916600c98909316979097026101000a91820291880219161790945595548151968752949094049092169184019190915282820152519192507fd545492c32293e3c7c7bebfb14f0d2be495cebb835c376f31d2ac7b490fc5b9d916060918190039190910190a1919050565b6065546001600160a01b0316331462001cc15760405162461bcd60e51b8152600401620008fa9062003f00565b600060015b60a0546001600160601b03600160a01b90910481169082161162001d9757600062001cf18262003065565b905062001d72816001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001d3157600080fd5b505afa15801562001d46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d6c919062003ee6565b620038cd565b62001d7e9084620040c5565b925050808062001d8e906200409b565b91505062001cc6565b5060a280546001600160c01b0319166001600160c01b0392909216919091179055565b600062001dc782620019be565b1562001e095760405162461bcd60e51b815260206004820152601060248201526f15985d5b1d081a5cc81cdbdb1d995b9d60821b6044820152606401620008fa565b62000e078262003916565b600062000e0782620030cd565b62001e2b62002c15565b5060335460ff161562001e525760405162461bcd60e51b8152600401620008fa9062003e61565b600062001e658364e8d4a51000620040ea565b6001600160c01b03169050600062001e7d8562003065565b9050806001600160a01b031663075461726040518163ffffffff1660e01b815260040160206040518083038186803b15801562001eb957600080fd5b505afa15801562001ece573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ef4919062003f35565b6001600160a01b0316336001600160a01b03161462001f4a5760405162461bcd60e51b815260206004820152601160248201527039b2b73232b9103737ba1036b4b73a32b960791b6044820152606401620008fa565b60a45460009062001f8590600160401b90046001600160c01b031662001f79670de0b6b3a76400008662003ea1565b62001d6c919062003ec3565b60405163dfabefe760e01b8152600160048201526001600160c01b03821660248201529091506000906001600160a01b0384169063dfabefe790604401602060405180830381600087803b15801562001fdd57600080fd5b505af115801562001ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002018919062003ee6565b90506200202e826001600160c01b0316620038cd565b60a2546200204691906001600160c01b0316620040c5565b60a280546001600160c01b0319166001600160c01b0392831617905560a4546000916200208291620009d9918591600160401b90041662003ea1565b905060006200209185620031a6565b6001600160c01b0316905081811015620020e05760405162461bcd60e51b815260206004820152600f60248201526e1d985d5b1d081a5b9cdbdb1d995b9d608a1b6044820152606401620008fa565b604080516001600160601b038b1681526001600160a01b03871660208201529081018790527f805c5591e26e864042788658377d48b79f09d90f1120e2925b4ee75a704a39e59060600160405180910390a160a05460405163da5b9a1960e01b81526001600160a01b039091169063da5b9a199062002166908a908c906004016200411c565b600060405180830381600087803b1580156200218157600080fd5b505af115801562002196573d6000803e3d6000fd5b50505050505050505050505050565b6065546001600160a01b03163314620021d25760405162461bcd60e51b8152600401620008fa9062003f00565b60a080546001600160a01b0319166001600160a01b0392909216919091179055565b620021fe62002c15565b5060335460ff1615620022255760405162461bcd60e51b8152600401620008fa9062003e61565b6000620022328362003065565b60a4549091506000906200226a906001600160c01b03600160401b90910481169062001f7990670de0b6b3a764000090871662003ea1565b60a254909150620022869082906001600160c01b03166200413e565b60a260006101000a8154816001600160c01b0302191690836001600160c01b03160217905550816001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620022e657600080fd5b505afa158015620022fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002321919062003ee6565b816001600160c01b03161115620023735760405162461bcd60e51b81526020600482015260156024820152741c995c185e480f88189bdc9c9bddc8185b5bdd5b9d605a1b6044820152606401620008fa565b60405163dfabefe760e01b8152600060048201526001600160c01b03821660248201526001600160a01b0383169063dfabefe790604401602060405180830381600087803b158015620023c557600080fd5b505af1158015620023da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002400919062003ee6565b5060a0546001600160a01b031663178a667033856040518363ffffffff1660e01b8152600401620024339291906200411c565b600060405180830381600087803b1580156200244e57600080fd5b505af115801562002463573d6000803e3d6000fd5b505050507fba9d04daae3acba43a9a12853aba3fd1c05506c89f874802a159d4a32efc5c0a8483856040516200110b9392919062004161565b6000620024a862002c15565b905090565b620024b762002c15565b5060335460ff1615620024de5760405162461bcd60e51b8152600401620008fa9062003e61565b6000620024eb8262003065565b905060006200258b62001d6c836001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200253157600080fd5b505afa15801562002546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200256c919062003ee6565b60a454620009d99190600160401b90046001600160c01b031662003ea1565b6001600160c01b03169050620025d4826001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001d3157600080fd5b60a254620025ec91906001600160c01b03166200413e565b60a260006101000a8154816001600160c01b0302191690836001600160c01b03160217905550816001600160a01b031663dfabefe76000846001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200265d57600080fd5b505afa15801562002672573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002698919062003ee6565b6040516001600160e01b031960e085901b16815291151560048301526024820152604401602060405180830381600087803b158015620026d757600080fd5b505af1158015620026ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002712919062003ee6565b5060a0546001600160a01b031663178a6670336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b1580156200276e57600080fd5b505af115801562002783573d6000803e3d6000fd5b5050604080516001600160601b03871681526001600160a01b03861660208201529081018490527fba9d04daae3acba43a9a12853aba3fd1c05506c89f874802a159d4a32efc5c0a9250606001905060405180910390a1505050565b6065546001600160a01b031633146200280c5760405162461bcd60e51b8152600401620008fa9062003f00565b6001600160a01b038116620028735760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620008fa565b620014ed8162003766565b6065546001600160a01b03163314620028ab5760405162461bcd60e51b8152600401620008fa9062003f00565b670de0b6b3a7640000816001600160c01b031610620029005760405162461bcd60e51b815260206004820152601060248201526f66656520697320746f6f206c6172676560801b6044820152606401620008fa565b60a380546001600160c01b0319166001600160c01b0383169081179091556040519081527f3e1c6f794380f768303ee10adb978482d0ee037b0517bdabf3118141632078a69060200162000cee565b6000806200295d85620019be565b156200299f5760405162461bcd60e51b815260206004820152601060248201526f15985d5b1d081a5cc81cdbdb1d995b9d60821b6044820152606401620008fa565b6000620029ac8662003065565b609e54604051634295aec160e11b81526001600160a01b0388811660048301529293506000929091169063852b5d829060240160206040518083038186803b158015620029f857600080fd5b505afa15801562002a0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a33919062003ee6565b6001600160a01b0387166000908152609c60205260408120549192509062002a759062002a6990670de0b6b3a764000062003f55565b620009d9908462003ea1565b6001600160a01b0388166000908152609960209081526040808320548352609a9091528120549192509062002ab090620009d9908562003ea1565b9050600062002ac0828462003f55565b905060008162002ad08c62003916565b62002ae490670de0b6b3a764000062003ea1565b62002af0919062003ec3565b90508089111562002aff578098505b60405163776e4b3560e11b81526001600160a01b038b8116600483015287169063eedc966a9060240160206040518083038186803b15801562002b4157600080fd5b505afa15801562002b56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b7c919062003ee6565b89111562002c045760405163776e4b3560e11b81526001600160a01b038b8116600483015287169063eedc966a9060240160206040518083038186803b15801562002bc657600080fd5b505afa15801562002bdb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c01919062003ee6565b98505b509699919850909650505050505050565b60a454600090819062002c32906001600160401b03164262004194565b90506001600160401b03811662002c4b57600091505090565b60a0546040805163018fab9b60e31b815290516000926001600160a01b031691630c7d5cd8916004808301926020929190829003018186803b15801562002c9157600080fd5b505afa15801562002ca6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ccc91906200407b565b609f5460405163d15e1ba960e01b81526000600482018190526001600160c01b03939093166024820181905293508392916001600160a01b03169063d15e1ba99060440160206040518083038186803b15801562002d2957600080fd5b505afa15801562002d3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d64919062003ee6565b9050600062002d7382620038cd565b60a45490915060009062002ddb9062001d6c906001600160c01b03600160401b90910481169062001a83906301e187e090871662002dc3670de0b6b3a76400006001600160401b038e1662003ea1565b62002dcf919062003ea1565b620009d9919062003ec3565b60a45460a25491925060009162002e109162001d6c91620009d9916001600160c01b03600160401b9091048116911662003ea1565b90506040518060400160405280426001600160401b031681526020018360a460000160089054906101000a90046001600160c01b031662002e529190620040c5565b6001600160c01b0390811690915281516020909201516001600160401b03909216600160401b92821683021760a481905560a25460009362002ea59362001d6c93620009d9939290048116911662003ea1565b60a35490915060009062002ee29062001d6c906001600160c01b031662002ecd86866200413e565b6001600160c01b0316620009d9919062003ea1565b60a0549091506001600160a01b031663c99d6f018262002f0386866200413e565b62002f0f91906200413e565b6040516001600160e01b031960e084901b1681526001600160c01b039091166004820152602401600060405180830381600087803b15801562002f5157600080fd5b505af115801562002f66573d6000803e3d6000fd5b505060a0546001600160a01b03169150630522658d905062002f906065546001600160a01b031690565b836040518363ffffffff1660e01b815260040162002fb09291906200411c565b600060405180830381600087803b15801562002fcb57600080fd5b505af115801562002fe0573d6000803e3d6000fd5b505060408051426001600160401b031681526001600160c01b03888116602083015289168183015290517f9a3dde40e8ce8e77c8e6a6283e8ae51757e9125643311fb8e128c365924cc8419350908190036060019150a1836001600160c01b0316995050505050505050505090565b600062000e07670de0b6b3a76400008362003ec3565b6001600160601b0381166000908152609760205260408120546001600160a01b03168062000e075760405162461bcd60e51b81526020600482015260146024820152731d985d5b1d08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401620008fa565b6001600160601b0381166000908152609760205260408120546001600160a01b031680620031355760405162461bcd60e51b81526020600482015260146024820152731d985d5b1d08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401620008fa565b60008190506200319e62001d6c60a460000160089054906101000a90046001600160c01b03166001600160c01b0316836001600160a01b031663adef15bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001a4857600080fd5b949350505050565b60008060015b60a154816001600160c01b03161162003380576001600160c01b0381166000908152609a6020526040902054620031e3576200336b565b6000609d620031f46001846200413e565b6001600160c01b03168154811062003210576200321062004047565b600091825260208220015460405163776e4b3560e11b81526001600160a01b039182166004820181905293509087169063eedc966a9060240160206040518083038186803b1580156200326257600080fd5b505afa15801562003277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200329d919062003ee6565b905080620032ad5750506200336b565b609e54604051634295aec160e11b81526001600160a01b038481166004830152600092620032fa9291169063852b5d829060240160206040518083038186803b15801562001d3157600080fd5b90506001600160c01b03811662003314575050506200336b565b60006200335662001d6c620009d9609a6000896001600160c01b031681526020019081526020016000205486866001600160c01b031662001a83919062003ea1565b9050620033648187620040c5565b9550505050505b806200337781620041b7565b915050620031ac565b5092915050565b60335460ff16620033d25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401620008fa565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6200342662002c15565b5060335460ff16156200344d5760405162461bcd60e51b8152600401620008fa9062003e61565b60006200345a8462003065565b9050806001600160a01b031663075461726040518163ffffffff1660e01b815260040160206040518083038186803b1580156200349657600080fd5b505afa158015620034ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034d1919062003f35565b6001600160a01b0316336001600160a01b031614620035275760405162461bcd60e51b815260206004820152601160248201527039b2b73232b9103737ba1036b4b73a32b960791b6044820152606401620008fa565b60a4546000906200355c906001600160c01b03600160401b90910481169062001f7990670de0b6b3a764000090881662003ea1565b60405163dfabefe760e01b8152600160048201526001600160c01b03821660248201529091506000906001600160a01b0384169063dfabefe790604401602060405180830381600087803b158015620035b457600080fd5b505af1158015620035c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035ef919062003ee6565b905062003605826001600160c01b0316620038cd565b60a2546200361d91906001600160c01b0316620040c5565b60a280546001600160c01b0319166001600160c01b0392831617905560a4546000916200365991620009d9918591600160401b90041662003ea1565b905060006200366885620031a6565b6001600160c01b0316905081811015620036b75760405162461bcd60e51b815260206004820152600f60248201526e1d985d5b1d081a5b9cdbdb1d995b9d608a1b6044820152606401620008fa565b60a054604051630522658d60e01b81526001600160a01b0390911690630522658d90620036eb9089908b906004016200411c565b600060405180830381600087803b1580156200370657600080fd5b505af11580156200371b573d6000803e3d6000fd5b505050507f805c5591e26e864042788658377d48b79f09d90f1120e2925b4ee75a704a39e5888689604051620037549392919062004161565b60405180910390a15050505050505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1680620037d2575060005460ff16155b620037f15760405162461bcd60e51b8152600401620008fa9062003f8a565b600054610100900460ff1615801562003814576000805461ffff19166101011790555b6200381e6200394d565b62003828620039bd565b8015620014ed576000805461ff001916905550565b600054610100900460ff16620038675760405162461bcd60e51b8152600401620008fa90620041d7565b62000ddd62003a24565b60335460ff1615620038975760405162461bcd60e51b8152600401620008fa9062003e61565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620033ff3390565b60006001600160c01b038210620039125760405162461bcd60e51b81526020600482015260086024820152676f766572666c6f7760c01b6044820152606401620008fa565b5090565b60006200392762000e018362003065565b6200393283620030cd565b6200393e91906200413e565b6001600160c01b031692915050565b600054610100900460ff168062003967575060005460ff16155b620039865760405162461bcd60e51b8152600401620008fa9062003f8a565b600054610100900460ff1615801562003828576000805461ffff19166101011790558015620014ed576000805461ff001916905550565b600054610100900460ff1680620039d7575060005460ff16155b620039f65760405162461bcd60e51b8152600401620008fa9062003f8a565b600054610100900460ff1615801562003a19576000805461ffff19166101011790555b620038283362003766565b600054610100900460ff1662003a4e5760405162461bcd60e51b8152600401620008fa90620041d7565b6033805460ff19169055565b610c06806200422383390190565b80356001600160601b038116811462003a8057600080fd5b919050565b6001600160a01b0381168114620014ed57600080fd5b6000806040838503121562003aaf57600080fd5b62003aba8362003a68565b9150602083013562003acc8162003a85565b809150509250929050565b6000806040838503121562003aeb57600080fd5b823562003af88162003a85565b946020939093013593505050565b60006020828403121562003b1957600080fd5b62003b248262003a68565b9392505050565b60006020828403121562003b3e57600080fd5b5035919050565b60008060006060848603121562003b5b57600080fd5b62003b668462003a68565b9250602084013562003b788162003a85565b929592945050506040919091013590565b60006020828403121562003b9c57600080fd5b813562003b248162003a85565b6001600160c01b0381168114620014ed57600080fd5b6000806040838503121562003bd357600080fd5b62003bde8362003a68565b9150602083013562003acc8162003ba9565b60008060006060848603121562003c0657600080fd5b62003c118462003a68565b9250602084013562003c238162003ba9565b9150604084013562003c358162003a85565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101562003c835783516001600160601b03168352928401929184019160010162003c5c565b50909695505050505050565b6000806000806080858703121562003ca657600080fd5b843562003cb38162003a85565b935060208501359250604085013562003ccc8162003a85565b9396929550929360600135925050565b6000806040838503121562003cf057600080fd5b62003cfb8362003a68565b915062003d0b6020840162003a68565b90509250929050565b600081518084526020808501945080840160005b8381101562003d465781518752958201959082019060010162003d28565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003e3257898403603f19018652825180516001600160601b03168552888101516001600160c01b039081168a87015288820151168886015260608082015160a0918701829052805191870182905260c0870191908b0190855b8181101562003dfe5782516001600160a01b03168452928c0192918c019160010162003dd7565b5050506080808301519250868203818801525062003e1d818362003d14565b978a0197955050509187019160010162003d79565b50919998505050505050505050565b60006020828403121562003e5457600080fd5b813562003b248162003ba9565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562003ebe5762003ebe62003e8b565b500290565b60008262003ee157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562003ef957600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121562003f4857600080fd5b815162003b248162003a85565b60008282101562003f6a5762003f6a62003e8b565b500390565b6000821982111562003f855762003f8562003e8b565b500190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006001600160601b038381169083168181101562003ffb5762003ffb62003e8b565b039392505050565b60006001600160601b0380831681851680830382111562004028576200402862003e8b565b01949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562004074576200407462003e8b565b5060010190565b6000602082840312156200408e57600080fd5b815162003b248162003ba9565b60006001600160601b0380831681811415620040bb57620040bb62003e8b565b6001019392505050565b60006001600160c01b0382811684821680830382111562004028576200402862003e8b565b60006001600160c01b038281168482168115158284048211161562004113576200411362003e8b565b02949350505050565b6001600160a01b039290921682526001600160c01b0316602082015260400190565b60006001600160c01b038381169083168181101562003ffb5762003ffb62003e8b565b6001600160601b039390931683526001600160a01b039190911660208301526001600160c01b0316604082015260600190565b60006001600160401b038381169083168181101562003ffb5762003ffb62003e8b565b60006001600160c01b0382811680821415620040bb57620040bb62003e8b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe60a060405234801561001057600080fd5b50604051610c06380380610c0683398101604081905261002f91610096565b604080518082019091526001600160601b039093168084526001600160a01b0392831660209094018490526c01000000000000000000000000909302909217600055166080526100e7565b80516001600160a01b038116811461009157600080fd5b919050565b6000806000606084860312156100ab57600080fd5b83516001600160601b03811681146100c257600080fd5b92506100d06020850161007a565b91506100de6040850161007a565b90509250925092565b608051610aef61011760003960008181610198015281816102ae015281816103be01526104c90152610aef6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063af640d0f11610071578063af640d0f14610165578063bd1f4b5214610180578063dd3f952614610193578063dfabefe7146101ba578063eedc966a146101cd578063fe84d0ae146101e057600080fd5b806307546172146100ae5780632f10b47a146100df57806335369662146100f45780639b50438714610140578063adef15bc14610153575b600080fd5b600054600160601b90046001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100f26100ed3660046108dc565b6101e9565b005b600054610119906001600160601b03811690600160601b90046001600160a01b031682565b604080516001600160601b0390931683526001600160a01b039091166020830152016100d6565b6100f261014e36600461090f565b6102ab565b6001545b6040519081526020016100d6565b6000546040516001600160601b0390911681526020016100d6565b6100f261018e36600461094b565b610333565b6100c27f000000000000000000000000000000000000000000000000000000000000000081565b6101576101c8366004610986565b6104c4565b6101576101db3660046109a4565b6105b9565b61015760015481565b600054600160601b90046001600160a01b0316336001600160a01b03161461024c5760405162461bcd60e51b815260206004820152601160248201527039b2b73232b9103737ba1036b4b73a32b960791b60448201526064015b60405180910390fd5b6040516317066a5760e21b81526001600160a01b038381166004830152821690635c19a95c90602401600060405180830381600087803b15801561028f57600080fd5b505af11580156102a3573d6000803e3d6000fd5b505050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146103235760405162461bcd60e51b815260206004820152601a60248201527f73656e646572206e6f74205661756c74436f6e74726f6c6c65720000000000006044820152606401610243565b61032e838383610639565b505050565b600054600160601b90046001600160a01b0316336001600160a01b0316146103915760405162461bcd60e51b815260206004820152601160248201527039b2b73232b9103737ba1036b4b73a32b960791b6044820152606401610243565b61039c823383610639565b60005460405163997d7b3d60e01b81526001600160601b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063997d7b3d9060240160206040518083038186803b15801561040857600080fd5b505afa15801561041c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044091906109bf565b61047e5760405162461bcd60e51b815260206004820152600f60248201526e1bdd995c8b5dda5d1a191c985dd85b608a1b6044820152606401610243565b604080516001600160a01b0384168152602081018390527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364910160405180910390a15050565b6000337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461053e5760405162461bcd60e51b815260206004820152601a60248201527f73656e646572206e6f74205661756c74436f6e74726f6c6c65720000000000006044820152606401610243565b821561055a578160015461055291906109f2565b6001556105af565b81600154101561059d5760405162461bcd60e51b815260206004820152600e60248201526d0e4cae0c2f240e8dede40daeac6d60931b6044820152606401610243565b816001546105ab9190610a0a565b6001555b5060015492915050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190610a21565b92915050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261032e928692916000916106c9918516908490610746565b80519091501561032e57808060200190518101906106e791906109bf565b61032e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610243565b6060610755848460008561075f565b90505b9392505050565b6060824710156107c05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610243565b843b61080e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610243565b600080866001600160a01b0316858760405161082a9190610a6a565b60006040518083038185875af1925050503d8060008114610867576040519150601f19603f3d011682016040523d82523d6000602084013e61086c565b606091505b509150915061087c828286610887565b979650505050505050565b60608315610896575081610758565b8251156108a65782518084602001fd5b8160405162461bcd60e51b81526004016102439190610a86565b80356001600160a01b03811681146108d757600080fd5b919050565b600080604083850312156108ef57600080fd5b6108f8836108c0565b9150610906602084016108c0565b90509250929050565b60008060006060848603121561092457600080fd5b61092d846108c0565b925061093b602085016108c0565b9150604084013590509250925092565b6000806040838503121561095e57600080fd5b610967836108c0565b946020939093013593505050565b801515811461098357600080fd5b50565b6000806040838503121561099957600080fd5b823561096781610975565b6000602082840312156109b657600080fd5b610758826108c0565b6000602082840312156109d157600080fd5b815161075881610975565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a0557610a056109dc565b500190565b600082821015610a1c57610a1c6109dc565b500390565b600060208284031215610a3357600080fd5b5051919050565b60005b83811015610a55578181015183820152602001610a3d565b83811115610a64576000848401525b50505050565b60008251610a7c818460208701610a3a565b9190910192915050565b6020815260008251806020840152610aa5816040850160208701610a3a565b601f01601f1916919091016040019291505056fea2646970667358221220ca96fbf2af7e27621ecdb6291150df67705bd247a25e0f2986fc064a5c60b07964736f6c63430008090033a26469706673582212205d2a9233b1ebc2f3bb4f917c320f5046881e8d177075b80861dd6c3577b6b03d64736f6c63430008090033