0 txs
0 calls
constructor
constructor(address _initialRescuer, address _initialExecutor, string _strategyName, address _treasuryReservesVault, address _ramos, address _templeToken, address _quoteToken, address _circuitBreakerProxy)
functions
apiVersion
viewfunction apiVersion() view returns (string)
circuitBreakerProxy
viewfunction circuitBreakerProxy() view returns (address)
executor
viewfunction executor() view returns (address)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
inRescueMode
viewfunction inRescueMode() view returns (bool)
latestAssetBalances
viewfunction latestAssetBalances() view returns (tuple[] assetBalances)
manualAdjustments
viewfunction manualAdjustments() view returns (tuple[] adjustments)
quoteToken
viewfunction quoteToken() view returns (address)
ramos
viewfunction ramos() view returns (address)
rescuer
viewfunction rescuer() view returns (address)
strategyName
viewfunction strategyName() view returns (string)
strategyVersion
purefunction strategyVersion() pure returns (string)
templeToken
viewfunction templeToken() view returns (address)
treasuryReservesVault
viewfunction treasuryReservesVault() view returns (address)
acceptExecutor
nonpayablefunction acceptExecutor()
acceptRescuer
nonpayablefunction acceptRescuer()
addLiquidity
nonpayablefunction addLiquidity(tuple _requestData)
automatedShutdown
nonpayablefunction automatedShutdown(bytes shutdownParamsData)
borrowProtocolToken
nonpayablefunction borrowProtocolToken(uint256 amount, address recipient)
borrowQuoteToken
nonpayablefunction borrowQuoteToken(uint256 amount, address recipient)
checkpointAssetBalances
nonpayablefunction checkpointAssetBalances() returns (tuple[])
debtCeilingUpdated
nonpayablefunction debtCeilingUpdated(address token, uint256 newDebtCeiling)
populateShutdownData
nonpayablefunction populateShutdownData(bytes populateParamsData) returns (bytes shutdownData)
proportionalAddLiquidityQuote
nonpayablefunction proportionalAddLiquidityQuote(uint256 _quoteTokenAmount, uint256 _slippageBps) returns (uint256 templeAmount, uint256 expectedBptAmount, uint256 minBptAmount, tuple requestData)
proportionalRemoveLiquidityQuote
nonpayablefunction proportionalRemoveLiquidityQuote(uint256 _bptAmount, uint256 _slippageBps) returns (uint256 expectedTempleAmount, uint256 expectedQuoteTokenAmount, uint256 minTempleAmount, uint256 minQuoteTokenAmount, tuple requestData)
proposeNewExecutor
nonpayablefunction proposeNewExecutor(address account)
proposeNewRescuer
nonpayablefunction proposeNewRescuer(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
removeLiquidity
nonpayablefunction removeLiquidity(tuple _requestData, uint256 _bptAmount)
repayProtocolToken
nonpayablefunction repayProtocolToken(uint256 amount)
repayQuoteToken
nonpayablefunction repayQuoteToken(uint256 amount)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setManualAdjustments
nonpayablefunction setManualAdjustments(tuple[] adjustments)
setRescueMode
nonpayablefunction setRescueMode(bool value)
setTokenAllowance
nonpayablefunction setTokenAllowance(address token, address spender, uint256 amount)
setTreasuryReservesVault
nonpayablefunction setTreasuryReservesVault(address _trv)
events
AddLiquidity
event AddLiquidity(uint256 quoteTokenAmount, uint256 protocolTokenAmount, uint256 bptTokensStaked)
AssetBalancesCheckpoint
event AssetBalancesCheckpoint((address asset, uint256 balance)[] assetBalances)
BorrowToken
event BorrowToken(address indexed token, uint256 amount)
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
ManualAdjustmentsSet
event ManualAdjustmentsSet((address asset, int256 delta)[] adjustments)
NewExecutorAccepted
event NewExecutorAccepted(address indexed oldExecutor, address indexed newExecutor)
NewExecutorProposed
event NewExecutorProposed(address indexed oldExecutor, address indexed oldProposedExecutor, address indexed newProposedExecutor)
NewRescuerAccepted
event NewRescuerAccepted(address indexed oldRescuer, address indexed newRescuer)
NewRescuerProposed
event NewRescuerProposed(address indexed oldRescuer, address indexed oldProposedRescuer, address indexed newProposedRescuer)
RemoveLiquidity
event RemoveLiquidity(uint256 quoteTokenAmount, uint256 protocolTokenAmount, uint256 bptIn)
RepayToken
event RepayToken(address indexed token, uint256 amount)
RescueModeSet
event RescueModeSet(bool indexed value)
Shutdown
event Shutdown()
TokenAllowanceSet
event TokenAllowanceSet(address token, address spender, uint256 amount)
TreasuryReservesVaultSet
event TreasuryReservesVaultSet(address indexed trv)
errors
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress()
InvalidVersion
error InvalidVersion(string expected, string actual)
OnlyTreasuryReserveVault
error OnlyTreasuryReserveVault(address caller)
creation bytecode
0x6101006040523480156200001257600080fd5b506040516200502b3803806200502b83398101604081905262000035916200073c565b8787878783836001600160a01b038216620000635760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008b5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000be5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f8838262000908565b50600680546001600160a01b0319166001600160a01b0392831617905587811660805286811660a05285811660c052841660e052506200013e915060009050866200014c565b505050505050505062000a94565b60c0516200015c90838362000170565b60a0516200016c90838362000170565b5050565b6001600160a01b038216156200018e576200018e83836000620001a2565b6200019d8382600019620001a2565b505050565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002159190620009d4565b81036200022157505050565b620002386001600160a01b03841683600062000255565b80156200019d576200019d6001600160a01b0384168383620003b1565b801580620002d35750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d19190620009d4565b155b6200034b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b6040516001600160a01b0383166024820152604481018290526200019d90849063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200046b16565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801562000402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004289190620009d4565b9050620004658463095ea7b360e01b85620004448686620009ee565b6040516001600160a01b039092166024830152604482015260640162000378565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490820152600090620004ba906001600160a01b0385169084906200053f565b9050805160001480620004de575080806020019051810190620004de919062000a16565b6200019d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000342565b606062000550848460008562000558565b949350505050565b606082471015620005bb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000342565b600080866001600160a01b03168587604051620005d9919062000a41565b60006040518083038185875af1925050503d806000811462000618576040519150601f19603f3d011682016040523d82523d6000602084013e6200061d565b606091505b50909250905062000631878383876200063c565b979650505050505050565b60608315620006b0578251600003620006a8576001600160a01b0385163b620006a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000342565b508162000550565b620005508383815115620006c75781518083602001fd5b8060405162461bcd60e51b815260040162000342919062000a5f565b80516001600160a01b0381168114620006fb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200073357818101518382015260200162000719565b50506000910152565b600080600080600080600080610100898b0312156200075a57600080fd5b6200076589620006e3565b97506200077560208a01620006e3565b60408a01519097506001600160401b03808211156200079357600080fd5b818b0191508b601f830112620007a857600080fd5b815181811115620007bd57620007bd62000700565b604051601f8201601f19908116603f01168101908382118183101715620007e857620007e862000700565b816040528281528e60208487010111156200080257600080fd5b6200081583602083016020880162000716565b809a5050505050506200082b60608a01620006e3565b94506200083b60808a01620006e3565b93506200084b60a08a01620006e3565b92506200085b60c08a01620006e3565b91506200086b60e08a01620006e3565b90509295985092959890939650565b600181811c908216806200088f57607f821691505b602082108103620008b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200019d57600081815260208120601f850160051c81016020861015620008df5750805b601f850160051c820191505b818110156200090057828155600101620008eb565b505050505050565b81516001600160401b0381111562000924576200092462000700565b6200093c816200093584546200087a565b84620008b6565b602080601f8311600181146200097457600084156200095b5750858301515b600019600386901b1c1916600185901b17855562000900565b600085815260208120601f198616915b82811015620009a55788860151825594840194600190910190840162000984565b5085821015620009c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009e757600080fd5b5051919050565b8082018082111562000a1057634e487b7160e01b600052601160045260246000fd5b92915050565b60006020828403121562000a2957600080fd5b8151801515811462000a3a57600080fd5b9392505050565b6000825162000a5581846020870162000716565b9190910192915050565b602081526000825180602084015262000a8081604085016020870162000716565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161449962000b926000396000818161040c01528181610ca7015261197f015260008181610336015281816116830152818161170b015281816117730152818161194a015281816119dd01528181611a8b01528181611dc60152818161282a015281816129d00152612a980152600081816104bf0152818161082a015281816108b20152818161091a01528181610c7201528181610d0501528181610db30152818161285501528181612b3c0152612c0401526000818161039f01528181610e7a0152818161137501528181611cd701528181611e8f01528181611fac015281816124b5015261292601526144996000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80638112c4af11610145578063ce5c715a116100bd578063daeccc791161008c578063e321453411610071578063e3214534146105af578063e337e11d146105b7578063e779ae7e146105ca57600080fd5b8063daeccc7914610579578063e173ad25146105a757600080fd5b8063ce5c715a14610527578063d3a6f4721461052f578063d7fc90ea14610542578063d9a349c11461056657600080fd5b8063a7229fd911610114578063b926f2c2116100f9578063b926f2c2146104e1578063bfccf0ec146104f4578063c34c08e51461050757600080fd5b8063a7229fd9146104a7578063b1a9069c146104ba57600080fd5b80638112c4af146104775780638fece34b1461047f578063a25db5e214610358578063a2736b821461049457600080fd5b806325829410116101d85780634a6c983b116101a75780635137bf161161018c5780635137bf161461042e57806359eef8ce146104415780637908f4981461045457600080fd5b80634a6c983b146103f45780634b2adf171461040757600080fd5b806325829410146103585780632769d9ff1461039a57806327a06a29146103c157806338a63183146103d457600080fd5b8063101d16841161022f5780631ed760b4116102145780631ed760b4146103165780631f21140514610329578063217a4b701461033157600080fd5b8063101d1684146102af5780631810fe7f146102f957600080fd5b8063032ef9011461026157806307f184f114610276578063082f21eb14610289578063097b144e1461029c575b600080fd5b61027461026f3660046132f1565b6105dd565b005b610274610284366004613330565b61068c565b61027461029736600461334d565b6107c4565b6102746102aa366004613366565b610990565b6006546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546103069060ff1681565b60405190151581526020016102f0565b6102746103243660046133a7565b610a5d565b610274610ab2565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102f09190613441565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6102746103cf366004613454565b610bd1565b6000546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b61038d610402366004613484565b610e2c565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b61027461043c366004613542565b610f4c565b61027461044f366004613330565b61104f565b610467610462366004613584565b611341565b6040516102f09493929190613685565b6102746114ce565b61048761160e565b6040516102f091906136b4565b6102746104a236600461334d565b61161d565b6102746104b5366004613366565b6117b8565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6102746104ef366004613454565b6118a9565b610274610502366004613719565b611ad2565b6001546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b610487611cd1565b61027461053d366004613786565b611e26565b610555610550366004613584565b611f77565b6040516102f09594939291906137cb565b610274610574366004613330565b612108565b610306610587366004613831565b600260209081526000928352604080842090915290825290205460ff1681565b61038d61224d565b6104876122db565b6102746105c5366004613484565b61235d565b6102746105d8366004613866565b61244a565b60005473ffffffffffffffffffffffffffffffffffffffff16331461062e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106dd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661072a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6107f2336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b610828576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fe6860fe3ccf5242864f07e485b5e63c2777d82f69ef809696a0400a4aed83d9e8260405161089091815260200190565b60405180910390a26108da73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084612659565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c4906064015b600060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b5050505050565b6109be336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b6109f4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ff83838361273b565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610aae576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610b03576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610b54576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610bff336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b610c35576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f0c8eaae01b888a7947a480c4c088bea47ce266f4c758a8bf534398c130a6d35d83604051610d6b91815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a55906064015b600060405180830381600087803b158015610e1057600080fd5b505af1158015610e24573d6000803e3d6000fd5b505050505050565b60606000610e3c83850185613965565b9050610e786040805160c08101825260609181018281528282018390526080820192909252600060a08201529081908152602001600081525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ba5b79826040518163ffffffff1660e01b8152600401606060405180830381865afa158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0791906139a7565b5050602082018190528251610f1c9190611f77565b85525050604051610f3392508391506020016139d5565b6040516020818303038152906040529250505092915050565b610f7a336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b610fb0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fbc6007600061326d565b8060005b8181101561101d576007848483818110610fdc57610fdc613a07565b83546001810185556000948552602090942060409091029290920192600202909101905061100a8282613a36565b50508061101690613abd565b9050610fc0565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b38383604051610a50929190613af5565b61107d336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b6110b3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611100576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a26006546111649073ffffffffffffffffffffffffffffffffffffffff1682612825565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa1580156111fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112439190810190613bd6565b905061127f60408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b60405160200161128f9190613c1f565b60405160208183030381529060405280519060200120816040516020016112b69190613c1f565b6040516020818303038152906040528051906020012014610aae57604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c14800000000000000000000000000000000000000000000000000000000815261133891908390600401613c3b565b60405180910390fd5b600080600061137360405180608001604052806060815260200160608152602001606081526020016000151581525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355ac8d306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114029190613c69565b6040517f7908f498000000000000000000000000000000000000000000000000000000008152600481018890526024810187905273ffffffffffffffffffffffffffffffffffffffff9190911690637908f498906044016000604051808303816000875af1158015611478573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114be9190810190613e3e565b9299919850965090945092505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611524576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611575576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060611618611cd1565b905090565b61164b336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b611681576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fe6860fe3ccf5242864f07e485b5e63c2777d82f69ef809696a0400a4aed83d9e826040516116e991815260200190565b60405180910390a261173373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084612659565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c49060640161095b565b6117e6336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b61181c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161187b91815260200190565b60405180910390a36118a473ffffffffffffffffffffffffffffffffffffffff8416838361287b565b505050565b6118d7336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b61190d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b1580156119c357600080fd5b505af11580156119d7573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f0c8eaae01b888a7947a480c4c088bea47ce266f4c758a8bf534398c130a6d35d83604051611a4391815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a5590606401610df6565b611b00336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b611b36576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b83576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610e2457848482818110611bb657611bb6613a07565b905060400201803603810190611bcc9190613e98565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611cca81613abd565b9050611b9c565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ba5b79826040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6491906139a7565b925060019150611d719050565b604051908082528060200260200182016040528015611db657816020015b6040805180820190915260008082526020820152815260200190600190039081611d8f5790505b50915060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018281525082600081518110611e1757611e17613a07565b60200260200101819052505090565b611e54336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b611e8a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3a6f47285856040518363ffffffff1660e01b8152600401611ee89291906140fb565b60408051808303816000875af1158015611f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2a919061411d565b604080518381526020810183905290810186905291935091507f462ff1f90b66e3549a190bb471a2276749250543bad2ce9c21f706d882a59dad906060015b60405180910390a150505050565b600080600080611faa60405180608001604052806060815260200160608152602001606081526020016000151581525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355ac8d306040518163ffffffff1660e01b8152600401602060405180830381865afa158015612015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120399190613c69565b6040517fd7fc90ea000000000000000000000000000000000000000000000000000000008152600481018990526024810188905273ffffffffffffffffffffffffffffffffffffffff919091169063d7fc90ea906044016000604051808303816000875af11580156120af573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120f59190810190614141565b939b929a50909850965090945092505050565b612136336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b61216c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166121b9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6005805461225a906141a5565b80601f0160208091040260200160405190810160405280929190818152602001828054612286906141a5565b80156122d35780601f106122a8576101008083540402835291602001916122d3565b820191906000526020600020905b8154815290600101906020018083116122b657829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156123545760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016122ff565b50505050905090565b61238b336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b6123c1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123cb82826128d1565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401610df6565b612478336000357fffffffff0000000000000000000000000000000000000000000000000000000016612595565b6124ae576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e779ae7e856040518263ffffffff1660e01b815260040161250c91906141f2565b6060604051808303816000875af115801561252b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254f91906139a7565b604080518481526020810184905290810182905292955090935091507ff75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b2490606001611f69565b60035460009060ff16156125c7575060005473ffffffffffffffffffffffffffffffffffffffff838116911614612653565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480612642575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561264f57506001612653565b5060005b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526127359085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612c7d565b50505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156127ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d19190614205565b81036127dc57505050565b6127fe73ffffffffffffffffffffffffffffffffffffffff8416836000612d8c565b80156118a4576118a473ffffffffffffffffffffffffffffffffffffffff84168383612f0e565b6128507f00000000000000000000000000000000000000000000000000000000000000008383613007565b610aae7f00000000000000000000000000000000000000000000000000000000000000008383613007565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118a49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016126b3565b60006128df828401846142ca565b805160208201516040517fd3a6f47200000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263d3a6f4729261295b929091600401614420565b60408051808303816000875af1158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d919061411d565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a509190614205565b90508015612b0b576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401600060405180830381600087803b158015612af257600080fd5b505af1158015612b06573d6000803e3d6000fd5b505050505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbc9190614205565b90508015610989576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401600060405180830381600087803b158015612c5e57600080fd5b505af1158015612c72573d6000803e3d6000fd5b505050505050505050565b6000612cdf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661305a9092919063ffffffff16565b9050805160001480612d00575080806020019051810190612d009190614433565b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611338565b801580612e2c57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612e06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2a9190614205565b155b612eb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401611338565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118a49084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016126b3565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa89190614205565b9050612735847f095ea7b30000000000000000000000000000000000000000000000000000000085612fda8686614450565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016126b3565b73ffffffffffffffffffffffffffffffffffffffff82161561302f5761302f8383600061273b565b6118a483827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61273b565b60606130698484600085613073565b90505b9392505050565b606082471015613105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611338565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161312e9190613c1f565b60006040518083038185875af1925050503d806000811461316b576040519150601f19603f3d011682016040523d82523d6000602084013e613170565b606091505b50915091506131818783838761318e565b925050505b949350505050565b6060831561322457825160000361321d5773ffffffffffffffffffffffffffffffffffffffff85163b61321d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611338565b5081613186565b61318683838151156132395781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113389190613441565b508054600082556002029060005260206000209081019061328e9190613291565b50565b5b808211156132cf5780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201613292565b5090565b801515811461328e57600080fd5b80356132ec816132d3565b919050565b60006020828403121561330357600080fd5b813561306c816132d3565b73ffffffffffffffffffffffffffffffffffffffff8116811461328e57600080fd5b60006020828403121561334257600080fd5b813561306c8161330e565b60006020828403121561335f57600080fd5b5035919050565b60008060006060848603121561337b57600080fd5b83356133868161330e565b925060208401356133968161330e565b929592945050506040919091013590565b600080604083850312156133ba57600080fd5b82356133c58161330e565b946020939093013593505050565b60005b838110156133ee5781810151838201526020016133d6565b50506000910152565b6000815180845261340f8160208601602086016133d3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061306c60208301846133f7565b6000806040838503121561346757600080fd5b8235915060208301356134798161330e565b809150509250929050565b6000806020838503121561349757600080fd5b823567ffffffffffffffff808211156134af57600080fd5b818501915085601f8301126134c357600080fd5b8135818111156134d257600080fd5b8660208285010111156134e457600080fd5b60209290920196919550909350505050565b60008083601f84011261350857600080fd5b50813567ffffffffffffffff81111561352057600080fd5b6020830191508360208260061b850101111561353b57600080fd5b9250929050565b6000806020838503121561355557600080fd5b823567ffffffffffffffff81111561356c57600080fd5b613578858286016134f6565b90969095509350505050565b6000806040838503121561359757600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156135d6578151875295820195908201906001016135ba565b509495945050505050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561363357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613601565b50508285015191508581038387015261364c81836135a6565b925050506040830151848203604086015261366782826133f7565b915050606083015161367d606086018215159052565b509392505050565b8481528360208201528260408201526080606082015260006136aa60808301846135e1565b9695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561370c578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016136d1565b5091979650505050505050565b60008060006040848603121561372e57600080fd5b83356137398161330e565b9250602084013567ffffffffffffffff81111561375557600080fd5b613761868287016134f6565b9497909650939450505050565b60006080828403121561378057600080fd5b50919050565b6000806040838503121561379957600080fd5b823567ffffffffffffffff8111156137b057600080fd5b6137bc8582860161376e565b95602094909401359450505050565b85815284602082015283604082015282606082015260a0608082015260006137f660a08301846135e1565b979650505050505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146132ec57600080fd5b6000806040838503121561384457600080fd5b823561384f8161330e565b915061385d60208401613801565b90509250929050565b60006020828403121561387857600080fd5b813567ffffffffffffffff81111561388f57600080fd5b6131868482850161376e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156138ed576138ed61389b565b60405290565b6040805190810167ffffffffffffffff811182821017156138ed576138ed61389b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561395d5761395d61389b565b604052919050565b60006020828403121561397757600080fd5b6040516020810181811067ffffffffffffffff8211171561399a5761399a61389b565b6040529135825250919050565b6000806000606084860312156139bc57600080fd5b8351925060208401519150604084015190509250925092565b6020815260008251604060208401526139f160608401826135e1565b9050602084015160408401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8135613a418161330e565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613aee57613aee613a8e565b5060010190565b6020808252818101839052600090604080840186845b87811015613b4e578135613b1e8161330e565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101613b0b565b5090979650505050505050565b600067ffffffffffffffff821115613b7557613b7561389b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000613bb4613baf84613b5b565b613916565b9050828152838383011115613bc857600080fd5b61306c8360208301846133d3565b600060208284031215613be857600080fd5b815167ffffffffffffffff811115613bff57600080fd5b8201601f81018413613c1057600080fd5b61318684825160208401613ba1565b60008251613c318184602087016133d3565b9190910192915050565b604081526000613c4e60408301856133f7565b8281036020840152613c6081856133f7565b95945050505050565b600060208284031215613c7b57600080fd5b815161306c8161330e565b600067ffffffffffffffff821115613ca057613ca061389b565b5060051b60200190565b600082601f830112613cbb57600080fd5b81516020613ccb613baf83613c86565b82815260059290921b84018101918181019086841115613cea57600080fd5b8286015b84811015613d055780518352918301918301613cee565b509695505050505050565b600082601f830112613d2157600080fd5b61306c83835160208501613ba1565b80516132ec816132d3565b600060808284031215613d4d57600080fd5b613d556138ca565b9050815167ffffffffffffffff80821115613d6f57600080fd5b818401915084601f830112613d8357600080fd5b81516020613d93613baf83613c86565b82815260059290921b84018101918181019088841115613db257600080fd5b948201945b83861015613dd9578551613dca8161330e565b82529482019490820190613db7565b86525085810151935082841115613def57600080fd5b613dfb87858801613caa565b90850152506040840151915080821115613e1457600080fd5b50613e2184828501613d10565b604083015250613e3360608301613d30565b606082015292915050565b60008060008060808587031215613e5457600080fd5b845193506020850151925060408501519150606085015167ffffffffffffffff811115613e8057600080fd5b613e8c87828801613d3b565b91505092959194509250565b600060408284031215613eaa57600080fd5b613eb26138f3565b613ebb83613801565b81526020830135613ecb816132d3565b60208201529392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f0c57600080fd5b830160208101925035905067ffffffffffffffff811115613f2c57600080fd5b8060051b360382131561353b57600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613f7057600080fd5b8260051b80836020870137939093016020019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613fbe57600080fd5b830160208101925035905067ffffffffffffffff811115613fde57600080fd5b80360382131561353b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000608083016140468384613ed7565b60808652918290529060009060a086015b8183101561409557833561406a8161330e565b73ffffffffffffffffffffffffffffffffffffffff1681526020938401936001939093019201614057565b6140a26020870187613ed7565b9450925086810360208801526140b9818585613f3e565b93505050506140cb6040840184613f89565b85830360408701526140de838284613fed565b925050506140ee606084016132e1565b801515606086015261367d565b60408152600061410e6040830185614036565b90508260208301529392505050565b6000806040838503121561413057600080fd5b505080516020909101519092909150565b600080600080600060a0868803121561415957600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff81111561418c57600080fd5b61419888828901613d3b565b9150509295509295909350565b600181811c908216806141b957607f821691505b602082108103613780577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60208152600061306c6020830184614036565b60006020828403121561421757600080fd5b5051919050565b600082601f83011261422f57600080fd5b8135602061423f613baf83613c86565b82815260059290921b8401810191818101908684111561425e57600080fd5b8286015b84811015613d055780358352918301918301614262565b600082601f83011261428a57600080fd5b8135614298613baf82613b5b565b8181528460208386010111156142ad57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156142dd57600080fd5b823567ffffffffffffffff808211156142f557600080fd5b908401906040828703121561430957600080fd5b6143116138f3565b82358281111561432057600080fd5b83016080818903121561433257600080fd5b61433a6138ca565b81358481111561434957600080fd5b8201601f81018a1361435a57600080fd5b8035614368613baf82613c86565b81815260059190911b8201880190888101908c83111561438757600080fd5b928901925b828410156143ae57833561439f8161330e565b8252928901929089019061438c565b845250505081860135848111156143c457600080fd5b6143d08a82850161421e565b87830152506040820135848111156143e757600080fd5b6143f38a828501614279565b604083015250614405606083016132e1565b60608201528252509183013592820192909252949350505050565b60408152600061410e60408301856135e1565b60006020828403121561444557600080fd5b815161306c816132d3565b8082018082111561265357612653613a8e56fea2646970667358221220445bb48351dd796fa0d014d80603e7aea629ead403fbb22c03b24815aaa704da64736f6c634300081300330000000000000000000000009f90430179d9b67341bfa50559bc7b8e35629f1b000000000000000000000000b1e8ab0a81aadf632a653e46caeda1593d71d1430000000000000000000000000000000000000000000000000000000000000100000000000000000000000000f359bae7b6ad295724e798a3ef6fa5109919f399000000000000000000000000ddf499e726bfde29ce035f6b355e55757f08b5ef000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000087b8d213177fb132e508b5d7018f7b590e00a480000000000000000000000000000000000000000000000000000000000000000d52616d6f73537472617465677900000000000000000000000000000000000000