0 txs
0 calls
constructor
No constructor.
functions
CRV_ADDRESS
viewfunction CRV_ADDRESS() view returns (address)
CURVE_REGISTRY
viewfunction CURVE_REGISTRY() view returns (address)
CVX_ADDRESS
viewfunction CVX_ADDRESS() view returns (address)
getAmountOutV2
viewfunction getAmountOutV2(uint256 amountIn, address[] path) view returns (uint256 amountOut)
getAmountOutV3
viewfunction getAmountOutV3(uint256 amountIn, address[] path, uint24[] feeTiers) view returns (uint256 amountOut)
getCurvePool
viewfunction getCurvePool(address inputToken, address outputToken) view returns (address curvePool, uint256 i, uint256 j)
getPathV2
viewfunction getPathV2(address inputToken, address outputToken) view returns (address[] path)
getPathV3
viewfunction getPathV3(address inputToken, address outputToken) view returns (address[] path, uint24[] feeTiers, bytes encodedPath)
getTokenIndex
viewfunction getTokenIndex(address token, address pool) view returns (uint256)
intermediateToken
viewfunction intermediateToken() view returns (address)
owner
viewfunction owner() view returns (address)
priceOracleAddress
viewfunction priceOracleAddress() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
ROUTER_NG
viewfunction ROUTER_NG() view returns (address)
UNISWAP_V2_FACTORY
viewfunction UNISWAP_V2_FACTORY() view returns (address)
UNISWAP_V2_ROUTER
viewfunction UNISWAP_V2_ROUTER() view returns (address)
UNISWAP_V3_FACTORY
viewfunction UNISWAP_V3_FACTORY() view returns (address)
UNISWAP_V3_ROUTER
viewfunction UNISWAP_V3_ROUTER() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
USDC_ADDRESS
viewfunction USDC_ADDRESS() view returns (address)
USDT_ADDRESS
viewfunction USDT_ADDRESS() view returns (address)
initialize
nonpayablefunction initialize(address _priceOracle)
renounceOwnership
nonpayablefunction renounceOwnership()
setPriceOracleAddress
nonpayablefunction setPriceOracleAddress(address _priceOracle)
swap
nonpayablefunction swap(address inputToken, uint256 amount, address outputToken, uint16 slippageBps, address strategy, uint256 maxDeadline, bytes data) returns (uint256 amountOut)
swapExactOut
nonpayablefunction swapExactOut(uint256 totalAmountAvailable, address inputToken, uint256 amountOut, address outputToken, uint16 slippageBps, address receiver, uint16 maxDeadline, bytes data) returns (uint256 amountIn)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AmountCantBeZero
error AmountCantBeZero()
ConfirmationAlreadyProcessed
error ConfirmationAlreadyProcessed()
DepositExceedsLimit
error DepositExceedsLimit()
DepositsPaused
error DepositsPaused()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExceedsMaxSharesOut
error ExceedsMaxSharesOut()
FailedCall
error FailedCall()
FeeExceedsLimit
error FeeExceedsLimit()
InsufficientBalance
error InsufficientBalance()
InsufficientInputAmount
error InsufficientInputAmount()
InsufficientLiquidity
error InsufficientLiquidity()
InsufficientOut
error InsufficientOut()
InvalidAddress
error InvalidAddress()
InvalidAmanaVault
error InvalidAmanaVault()
InvalidInitialization
error InvalidInitialization()
InvalidMessage
error InvalidMessage()
InvalidNonce
error InvalidNonce()
InvalidPath
error InvalidPath()
InvalidPathLength
error InvalidPathLength()
InvalidStrategyChainId
error InvalidStrategyChainId()
InvalidTokenPair
error InvalidTokenPair()
MintExceedsLimit
error MintExceedsLimit()
NoAssetsToSwitch
error NoAssetsToSwitch()
NoFundsReceived
error NoFundsReceived()
NotAuthorized
error NotAuthorized()
NothingToWithdraw
error NothingToWithdraw()
NotInitializing
error NotInitializing()
OldStrategyNotSet
error OldStrategyNotSet()
OnlyGateway
error OnlyGateway()
OnlyVault
error OnlyVault()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RedeemExceedsLimit
error RedeemExceedsLimit()
StrategyAlreadySet
error StrategyAlreadySet()
TransferFailed
error TransferFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
VaultAlreadyAuthorized
error VaultAlreadyAuthorized()
WithdrawExceedsLimit
error WithdrawExceedsLimit()
creation bytecode
0x60a080604052346029573060805261351b908161002f8239608051818181610899015261096c0152f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081630f24df5d146112605750806323e5e2121461121d5780632bc51c6d146111f457806334d34e04146111635780633e65db941461112257806341c64a2f146110f957806345cdc3e4146110cd5780634bde96d314610d995780634e4b6c6b14610b305780634f1ef286146108f057806352d1902d1461088657806356ff5cbf14610754578063715018a6146106ea5780637dc4f2201461065e5780638da5cb5b1461062857806399d8fae3146105ff578063a82ed9ec146105d6578063ad3cb1cc1461058f578063b942717b14610566578063bb09d9b714610537578063c189205814610508578063c43d14cf146104d9578063c4d66de81461029e578063e58b93711461020a578063ed1c1e00146101db578063f0c51e5e146101ac578063f2fde38b146101815763f73e5aab1461015357600080fd5b3461017c57600036600319011261017c576004546040516001600160a01b039091168152602090f35b600080fd5b3461017c57602036600319011261017c576101aa61019d611284565b6101a5612dab565b612d35565b005b3461017c57600036600319011261017c5760206040517316c6521dff6bab339122a0fe25a91166932653538152f35b3461017c57600036600319011261017c57602060405173d533a949740bb3306d119cc777fa900ba034cd528152f35b3461017c57604036600319011261017c57610234610226611284565b61022e61129a565b90612aa2565b61024c604093929351926060845260608401906112dd565b82810360208401526020808551928381520194019060005b81811061028357848061027f8887838203604085015261142f565b0390f35b825162ffffff16865260209586019590920191600101610264565b3461017c57602036600319011261017c576102b7611284565b6000805160206134c6833981519152549060ff8260401c1615916001600160401b038116801590816104d1575b60011490816104c7575b1590816104be575b506104ad5767ffffffffffffffff1981166001176000805160206134c68339815191525582610480575b506103296133f6565b6103316133f6565b6103396133f6565b61034233612d35565b61034a6133f6565b600080546001600160a01b03199081166001600160a01b0393909316929092179055600180548216737a250d5630b4cf539739df2c5dacb4c659f2488d179055600280548216735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f17905560038054821673e592427a0aece92de3edee1f18e0157c05861564179055600480548216731f98431c8ad98523631ae4a59f267346ea31f98417905560058054821673f98b45fa17de75fb1ad0e7afd971b0ca00e379fc1790556006805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905561042757005b68ff0000000000000000196000805160206134c683398151915254166000805160206134c6833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001176000805160206134c68339815191525582610320565b63f92ee8a960e01b60005260046000fd5b905015846102f6565b303b1591506102ee565b8491506102e4565b3461017c57600036600319011261017c576020604051734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b8152f35b3461017c57600036600319011261017c57602060405173dac17f958d2ee523a2206206994597c13d831ec78152f35b3461017c57600036600319011261017c57602060405173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488152f35b3461017c57600036600319011261017c576005546040516001600160a01b039091168152602090f35b3461017c57600036600319011261017c5761027f60408051906105b2818361134b565b60058252640352e302e360dc1b60208301525191829160208352602083019061142f565b3461017c57600036600319011261017c576001546040516001600160a01b039091168152602090f35b3461017c57600036600319011261017c576002546040516001600160a01b039091168152602090f35b3461017c57600036600319011261017c57600080516020613486833981519152546040516001600160a01b039091168152602090f35b3461017c5760e036600319011261017c57610677611284565b604435906001600160a01b038216820361017c576064359061ffff8216820361017c576084356001600160a01b038116810361017c5760c435926001600160401b03841161017c576020946106d36106e29536906004016112b0565b505060a4359360243590611f5c565b604051908152f35b3461017c57600036600319011261017c57610703612dab565b60008051602061348683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017c57604036600319011261017c5761076d611284565b61077561129a565b600554604051632a1f7c1b60e21b81526001600160a01b03848116600483015283811660248301529093929160209185916044918391165afa92831561087a57600093610849575b506001600160a01b0383169182156107f857836107df6060956107e593611e0e565b92611e0e565b9060405192835260208301526040820152f35b60405162461bcd60e51b815260206004820152602360248201527f43757276653a204e6f20706f6f6c20666f756e6420666f7220746f6b656e207060448201526230b4b960e91b6064820152608490fd5b61086c91935060203d602011610873575b610864818361134b565b810190611d1a565b91836107bd565b503d61085a565b6040513d6000823e3d90fd5b3461017c57600036600319011261017c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036108df5760206040516000805160206134a68339815191528152f35b63703e46dd60e11b60005260046000fd5b604036600319011261017c57610904611284565b602435906001600160401b03821161017c573660238301121561017c57816004013590610930826113f1565b9161093e604051938461134b565b8083526020830193366024838301011161017c57816000926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610b0d575b506108df576109a4612dab565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa60009181610ad9575b506109e95784634c9c8ce360e01b60005260045260246000fd5b806000805160206134a6833981519152869203610ac55750823b15610ab1576000805160206134a683398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2825115610a9657600080916101aa945190845af43d15610a8e573d91610a71836113f1565b92610a7f604051948561134b565b83523d6000602085013e613424565b606091613424565b50505034610aa057005b63b398979f60e01b60005260046000fd5b634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d602011610b05575b81610af56020938361134b565b8101031261017c575190866109cf565b3d9150610ae8565b6000805160206134a6833981519152546001600160a01b03161415905084610997565b3461017c57604036600319011261017c576004356024356001600160401b03811161017c57610b63903690600401611383565b90600081158015610d8e575b610d7f57506002546001600160a01b0316906000905b83516000198101908111610cc057821015610d74576001600160a01b03610bac83866115a6565b51169060018301808411610cc0576001600160a01b0390610bcd90876115a6565b5160405163e6a4390560e01b81526001600160a01b038581166004830152929091169182166024820152602081604481895afa90811561087a57600091610d56575b506001600160a01b0316908115610cd657606060049260405193848092630240bc6b60e21b82525afa91821561087a576000908193610cf4575b506001600160701b0380911692169310600014610cef57915b821590818015610ce7575b610cd6576103e58302928084046103e51490151715610cc057610c909083611f15565b906103e884029384046103e8141715610cc057610cb2610cb8926001946114a4565b90611f28565b910190610b85565b634e487b7160e01b600052601160045260246000fd5b63bb55fd2760e01b60005260046000fd5b508015610c6d565b610c62565b92506060833d8211610d4e575b81610d0e6060938361134b565b81010312610d4b57610d1f83611f48565b906040610d2e60208601611f48565b94015163ffffffff811603610d4b57506001600160701b03610c49565b80fd5b3d9150610d01565b610d6e915060203d811161087357610864818361134b565b87610c0f565b602090604051908152f35b6320db826760e01b8152600490fd5b506002835110610b6f565b3461017c57606036600319011261017c576004356024356001600160401b03811161017c57610dcc903690600401611383565b604435916001600160401b03831161017c573660238401121561017c578260040135610df78161136c565b93610e05604051958661134b565b8185526024602086019260051b8201019036821161017c57602401915b8183106110b1575050506000811580156110a6575b801561107a575b610d7f57508260009260018060a01b0360045416925b81516000198101908111610cc057851015610d74576001600160a01b03610e7b86846115a6565b511660018601808711610cc0576020906001600160a01b0390610e9e90866115a6565b511662ffffff610eae89886115a6565b51604051630b4c774160e11b81526001600160a01b03958616600482015292909416602483015290921662ffffff16604483015281606481885afa90811561087a5760009161105c575b506001600160a01b03168015610cd657604051633850c7bd60e01b815260e081600481855afa90811561087a57600091610fc1575b5090602060049160405192838092630d34328160e11b82525afa801561087a576001600160801b0391600091610f93575b501615610cd657600191610f8891610f7f906001600160a01b031680611f15565b60601c90611f15565b60601c940193610e54565b610fb4915060203d8111610fba575b610fac818361134b565b810190611ef6565b88610f5e565b503d610fa2565b60e0813d8211611054575b81610fd960e0938361134b565b81010312611050578051916001600160a01b0383168303610d4b5760208201518060020b03610d4b575060049161104860c08361101a604060209601611ed9565b5061102760608201611ed9565b5061103460808201611ed9565b5061104160a08201611ee8565b5001611497565b509150610f2d565b5080fd5b3d9150610fcc565b611074915060203d811161087357610864818361134b565b86610ef8565b50825160001981019081116110925784511415610e3e565b634e487b7160e01b82526011600452602482fd5b506002835110610e37565b823562ffffff8116810361017c57815260209283019201610e22565b3461017c57604036600319011261017c5760206106e26110eb611284565b6110f361129a565b90611e0e565b3461017c57600036600319011261017c576003546040516001600160a01b039091168152602090f35b3461017c57604036600319011261017c5761027f61114f611141611284565b61114961129a565b90611c35565b6040519182916020835260208301906112dd565b3461017c5761010036600319011261017c5761117d61129a565b6064356001600160a01b038116810361017c5760843561ffff8116810361017c5760a4356001600160a01b038116810361017c5760c4359161ffff8316830361017c5760e435936001600160401b03851161017c576020956111e66106e29636906004016112b0565b50506044359060043561160e565b3461017c57600036600319011261017c576000546040516001600160a01b039091168152602090f35b3461017c57602036600319011261017c57611236611284565b61123e612dab565b600080546001600160a01b0319166001600160a01b0392909216919091179055005b3461017c57600036600319011261017c576006546001600160a01b03168152602090f35b600435906001600160a01b038216820361017c57565b602435906001600160a01b038216820361017c57565b9181601f8401121561017c578235916001600160401b03831161017c576020838186019501011161017c57565b906020808351928381520192019060005b8181106112fb5750505090565b82516001600160a01b03168452602093840193909201916001016112ee565b60a081019081106001600160401b0382111761133557604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761133557604052565b6001600160401b0381116113355760051b60200190565b9080601f8301121561017c5781359061139b8261136c565b926113a9604051948561134b565b82845260208085019360051b82010191821161017c57602001915b8183106113d15750505090565b82356001600160a01b038116810361017c578152602092830192016113c4565b6001600160401b03811161133557601f01601f191660200190565b60005b83811061141f5750506000910152565b818101518382015260200161140f565b906020916114488151809281855285808601910161140c565b601f01601f1916010190565b1561145b57565b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606490fd5b5190811515820361017c57565b91908201809211610cc057565b60208183031261017c578051906001600160401b03821161017c57019080601f8301121561017c5781516114e48161136c565b926114f2604051948561134b565b81845260208085019260051b82010192831161017c57602001905b82821061151a5750505090565b815181526020918201910161150d565b919260809361154f92979695978452602084015260a0604084015260a08301906112dd565b6001600160a01b0390951660608201520152565b8051156115705760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115705760400190565b8051600210156115705760600190565b80518210156115705760209160051b010190565b906080806115d1845160a0855260a085019061142f565b6020808601516001600160a01b031690850152604080860151908501526060808601519085015293015191015290565b91908203918211610cc057565b949590929361161c8461327c565b6116258661327c565b908015801590611c21575b61163990612de1565b8115801590611c0d575b61164c90612e23565b61165586613348565b6000919015611b895750508584866305f5e100935b61167384613348565b6000919015611ac25750506116e76116f695946116e2612710956116dc6116d66116ef97610cb26116d661ffff9960ff6116cf816116c86305f5e100945b8d151580611ab9575b6116c390612e66565b61338d565b169861338d565b1693611f15565b91612ea7565b90611f15565b611f28565b931683611f15565b04906114a4565b6040516370a0823160e01b81523060048201526001600160a01b03851695919291906020816024818a5afa801561087a578490600090611a83575b61173d92501015611454565b6117478582612aa2565b80519097925015905061194b57505060035460405163095ea7b360e01b81526001600160a01b0390911660048201526024810183905290506020816044816000895af1801561087a57611903575b506003546040516000946020946117fe946001600160a01b0390941693916117bc8461131a565b835260018060a01b038a168684015242604084015260608301526080820152604051948580948193631e51809360e31b835287600484015260248301906115ba565b03925af1600091816118cf575b506118195750505050600090565b9283915b821515806118c6575b611832575b5050505090565b61184160209361187695611601565b60405163a9059cbb60e01b81526001600160a01b03909316600484015260248301529092839190829060009082906044820190565b03925af1801561087a5761188d575b81818061182b565b6020813d6020116118be575b816118a66020938361134b565b8101031261017c576118b790611497565b5038611885565b3d9150611899565b50828411611826565b9091506020813d6020116118fb575b816118eb6020938361134b565b8101031261017c5751903861180b565b3d91506118de565b90916020823d602011611943575b8161191e6020938361134b565b8101031261017c576000936020936119386117fe94611497565b509250935091611795565b3d9150611911565b6119589293949550611c35565b906002825110611a775760015460405163095ea7b360e01b81526001600160a01b039091166004820152602481018490529260208460448160008a5af193841561087a578894611a34575b5060008094956119e26119c561ffff60018060a01b03600154169616426114a4565b604051634401edf760e11b8152988997889687956004870161152a565b03925af160009181611a0f575b506119fd5750505050600090565b611a0690611563565b5192839161181d565b611a2d9192503d806000833e611a25818361134b565b8101906114b1565b90386119ef565b9493506020853d602011611a6f575b81611a506020938361134b565b8101031261017c5760008094611a668a97611497565b509594506119a3565b3d9150611a43565b50505050505050600090565b50506020813d602011611ab1575b81611a9e6020938361134b565b8101031261017c578361173d9151611731565b3d9150611a91565b508515156116ba565b81546040516311b5d67560e21b81526004810192909252919450925060209150829060249082906001600160a01b03165afa918215611b7d5788928792828a9392611b3d575b50506116f695946116e2612710956116dc6116d66116ef97610cb26116d661ffff9960ff6116cf816116c86116e79d946116b1565b9350935050506020823d602011611b75575b81611b5c6020938361134b565b81010312610d4b575051869085908790846116e2611b08565b3d9150611b4f565b604051903d90823e3d90fd5b81546040516311b5d67560e21b81526004810192909252602090829060249082906001600160a01b03165afa918215611b7d5788928792828a9392611bd1575b50509361166a565b9350935050506020823d602011611c05575b81611bf06020938361134b565b81010312610d4b575084868892513880611bc9565b3d9150611be3565b5061164c611c1a88613348565b9050611643565b50611639611c2e87613348565b9050611630565b6060916001600160a01b038083169290821691838314611d0957611c598183612eb5565b611cd7576006546001600160a01b031691611c75908390612eb5565b9081611cc6575b50611c875750505090565b60405193509091611c9960808561134b565b600384526060366020860137611cae84611563565b52611cb883611586565b52611cc282611596565b5290565b611cd1915082612eb5565b38611c7c565b50509060405192611ce8818561134b565b60028452601f1901366020850137611cff83611563565b52611cc282611586565b63e6c4247b60e01b60005260046000fd5b9081602091031261017c57516001600160a01b038116810361017c5790565b60005b60088110611d8a575b60405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206e6f7420666f756e6420696e20437572766520706f6f6c0000006044820152606490fd5b60405163c661065760e01b81526004810182905260208160248173b576491f1e6e5e62f1d8f26062ee822b40b0e0d45afa60009181611dee575b50611dcf5750611d45565b6001600160a01b03838116911614611de957600101611d3c565b905090565b611e0791925060203d811161087357610864818361134b565b9038611dc4565b9060005b60088110611e5f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206e6f7420666f756e6420696e20437572766520706f6f6c0000006044820152606490fd5b60405163c661065760e01b8152600481018290526020816024816001600160a01b0387165afa60009181611eb9575b50611e995750611d45565b6001600160a01b03848116911614611eb357600101611e12565b91505090565b611ed291925060203d811161087357610864818361134b565b9038611e8e565b519061ffff8216820361017c57565b519060ff8216820361017c57565b9081602091031261017c57516001600160801b038116810361017c5790565b81810292918115918404141715610cc057565b8115611f32570490565b634e487b7160e01b600052601260045260246000fd5b51906001600160701b038216820361017c57565b6040516370a0823160e01b8152306004820152929590949193919290916001600160a01b03861691602081602481865afa801561087a578690600090612a6c575b611fa992501015611454565b8487611fb48861327c565b611fbd8261327c565b908015801590612a58575b611fd190612de1565b8115801590612a44575b611fe490612e23565b611fed8a613348565b60009190156129bd575050886305f5e100915b61200984613348565b60009190156128ff5750506116e76116c36116e261207097966116dc6116d661271098610cb26116d66120699a60ff6120628161205b61ffff9e6305f5e1009d8e5b87151590816128f5575b50612e66565b169561338d565b1696611f15565b0490611601565b95734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b8214612327575b6120978187612aa2565b8051909892501590506121f857505060035460405163095ea7b360e01b81526001600160a01b0390911660048201526024810185905290602090829060449082906000905af1801561087a576121a7575b509361215892602094926120fe600097426114a4565b906040519461210c8661131a565b855260018060a01b03168685015260408401526060830152608082015260018060a01b03600354169060405194858094819363c04b8d5960e01b835287600484015260248301906115ba565b03925af160009181612173575b506121705750600090565b90565b9091506020813d60201161219f575b8161218f6020938361134b565b8101031261017c57519038612165565b3d9150612182565b93919490926020853d6020116121f0575b816121c56020938361134b565b8101031261017c576000956120fe612158956121e2602098611497565b5093975050929450926120e8565b3d91506121b8565b6122089295965096929396611c35565b92600284511061231c5760015460405163095ea7b360e01b81526001600160a01b0390911660048201526024810186905290602090829060449082906000905af1801561087a576122de575b506000809461228e61227160018060a01b036001541695426114a4565b6040516338ed173960e01b8152988997889687956004870161152a565b03925af1600091816122c1575b506122a65750600090565b80516000198101908111610cc0576122bd916115a6565b5190565b6122d79192503d806000833e611a25818361134b565b903861229b565b6020813d602011612314575b816122f76020938361134b565b8101031261017c5760009461230c8692611497565b509450612254565b3d91506122ea565b505050505050600090565b9592946001600160a01b038716949273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc286036124e457506020612368612362600093611d39565b98611d39565b9260446040518094819363095ea7b360e01b835273b576491f1e6e5e62f1d8f26062ee822b40b0e0d460048401528860248401525af1801561087a576124ad575b5060405195630b68372160e31b87526004870152602486015260448501526064840152602083608481600073b576491f1e6e5e62f1d8f26062ee822b40b0e0d45af160009381612479575b5061240157505050600090565b60405163a9059cbb60e01b81526001600160a01b0392909216600483015260248201839052602090829060449082906000905af1801561087a57612443575090565b6020813d602011612471575b8161245c6020938361134b565b8101031261017c5761246d90611497565b5090565b3d915061244f565b90936020823d6020116124a5575b816124946020938361134b565b81010312610d4b57505192386123f4565b3d9150612487565b6020813d6020116124dc575b816124c66020938361134b565b8101031261017c576124d790611497565b6123a9565b3d91506124b9565b929473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489097919694970361208d5760405161016081018181106001600160401b0382111761133557604052734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b815273b576491f1e6e5e62f1d8f26062ee822b40b0e0d4602082015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040820152737f86bf177dd4f3494b841a37e810a34dd56c829b606082015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486080820152600060a0820152600060c0820152600060e08201526000610100820152600061012082015260006101408201526040516125db8161131a565b6040516125e78161131a565b600181526000602082015260016040820152600260608201526002608082015281526040516126158161131a565b600281526000602082015260016040820152600360608201526003608082015260208201526040516126468161131a565b600081526000602082015260006040820152600060608201526000608082015260408201526040516126778161131a565b600081526000602082015260006040820152600060608201526000608082015260608201526040516126a88161131a565b60008152600060208201526000604082015260006060820152600060808201526080820152604051906126da8261131a565b73b576491f1e6e5e62f1d8f26062ee822b40b0e0d48252737f86bf177dd4f3494b841a37e810a34dd56c829b602083015260006040830152600060608301526000608083015260405163095ea7b360e01b81527316c6521dff6bab339122a0fe25a911669326535360048201528860248201526020816044816000734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b5af1801561087a576128be575b5060405163c872a3c560e01b8152926000600485015b600b821061289e5750505061016483016000905b600582106128635750505086610484830152886104a48301526104c482016000905b6005821061284357505050336105648201526020816105848160007316c6521dff6bab339122a0fe25a91166932653535af16000918161280f575b50612809575061208d565b5061208d565b9091506020813d60201161283b575b8161282b6020938361134b565b8101031261017c575190386127fe565b3d915061281e565b82516001600160a01b0316815260209283019260019290920191016127c3565b8251600090825b6005831061288857505050602060a0600192019301910190916127a1565b602080600192845181520192019201919061286a565b82516001600160a01b03168152602092830192600192909201910161278d565b6020813d6020116128ed575b816128d76020938361134b565b8101031261017c576128e890611497565b612777565b3d91506128ca565b905015158f612055565b929450925050602060018060a01b03835416916024604051809481936311b5d67560e21b835260048301525afa918215611b7d578a92899492828c939261297a575b50506116c36116e261207097966116dc6116d661271098610cb26116d66120699a60ff6120628161205b61ffff9e6116e79e9d8e61204b565b939550935050506020823d6020116129b5575b8161299a6020938361134b565b81010312610d4b5750518691899189906116c36116e2612941565b3d915061298d565b9193509150602060018060a01b03835416916024604051809481936311b5d67560e21b835260048301525afa918215611b7d578a92899492828c9392612a06575b505091612000565b939550935050506020823d602011612a3c575b81612a266020938361134b565b81010312610d4b57508691888a925138806129fe565b3d9150612a19565b50611fe4612a5184613348565b9050611fdb565b50611fd1612a658b613348565b9050611fc8565b50506020813d602011612a9a575b81612a876020938361134b565b8101031261017c5785611fa99151611f9d565b3d9150612a7a565b6060928392909183916001600160a01b03808316929190811690838214611d0957612acd8184612fa2565b90612c6157506006546001600160a01b031692612aeb908490612fa2565b9190612afc575b5050505050929190565b612b069084612fa2565b919015612af25792959650929650925060405192612b2560808561134b565b60038452606036602086013760609460405197612b42878a61134b565b60028952601f1987013660208b0137612b5a86611563565b52612b6485611586565b52612b6e84611596565b5262ffffff612b7c87611563565b9116905262ffffff612b8d86611586565b91169052612b9a81611563565b5160405190831b6bffffffffffffffffffffffff1916602082015260148152612bc460348261134b565b936000945b8151861015612c5857612bdc86836115a6565b5160018701808811610cc05760176020600194612bfc612c5094896115a6565b51946040519582612c16889451809287808801910161140c565b83019162ffffff60e81b9060e81b16848301526bffffffffffffffffffffffff19908b1b166023820152030160081981018452018261134b565b950194612bc9565b91945092909150565b949397505094505060405191612c77828461134b565b60028352601f198201366020850137604094855196612c96878961134b565b60018852601f1987013660208a0137612cae85611563565b52612cb884611586565b5262ffffff612cc687611563565b91169052612cd382611563565b5193612cde86611563565b51612ce884611586565b51915195831b6bffffffffffffffffffffffff19908116602088015260e89190911b6001600160e81b0319166034870152911b166037840152602b8352612d30604b8461134b565b929190565b6001600160a01b03168015612d955760008051602061348683398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b600080516020613486833981519152546001600160a01b03163303612dcc57565b63118cdaa760e01b6000523360045260246000fd5b15612de857565b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21034b7383aba103a37b5b2b760691b6044820152606490fd5b15612e2a57565b60405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21037baba383aba103a37b5b2b760611b6044820152606490fd5b15612e6d57565b60405162461bcd60e51b8152602060048201526012602482015271496e76616c6964207072696365206461746160701b6044820152606490fd5b604d8111610cc057600a0a90565b60025460405163e6a4390560e01b81526001600160a01b039283166004820152928216602484015260209183916044918391165afa90811561087a57600091612f72575b506001600160a01b03168015159081612f10575090565b6040516318160ddd60e01b81529150602090829060049082905afa90811561087a57600091612f40575b50151590565b90506020813d602011612f6a575b81612f5b6020938361134b565b8101031261017c575138612f3a565b3d9150612f4e565b612f8b915060203d60201161087357610864818361134b565b38612ef9565b9060048110156115705760051b0190565b919091606060008061301b613040604051612fbd868261134b565b602881527f536561726368696e6720666f72206265737420563320706f6f6c20666f7220256020820152677320616e6420257360c01b60408201526040519283916307e763af60e51b6020840152876024840152608483019061142f565b6001600160a01b0388811660448401528a16606483015203601f19810183528261134b565b6020815191016a636f6e736f6c652e6c6f675afa5060405193608085018581106001600160401b03821117611335576040908152606486526101f46020870152610bb8908601526127108286015260045460009586948593926001600160a01b0316845b600481106131605750505050505060008091613147604051916130c7818461134b565b602783527f4265737420563320506f6f6c20466f756e643a202573207769746820666565206020840152661d1a595c88095960ca1b60408401526131266040519384926364acac6b60e11b60208501526024840152608483019061142f565b861515604483015262ffffff8916606483015203601f19810183528261134b565b6020815191016a636f6e736f6c652e6c6f675afa509190565b6131b0602062ffffff6131738488612f91565b51604051630b4c774160e11b81526001600160a01b0388811660048301528a166024820152911662ffffff16604482015291829081906064820190565b0381865afa90811561087a5760009161325e575b506001600160a01b0316806131dd575b506001016130a4565b602060049160405192838092630d34328160e11b82525afa90811561087a57600091613240575b506001600160801b0387166001600160801b03821611156131d4579199509650935062ffffff6132348784612f91565b511697600196876131d4565b613258915060203d8111610fba57610fac818361134b565b38613204565b613276915060203d811161087357610864818361134b565b386131c4565b6001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281036132c557507fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace90565b73d533a949740bb3306d119cc777fa900ba034cd52810361330557507fa19d04ac696c7a6616d291c7e5d1377cc8be437c327b75adb5dc1bad745fcae890565b734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b03613343577f6aac625e125ada0d2a6b98316493256ca733a5808cd34ccef79b0e28c64d1e7690565b600090565b60018060a01b031673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488114908115613372575090565b73dac17f958d2ee523a2206206994597c13d831ec791501490565b60405163313ce56760e01b815290602090829060049082906001600160a01b03165afa90811561087a576000916133c2575090565b90506020813d6020116133ee575b816133dd6020938361134b565b8101031261017c5761217090611ee8565b3d91506133d0565b60ff6000805160206134c68339815191525460401c161561341357565b631afcd79f60e31b60005260046000fd5b9061344a575080511561343957805190602001fd5b63d6bda27560e01b60005260046000fd5b8151158061347c575b61345b575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561345356fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b772e0d006e1f3b18108e93b20c7bb344a34deb86617a1ed68ef7a01590712fe64736f6c634300081a0033