0 txs
0 calls
constructor
No constructor.
functions
customCooldown
viewfunction customCooldown() view returns (uint256)
customCooldownDepositsWhitelist
viewfunction customCooldownDepositsWhitelist(address) view returns (bool)
DEFAULT_COOLDOWN
viewfunction DEFAULT_COOLDOWN() view returns (uint256)
depositQuote
viewfunction depositQuote(address _dHedgeVault, address _vaultDepositToken, uint256 _depositAmount) view returns (uint256 expectedAmountReceived)
dHedgePoolFactory
viewfunction dHedgePoolFactory() view returns (address)
getLogic
viewfunction getLogic(uint8) view returns (address)
getTrackedAssets
viewfunction getTrackedAssets(address _depositor) view returns (tuple[] trackedAssets)
getTrackedAssetsFromLimitOrders
viewfunction getTrackedAssetsFromLimitOrders(address _depositor) view returns (tuple[] trackedAssets)
isAuthorizedWithdrawer
viewfunction isAuthorizedWithdrawer(address) view returns (bool)
isdHedgeVault
viewfunction isdHedgeVault(address _dHedgeVault) view returns (bool isVault)
limitOrderContracts
viewfunction limitOrderContracts(address) view returns (address)
owner
viewfunction owner() view returns (address)
swapper
viewfunction swapper() view returns (address)
weth
viewfunction weth() view returns (address)
withdrawalContracts
viewfunction withdrawalContracts(address) view returns (address)
wrappedNativeToken
viewfunction wrappedNativeToken() view returns (address)
completeLimitOrderWithdrawal
nonpayablefunction completeLimitOrderWithdrawal(tuple _swapData, uint256 _expectedDestTokenAmount) returns (uint256 destTokenAmount)
completeLimitOrderWithdrawal
nonpayablefunction completeLimitOrderWithdrawal()
completeLimitOrderWithdrawalFor
nonpayablefunction completeLimitOrderWithdrawalFor(address _user, tuple _swapData, uint256 _expectedDestTokenAmount) returns (uint256 destTokenAmount)
completeLimitOrderWithdrawalFor
nonpayablefunction completeLimitOrderWithdrawalFor(address _user)
completeWithdrawal
nonpayablefunction completeWithdrawal(tuple _swapData, uint256 _expectedDestTokenAmount) returns (uint256 destTokenAmount)
completeWithdrawal
nonpayablefunction completeWithdrawal()
deposit
nonpayablefunction deposit(address _dHedgeVault, address _vaultDepositToken, uint256 _depositAmount, uint256 _expectedAmountReceived)
depositWithCustomCooldown
nonpayablefunction depositWithCustomCooldown(address _dHedgeVault, address _vaultDepositToken, uint256 _depositAmount, uint256 _expectedAmountReceived)
initialize
nonpayablefunction initialize(address _vaultLogic, address _weth, address _wrappedNativeToken, address _swapper, uint256 _customCooldown)
initLimitOrderWithdrawalFor
nonpayablefunction initLimitOrderWithdrawalFor(address _user, address _dHedgeVault, uint256 _amountIn, tuple[] _complexAssetsData) returns (tuple[] trackedAssets, address vault)
initWithdrawal
nonpayablefunction initWithdrawal(address _dHedgeVault, uint256 _amountIn, tuple[] _complexAssetsData) returns (tuple[] trackedAssets, address vault)
nativeDeposit
payablefunction nativeDeposit(address _dHedgeVault, uint256 _expectedAmountReceived) payable
nativeDepositWithCustomCooldown
payablefunction nativeDepositWithCustomCooldown(address _dHedgeVault, uint256 _expectedAmountReceived) payable
partialWithdraw
nonpayablefunction partialWithdraw(uint256 _portion, address _to)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuthorizedWithdrawers
nonpayablefunction setAuthorizedWithdrawers(tuple[] _whitelistSettings)
setCustomCooldown
nonpayablefunction setCustomCooldown(uint256 _customCooldown)
setCustomCooldownWhitelist
nonpayablefunction setCustomCooldownWhitelist(tuple[] _whitelistSettings)
setdHedgePoolFactory
nonpayablefunction setdHedgePoolFactory(address _dHedgePoolFactory)
setLogic
nonpayablefunction setLogic(address _vaultLogic)
setSwapper
nonpayablefunction setSwapper(address _swapper)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unrollAndClaim
nonpayablefunction unrollAndClaim(address _dHedgeVault, uint256 _amountIn, tuple[] _complexAssetsData) returns (tuple[])
zapDeposit
nonpayablefunction zapDeposit(address _dHedgeVault, tuple _swapData, uint256 _expectedAmountReceived)
zapDepositWithCustomCooldown
nonpayablefunction zapDepositWithCustomCooldown(address _dHedgeVault, tuple _swapData, uint256 _expectedAmountReceived)
zapNativeDeposit
payablefunction zapNativeDeposit(address _dHedgeVault, tuple _swapData, uint256 _expectedAmountReceived) payable
zapNativeDepositWithCustomCooldown
payablefunction zapNativeDepositWithCustomCooldown(address _dHedgeVault, tuple _swapData, uint256 _expectedAmountReceived) payable
events
AuthorizedWithdrawersSet
event AuthorizedWithdrawersSet((address toWhitelist, bool whitelisted)[] whitelistSettings)
LimitOrderVaultCreated
event LimitOrderVaultCreated(address limitOrderVault, address indexed depositor)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ProxyCreated
event ProxyCreated(address proxy)
WithdrawalCompleted
event WithdrawalCompleted(address withdrawalVault, address indexed depositor)
WithdrawalInitiated
event WithdrawalInitiated(address withdrawalVault, address indexed depositor, address dHedgeVault, uint256 amountWithdrawn)
WithdrawalVaultCreated
event WithdrawalVaultCreated(address withdrawalVault, address indexed depositor)
ZapDepositCompleted
event ZapDepositCompleted(address indexed depositor, address indexed dHedgeVault, address vaultDepositToken, address userDepositToken, uint256 amountReceived, uint256 lockupTime)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506145c0806100206000396000f3fe6080604052600436106101fc5760003560e01c80637646e4d7116101145780637646e4d7146104b557806376e5e38b146104d557806377941288146104f5578063827059ff1461050a5780638b5cbec61461051f5780638da5cb5b146105325780638fd76ad21461054757806398441ba3146105675780639845bfd11461057c5780639c82f2a41461059c578063bcde2019146105bc578063cf1cfc66146105dc578063d78fa6b7146105fc578063de460fe114610611578063e03ff7cb14610631578063e2fca5c914610646578063ecef89d514610659578063edfdb4a514610679578063f0213c0614610699578063f2fde38b146106b9578063f542a6ce146106d9578063f7013ef6146106ec576101fc565b80630229fc8a1461020157806317fcb39b146102375780631b6d982b1461024c5780631d97f38e1461026e57806320e8c5651461028e57806328024705146102ae5780632b3297f9146102dc5780632ceb480d146102f15780632df5295c1461031e5780632fd22abd1461033e5780633fc8cef31461035e5780634339d7c914610373578063453814ea1461039357806349242471146103b35780634f4cf086146103d357806356cb2646146103f357806357db6a7f146104065780635d8dbb23146104265780635f0544a714610453578063715018a6146104805780637185700014610495575b600080fd5b34801561020d57600080fd5b5061022161021c36600461336e565b61070c565b60405161022e9190613993565b60405180910390f35b34801561024357600080fd5b50610221610727565b34801561025857600080fd5b5061026c6102673660046137d7565b610736565b005b34801561027a57600080fd5b5061026c610289366004613807565b6107a4565b34801561029a57600080fd5b5061026c6102a93660046134b2565b610885565b3480156102ba57600080fd5b506102ce6102c9366004613449565b61089b565b60405161022e929190613ad3565b3480156102e857600080fd5b506102216108ba565b3480156102fd57600080fd5b5061031161030c36600461336e565b6108c9565b60405161022e9190613b54565b34801561032a57600080fd5b5061026c61033936600461369e565b6108de565b34801561034a57600080fd5b5061026c6103593660046134b2565b610a03565b34801561036a57600080fd5b50610221610b5e565b34801561037f57600080fd5b5061026c61038e3660046134f7565b610b6d565b34801561039f57600080fd5b5061026c6103ae36600461369e565b610bbd565b3480156103bf57600080fd5b506102216103ce36600461336e565b610ce5565b3480156103df57600080fd5b506102ce6103ee366004613578565b610d00565b61026c6104013660046134f7565b610d1e565b34801561041257600080fd5b5061026c61042136600461336e565b610d2d565b34801561043257600080fd5b506104466104413660046134f7565b610dd7565b60405161022e9190613faf565b34801561045f57600080fd5b5061047361046e36600461336e565b610e1f565b60405161022e9190613ac0565b34801561048c57600080fd5b5061026c610e32565b3480156104a157600080fd5b5061026c6104b036600461336e565b610ecc565b3480156104c157600080fd5b506104466104d0366004613795565b610f9d565b3480156104e157600080fd5b506103116104f036600461336e565b610fb3565b34801561050157600080fd5b50610446611034565b34801561051657600080fd5b5061044661103a565b61026c61052d36600461354d565b611041565b34801561053e57600080fd5b50610221611053565b34801561055357600080fd5b50610446610562366004613795565b611062565b34801561057357600080fd5b50610221611071565b34801561058857600080fd5b50610446610597366004613409565b611080565b3480156105a857600080fd5b5061026c6105b736600461336e565b6112c9565b3480156105c857600080fd5b506104736105d736600461336e565b611334565b3480156105e857600080fd5b506104736105f7366004613578565b611341565b34801561060857600080fd5b5061026c6113e0565b34801561061d57600080fd5b5061031161062c36600461336e565b6113eb565b34801561063d57600080fd5b5061026c611400565b61026c6106543660046134f7565b61140b565b34801561066557600080fd5b50610221610674366004613875565b611564565b34801561068557600080fd5b5061026c6106943660046134f7565b611574565b3480156106a557600080fd5b5061026c6106b436600461336e565b6116e3565b3480156106c557600080fd5b5061026c6106d436600461336e565b6116ee565b61026c6106e736600461354d565b6117df565b3480156106f857600080fd5b5061026c6107073660046133a6565b611930565b609b602052600090815260409020546001600160a01b031681565b6099546001600160a01b031681565b61073e611a5d565b6001600160a01b031661074f611053565b6001600160a01b031614610798576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b6107a181611a61565b50565b6000821180156107bc5750670de0b6b3a76400008211155b6107e15760405162461bcd60e51b81526004016107d890613c7f565b60405180910390fd5b60006107ee336000611a97565b604051631a0d375d60e11b81529091506001600160a01b0382169063341a6eba9061081f9086908690600401613fb8565b600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b50505050336001600160a01b03166000805160206144b2833981519152826040516108789190613993565b60405180910390a2505050565b6108958484848462015180611acb565b50505050565b606060006108ad868686866001611b9d565b9150915094509492505050565b6098546001600160a01b031681565b609e6020526000908152604090205460ff1681565b6108e6611a5d565b6001600160a01b03166108f7611053565b6001600160a01b031614610940576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b60005b818110156109c55782828281811061095757fe5b905060400201602001602081019061096f919061370d565b609e600085858581811061097f57fe5b610995926020604090920201908101915061336e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610943565b507f745741e60f77b2d30497f132a2c10681ea557a5ab661cfbf452e63b925a265f082826040516109f7929190613afd565b60405180910390a15050565b6001600160a01b0384166000908152609c6020526040902054849060ff16610a3d5760405162461bcd60e51b81526004016107d890613d04565b6000816001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab0919061338a565b6001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160a06040518083038186803b158015610ae857600080fd5b505afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190613836565b505092505050600a811015610b475760405162461bcd60e51b81526004016107d890613bb0565b610b5686868686609a54611acb565b505050505050565b6097546001600160a01b031681565b610ba93330610b7c8580613fee565b60200135610b8a8680613fee565b610b9890602081019061336e565b6001600160a01b0316929190611d6e565b610bb883838362015180611dc8565b505050565b610bc5611a5d565b6001600160a01b0316610bd6611053565b6001600160a01b031614610c1f576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b60005b81811015610bb857610c4f838383818110610c3957fe5b6104f0926020604090920201908101915061336e565b610c6b5760405162461bcd60e51b81526004016107d890613b8b565b828282818110610c7757fe5b9050604002016020016020810190610c8f919061370d565b609c6000858585818110610c9f57fe5b610cb5926020604090920201908101915061336e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610c22565b609f602052600090815260409020546001600160a01b031681565b60606000610d12338686866000611b9d565b91509150935093915050565b610bb883838362015180612267565b610d35611a5d565b6001600160a01b0316610d46611053565b6001600160a01b031614610d8f576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b6001600160a01b038116610db55760405162461bcd60e51b81526004016107d890613bdb565b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152609e602052604081205490919060ff16610e095760405162461bcd60e51b81526004016107d890613c28565b610e168585856001612352565b95945050505050565b6060610e2c82600161240b565b92915050565b610e3a611a5d565b6001600160a01b0316610e4b611053565b6001600160a01b031614610e94576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020614541833981519152908390a3603380546001600160a01b0319169055565b610ed4611a5d565b6001600160a01b0316610ee5611053565b6001600160a01b031614610f2e576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b6001600160a01b038116610f7b576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fac3384846000612352565b9392505050565b609d54604051635b16ebb760e01b81526000916001600160a01b031690635b16ebb790610fe4908590600401613993565b60206040518083038186803b158015610ffc57600080fd5b505afa158015611010573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c9190613729565b609a5481565b6201518081565b61104f8282620151806124ac565b5050565b6033546001600160a01b031690565b6000610fac3384846001612352565b609d546001600160a01b031681565b600080846001600160a01b0316637ff9b5966040518163ffffffff1660e01b815260040160206040518083038186803b1580156110bc57600080fd5b505afa1580156110d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f491906137ef565b90506000856001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611169919061338a565b90506000816001600160a01b03166329c07fba87876040518363ffffffff1660e01b815260040161119b929190613a0e565b60206040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb91906137ef565b9050826111fa57809350611219565b6112168361121083670de0b6b3a76400006125dc565b90612635565b93505b600080836001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160a06040518083038186803b15801561125557600080fd5b505afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190613836565b9450509350505060008211156112bd5760006112ad8261121089866125dc565b90506112b98782612699565b9650505b50505050509392505050565b6112d1611a5d565b6001600160a01b03166112e2611053565b6001600160a01b03161461132b576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b6107a1816126f6565b6060610e2c82600061240b565b6060600080611351868686610d00565b91509150806001600160a01b03166363c7feef6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561139057600080fd5b505af11580156113a4573d6000803e3d6000fd5b50505050336001600160a01b03166000805160206144b2833981519152826040516113cf9190613993565b60405180910390a250949350505050565b6113e9336116e3565b565b609c6020526000908152604090205460ff1681565b6113e933600061273e565b6001600160a01b0383166000908152609c6020526040902054839060ff166114455760405162461bcd60e51b81526004016107d890613d04565b6000816001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561148057600080fd5b505afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b8919061338a565b6001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160a06040518083038186803b1580156114f057600080fd5b505afa158015611504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190613836565b505092505050600a81101561154f5760405162461bcd60e51b81526004016107d890613bb0565b61155d858585609a54612267565b5050505050565b506065546001600160a01b031690565b6001600160a01b0383166000908152609c6020526040902054839060ff166115ae5760405162461bcd60e51b81526004016107d890613d04565b6000816001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e957600080fd5b505afa1580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611621919061338a565b6001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160a06040518083038186803b15801561165957600080fd5b505afa15801561166d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116919190613836565b505092505050600a8110156116b85760405162461bcd60e51b81526004016107d890613bb0565b6116d533306116c78780613fee565b60200135610b8a8880613fee565b61155d858585609a54611dc8565b6107a181600161273e565b6116f6611a5d565b6001600160a01b0316611707611053565b6001600160a01b031614611750576040805162461bcd60e51b81526020600482018190526024820152600080516020614521833981519152604482015290519081900360640190fd5b6001600160a01b0381166117955760405162461bcd60e51b81526004018080602001828103825260268152602001806144666026913960400191505060405180910390fd5b6033546040516001600160a01b0380841692169060008051602061454183398151915290600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152609c6020526040902054829060ff166118195760405162461bcd60e51b81526004016107d890613d04565b6000816001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561185457600080fd5b505afa158015611868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c919061338a565b6001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160a06040518083038186803b1580156118c457600080fd5b505afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190613836565b505092505050600a8110156119235760405162461bcd60e51b81526004016107d890613bb0565b6108958484609a546124ac565b600054610100900460ff168061194957506119496127c6565b80611957575060005460ff16155b6119925760405162461bcd60e51b815260040180806020018281038252602e8152602001806144d2602e913960400191505060405180910390fd5b600054610100900460ff161580156119bd576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038516158015906119dd57506001600160a01b03841615155b6119f95760405162461bcd60e51b81526004016107d890613bdb565b611a02866127d7565b609780546001600160a01b038088166001600160a01b0319928316179092556099805492871692909116919091179055611a3b836126f6565b611a4482611a61565b8015610b56576000805461ff0019169055505050505050565b3390565b61012c8110158015611a765750620151808111155b611a925760405162461bcd60e51b81526004016107d890613ca8565b609a55565b6000611aa383836127df565b90506001600160a01b038116610e2c5760405162461bcd60e51b81526004016107d890613c04565b611ae06001600160a01b038516333086611d6e565b611af46001600160a01b0385168685612835565b60405163de6eb13360e01b81526000906001600160a01b0387169063de6eb13390611b299033908990899088906004016139a7565b602060405180830381600087803b158015611b4357600080fd5b505af1158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b91906137ef565b905082811015610b565760405162461bcd60e51b81526004016107d890613c50565b60606000611baa86610fb3565b611bc65760405162461bcd60e51b81526004016107d890613b8b565b611bdb6001600160a01b038716333088611d6e565b611be58784612920565b604051633bc031c960e11b81529091506001600160a01b03871690637780639290611c1890849089908990600401613a27565b600060405180830381600087803b158015611c3257600080fd5b505af1158015611c46573d6000803e3d6000fd5b5050604051631db17ec760e31b81526001600160a01b038416925063ed8bf6389150611c76908990600401613993565b600060405180830381600087803b158015611c9057600080fd5b505af1158015611ca4573d6000803e3d6000fd5b50505050806001600160a01b031663c4b973706040518163ffffffff1660e01b815260040160006040518083038186803b158015611ce157600080fd5b505afa158015611cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d1d91908101906135ce565b9150866001600160a01b03167f2fc3848834aac8e883a2d2a17a7514dc4f2d3dd268089df9b9f5d918259ef3b0828888604051611d5c939291906139ea565b60405180910390a29550959350505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261089590859061298b565b6000611dda604085016020860161336e565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611e059190613993565b60206040518083038186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5591906137ef565b609854909150611e9e906001600160a01b0316611e728680613fee565b60200135611e808780613fee565b611e8e90602081019061336e565b6001600160a01b03169190612835565b611ea6613190565b604080516001808252818301909252600091816020015b611ec56131af565b815260200190600190039081611ebd57505060408051600180825281830190925291925060009190602082015b611efa6131c9565b815260200190600190039081611ef2579050509050611f198780613fee565b611f2790602081019061336e565b81600081518110611f3457fe5b60209081029190910101516001600160a01b039091169052611f568780613fee565b6020013581600081518110611f6757fe5b6020908102919091018101510152611f7f8780613fee565b611f8d906040810190613fcf565b611f9690614043565b81600081518110611fa357fe5b6020026020010151604001819052508082600081518110611fc057fe5b602002602001015160000181905250600082600081518110611fde57fe5b602002602001015160200151600001906002811115611ff957fe5b9081600281111561200657fe5b90525081835261201e36889003880160208901613745565b6020840152609854604051630bffcd2560e41b81526001600160a01b039091169063bffcd25090612053908690600401613d2d565b600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b506000925061211f915086905061209e60408b0160208c0161336e565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016120c99190613993565b60206040518083038186803b1580156120e157600080fd5b505afa1580156120f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211991906137ef565b90612699565b90506121368982611e8e60408c0160208d0161336e565b60006001600160a01b038a1663de6eb1333361215860408d0160208e0161336e565b858b6040518563ffffffff1660e01b815260040161217994939291906139a7565b602060405180830381600087803b15801561219357600080fd5b505af11580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb91906137ef565b9050878110156121ed5760405162461bcd60e51b81526004016107d890613c50565b6001600160a01b038a16337f23d58c60797788796093b9d116b74a61361982f6d6d13d2256d3d4d299d94f0c61222960408d0160208e0161336e565b6122338d80613fee565b61224190602081019061336e565b858c60405161225394939291906139a7565b60405180910390a350505050505050505050565b6099546001600160a01b031661227d8480613fee565b61228b90602081019061336e565b6001600160a01b0316146122b15760405162461bcd60e51b81526004016107d890613cd9565b346122bc8480613fee565b60200135146122dd5760405162461bcd60e51b81526004016107d890613b5f565b609960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b505050505061089584848484611dc8565b60008061235f8684611a97565b6040516313a7dd5560e21b81529091506001600160a01b03821690634e9f7554906123909088908890600401613e3b565b602060405180830381600087803b1580156123aa57600080fd5b505af11580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e291906137ef565b9150856001600160a01b03166000805160206144b2833981519152826040516113cf9190613993565b6060600061241984846127df565b90506001600160a01b03811661242f5750610e2c565b806001600160a01b031663c4b973706040518163ffffffff1660e01b815260040160006040518083038186803b15801561246857600080fd5b505afa15801561247c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124a491908101906135ce565b949350505050565b609960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156124fc57600080fd5b505af1158015612510573d6000803e3d6000fd5b505060995461252e93506001600160a01b0316915085905034612835565b60995460405163de6eb13360e01b81526000916001600160a01b038087169263de6eb13392612568923392911690349088906004016139a7565b602060405180830381600087803b15801561258257600080fd5b505af1158015612596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ba91906137ef565b9050828110156108955760405162461bcd60e51b81526004016107d890613c50565b6000826125eb57506000610e2c565b828202828482816125f857fe5b0414610fac5760405162461bcd60e51b81526004018080602001828103825260218152602001806145006021913960400191505060405180910390fd5b6000808211612688576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161269157fe5b049392505050565b6000828211156126f0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b03811661271c5760405162461bcd60e51b81526004016107d890613bdb565b609880546001600160a01b0319166001600160a01b0392909216919091179055565b600061274a8383611a97565b9050806001600160a01b03166363c7feef6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561278757600080fd5b505af115801561279b573d6000803e3d6000fd5b50505050826001600160a01b03166000805160206144b2833981519152826040516108789190613993565b60006127d130612a3c565b15905090565b610f2e612a42565b6000808260018111156127ee57fe5b141561281557506001600160a01b038083166000908152609b602052604090205416610e2c565b50506001600160a01b039081166000908152609f60205260409020541690565b60006128cb82856001600160a01b031663dd62ed3e30876040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561289957600080fd5b505afa1580156128ad573d6000803e3d6000fd5b505050506040513d60208110156128c357600080fd5b505190612af3565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905290915061089590859061298b565b60008082600181111561292f57fe5b141561295657506001600160a01b038083166000908152609b602052604090205416612973565b506001600160a01b038083166000908152609f6020526040902054165b6001600160a01b038116610e2c57610fac8383612b4b565b60006129e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612c899092919063ffffffff16565b805190915015610bb8578080602001905160208110156129ff57600080fd5b5051610bb85760405162461bcd60e51b815260040180806020018281038252602a815260200180614561602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff1680612a5b5750612a5b6127c6565b80612a69575060005460ff16155b612aa45760405162461bcd60e51b815260040180806020018281038252602e8152602001806144d2602e913960400191505060405180910390fd5b600054610100900460ff16158015612acf576000805460ff1961ff0019909116610100171660011790555b612ad7612c98565b612adf612d38565b80156107a1576000805461ff001916905550565b600082820183811015610fac576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6000808330604051602401612b619291906139d0565b60408051601f198184030181529190526020810180516001600160e01b031663485cc95560e01b1790529050612b9681612e1f565b91506000836001811115612ba657fe5b1415612c19576001600160a01b038481166000818152609b60205260409081902080546001600160a01b0319169386169390931790925590517f1fa9867de93c6d2fc057bf69313dfd11898c6d77a1d09a0e18715a4e1587f74b90612c0c908590613993565b60405180910390a2612c82565b6001600160a01b038481166000818152609f60205260409081902080546001600160a01b0319169386169390931790925590517f04f04cbf48832fea2e83a6bf6406f47ab48d39d05a967a2ecdeea28d632c6d1c90612c79908590613993565b60405180910390a25b5092915050565b60606124a48484600085612f4a565b600054610100900460ff1680612cb15750612cb16127c6565b80612cbf575060005460ff16155b612cfa5760405162461bcd60e51b815260040180806020018281038252602e8152602001806144d2602e913960400191505060405180910390fd5b600054610100900460ff16158015612adf576000805460ff1961ff00199091166101001716600117905580156107a1576000805461ff001916905550565b600054610100900460ff1680612d515750612d516127c6565b80612d5f575060005460ff16155b612d9a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806144d2602e913960400191505060405180910390fd5b600054610100900460ff16158015612dc5576000805460ff1961ff0019909116610100171660011790555b6000612dcf611a5d565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020614541833981519152908290a35080156107a1576000805461ff001916905550565b600080612e2a6130a5565b604080516001600160a01b038316815290519192507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349919081900360200190a1806001600160a01b031663e74a474a308560016040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612edd578181015183820152602001612ec5565b50505050905090810190601f168015612f0a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015612f2b57600080fd5b505af1158015612f3f573d6000803e3d6000fd5b509295945050505050565b606082471015612f8b5760405162461bcd60e51b815260040180806020018281038252602681526020018061448c6026913960400191505060405180910390fd5b612f9485612a3c565b612fe5576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106130235780518252601f199092019160209182019101613004565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613085576040519150601f19603f3d011682016040523d82523d6000602084013e61308a565b606091505b509150915061309a8282866130ec565b979650505050505050565b6000806000604051806020016130ba906131e8565b6020820181038252601f19601f8201166040525090508051602082016000f09150813b6130e657600080fd5b50905090565b606083156130fb575081610fac565b82511561310b5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561315557818101518382015260200161313d565b50505050905090810190601f1680156131825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060400160405280606081526020016131aa6131f5565b905290565b6040518060400160405280606081526020016131aa61320c565b60408051606081018252600080825260208201529081016131aa61320c565b61039d806140c983390190565b604080518082019091526000808252602082015290565b60408051808201909152600081526060602082015290565b600082601f830112613234578081fd5b8135602061324961324483614026565b614003565b82815281810190858301855b858110156132e65781358801606080601f19838d03011215613275578889fd5b604080518281016001600160401b03828210818311171561329257fe5b908352848a0135906132a3826140a5565b9082528483013590808211156132b7578c8dfd5b506132c68e8b838801016132f3565b828b01525092909101359082015284529284019290840190600101613255565b5090979650505050505050565b600082601f830112613303578081fd5b81356001600160401b0381111561331657fe5b613329601f8201601f1916602001614003565b81815284602083860101111561333d578283fd5b816020850160208301379081016020019190915292915050565b600060608284031215613368578081fd5b50919050565b60006020828403121561337f578081fd5b8135610fac816140a5565b60006020828403121561339b578081fd5b8151610fac816140a5565b600080600080600060a086880312156133bd578081fd5b85356133c8816140a5565b945060208601356133d8816140a5565b935060408601356133e8816140a5565b925060608601356133f8816140a5565b949793965091946080013592915050565b60008060006060848603121561341d578081fd5b8335613428816140a5565b92506020840135613438816140a5565b929592945050506040919091013590565b6000806000806080858703121561345e578182fd5b8435613469816140a5565b93506020850135613479816140a5565b92506040850135915060608501356001600160401b0381111561349a578182fd5b6134a687828801613224565b91505092959194509250565b600080600080608085870312156134c7578182fd5b84356134d2816140a5565b935060208501356134e2816140a5565b93969395505050506040820135916060013590565b60008060006060848603121561350b578081fd5b8335613516816140a5565b925060208401356001600160401b03811115613530578182fd5b61353c86828701613357565b925050604084013590509250925092565b6000806040838503121561355f578182fd5b823561356a816140a5565b946020939093013593505050565b60008060006060848603121561358c578081fd5b8335613597816140a5565b92506020840135915060408401356001600160401b038111156135b8578182fd5b6135c486828701613224565b9150509250925092565b600060208083850312156135e0578182fd5b82516001600160401b03808211156135f6578384fd5b818501915085601f830112613609578384fd5b815161361761324482614026565b818152848101908486016040808502870188018b1015613635578889fd5b8896505b8487101561368f5780828c03121561364f578889fd5b8051818101818110888211171561366257fe5b8252825161366f816140a5565b815282890151898201528452600196909601959287019290810190613639565b50909998505050505050505050565b600080602083850312156136b0578182fd5b82356001600160401b03808211156136c6578384fd5b818501915085601f8301126136d9578384fd5b8135818111156136e7578485fd5b8660206040830285010111156136fb578485fd5b60209290920196919550909350505050565b60006020828403121561371e578081fd5b8135610fac816140ba565b60006020828403121561373a578081fd5b8151610fac816140ba565b600060408284031215613756578081fd5b604051604081018181106001600160401b038211171561377257fe5b6040528235613780816140a5565b81526020928301359281019290925250919050565b600080604083850312156137a7578182fd5b82356001600160401b038111156137bc578283fd5b6137c885828601613357565b95602094909401359450505050565b6000602082840312156137e8578081fd5b5035919050565b600060208284031215613800578081fd5b5051919050565b60008060408385031215613819578182fd5b82359150602083013561382b816140a5565b809150509250929050565b600080600080600060a0868803121561384d578283fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b600060208284031215613886578081fd5b813560ff81168114610fac578182fd5b6000815180845260208085019450808401835b838110156138d957815180516001600160a01b0316885283015183880152604090960195908201906001016138a9565b509495945050505050565b60008151808452815b81811015613909576020818501810151868301820152016138ed565b8181111561391a5782602083870101525b50601f01601f19169290920160200192915050565b803561393a816140a5565b6001600160a01b03168252602090810135910152565b80516001600160a01b03168252602090810151910152565b600081516003811061397657fe5b808452506020820151604060208501526124a460408501826138e4565b6001600160a01b0391909116815260200190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6000606080830160018060a01b038088168552602087818701526040848188015283885180865260808901915060808482028a01019550838a01885b82811015613aae57607f198b89030184528151878151168952868101518a888b0152613a918b8b01826138e4565b918701519987019990995297509285019290850190600101613a63565b50959c9b505050505050505050505050565b600060208252610fac6020830184613896565b600060408252613ae66040830185613896565b905060018060a01b03831660208301529392505050565b6020808252818101839052600090604080840186845b878110156132e6578135613b26816140a5565b6001600160a01b0316835281850135613b3e816140ba565b1515838601529183019190830190600101613b13565b901515815260200190565b6020808252601290820152711a5b9d985b1a59081cdc98c8185b5bdd5b9d60721b604082015260600190565b6020808252600b908201526a1b9bdd0818481d985d5b1d60aa1b604082015260600190565b602080825260119082015270195b9d1c9e48199959481b9bdd081cd95d607a1b604082015260600190565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b6020808252600a90820152696e6f742065786973747360b01b604082015260600190565b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b60208082526015908201527468696768206465706f73697420736c69707061676560581b604082015260600190565b6020808252600f908201526e34b73b30b634b2103837b93a34b7b760891b604082015260600190565b60208082526017908201527634b73b30b634b21031bab9ba37b69031b7b7b63237bbb760491b604082015260600190565b60208082526011908201527034b73b30b634b21039b931903a37b5b2b760791b604082015260600190565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b600060208083526080830184516060808487015282825180855260a08801915060a086820289010194508584019350865b81811015613e2457888603609f190183528451805160408089528151818a0181905290918a82028a01880191908b0190888b01908d5b81811015613df5578c8503605f19018352835180516001600160a01b031686528e8101518f8701528601518686018c905280518c8701528e015160808601879052613de260a08701826138e4565b955050928d0192918d0191600101613d94565b5050505091890151888303898b015291613e0f8184613968565b98505050948701945091860191600101613d5e565b505050509185015191506124a46040850183613950565b6000604080835260a083018535601e19873603018112613e59578384fd5b8601803560206001600160401b0380831115613e73578687fd5b8183028036038b1315613e84578788fd5b6060898801529483905260c094880185018589018584018936889003607e19015b87821015613f88578c850360bf190184528235818112613ec3578c8dfd5b890187810135613ed2816140a5565b6001600160a01b03168652808c013588870152606081013536829003605e19018112613efc578d8efd5b81810191505087810160608d880152803560608801528c820135603e19833603018112613f27578e8ffd5b909101908882013588811115613f3b578e8ffd5b803603821315613f49578e8ffd5b8d60808901528060a0890152808e84018e8a01378781018d018f9052601f01601f19169096018b01955050928601929186019160019190910190613ea5565b50505050613f9b60608a01848d0161392f565b979091019790975250939695505050505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b60008235603e19833603018112613fe4578182fd5b9190910192915050565b60008235605e19833603018112613fe4578182fd5b6040518181016001600160401b038111828210171561401e57fe5b604052919050565b60006001600160401b0382111561403957fe5b5060209081020190565b600060408236031215614054578081fd5b604051604081016001600160401b03828210818311171561407157fe5b8160405284358352602085013591508082111561408c578384fd5b50614099368286016132f3565b60208301525092915050565b6001600160a01b03811681146107a157600080fd5b80151581146107a157600080fdfe608060405234801561001057600080fd5b5061037d806100206000396000f3fe6080604052600436106100225760003560e01c8063e74a474a1461003957610031565b366100315761002f6100f2565b005b61002f6100f2565b61002f6004803603606081101561004f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561007957600080fd5b82018360208201111561008b57600080fd5b803590602001918460018302840111600160201b831117156100ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff16915061010c9050565b6100fa61010a565b61010a61010561019c565b61025d565b565b600061011661019c565b6001600160a01b031614610161576040805162461bcd60e51b815260206004820152600d60248201526c496d706c206e6f74207a65726f60981b604482015290519081900360640190fd5b61016a83610281565b610173816102ff565b815115610197576101958261018661019c565b6001600160a01b031690610307565b505b505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546000916001600160a01b0382166101db5760009250505061025a565b816001600160a01b031663ecef89d56101f2610338565b6040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561022957600080fd5b505afa15801561023d573d6000803e3d6000fd5b505050506040513d602081101561025357600080fd5b5051925050505b90565b3660008037600080366000845af43d6000803e80801561027c573d6000f35b3d6000fd5b61028a81610341565b6102db576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f742073657420696d706c656d656e746174696f6e20746f20454f41604482015290519081900360640190fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b600160fc1b55565b6000806000835160208501865af4905080156001811461032657610331565b3d806000803e806000fd5b5092915050565b600160fc1b5490565b3b15159056fea2646970667358221220243d3412f36a82261242b86ff26e276bf5792605d3d70cba80a2b6410469ce5564736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6ce292402c917d706528bd273fa3d635715f9a76e4e2e3ae46347deaae8f6ec458496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220f68aac9ce73a4e9a01883ac7ce2f21c23141a38fddcd9f5b6974002a75eb9bad64736f6c63430007060033