6 txs
13 calls
constructor
constructor((address integralFactory, address integralPoolDeployer, address fusionFactory, address fusionPoolDeployer, address solidlyFactory, address wNativeToken) data)
functions
factory
viewfunction factory() view returns (address)
factoryFusion
viewfunction factoryFusion() view returns (address)
factorySolidly
viewfunction factorySolidly() view returns (address)
owner
viewfunction owner() view returns (address)
poolDeployer
viewfunction poolDeployer() view returns (address)
poolDeployerFusion
viewfunction poolDeployerFusion() view returns (address)
wETH
viewfunction wETH() view returns (address)
WNativeToken
viewfunction WNativeToken() view returns (address)
WNativeTokenFusion
viewfunction WNativeTokenFusion() view returns (address)
algebraSwapCallback
nonpayablefunction algebraSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
execute
payablefunction execute(bytes1[] commands, bytes[] inputs, uint256 deadline) payable
recoverToken
nonpayablefunction recoverToken(bool native, address token, uint256 balance)
refundNativeToken
payablefunction refundNativeToken() payable
renounceOwnership
nonpayablefunction renounceOwnership()
sweepToken
payablefunction sweepToken(address token, uint256 amountMinimum, address recipient) payable
sweepTokenWithFee
payablefunction sweepTokenWithFee(address token, uint256 amountMinimum, address recipient, uint256 feeBips, address feeRecipient) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwrapWNativeToken
payablefunction unwrapWNativeToken(uint256 amountMinimum, address recipient) payable
unwrapWNativeTokenWithFee
payablefunction unwrapWNativeTokenWithFee(uint256 amountMinimum, address recipient, uint256 feeBips, address feeRecipient) payable
wrapNativeToken
payablefunction wrapNativeToken(uint256 amountMinimum, address recipient) payable
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Swap
event Swap(address indexed sender, uint256 amount0In, address _tokenIn, address indexed to, bool stable)
errors
ContractLocked
error ContractLocked()
ExecutionFailed
error ExecutionFailed(uint256 commandIndex, bytes message)
InvalidCommandType
error InvalidCommandType(bytes1 commandType)
LengthMismatch
error LengthMismatch()
TransactionDeadlinePassed
error TransactionDeadlinePassed()
creation bytecode
0x6101a06040525f195f8190556001908155600380546001600160a01b03191690911790553480156200002f575f80fd5b50604051620052c2380380620052c283398101604081905262000052916200019d565b60808082015160a080840151604080860151606087015187516020808a01516001600160a01b0394851690995291831690955281841660c081905294821660e05295811661010052610120939093529183166101408190528251631355724960e31b815292518695869594639aab924892600480830193928290030181865afa158015620000e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000108919062000253565b610180526001600160a01b0316610160525062000129915033905062000130565b506200026b565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b038116811462000198575f80fd5b919050565b5f60c08284031215620001ae575f80fd5b60405160c081016001600160401b0381118282101715620001dd57634e487b7160e01b5f52604160045260245ffd5b604052620001eb8362000181565b8152620001fb6020840162000181565b60208201526200020e6040840162000181565b6040820152620002216060840162000181565b6060820152620002346080840162000181565b60808201526200024760a0840162000181565b60a08201529392505050565b5f6020828403121562000264575f80fd5b5051919050565b60805160a05160c05160e0516101005161012051610140516101605161018051614f576200036b5f395f61392101525f61042201525f818161035d01528181613744015281816138e601528181614273015261438201525f818161016a0152818161030d015281816106e5015281816107c401528181610f340152818161101301528181611133015281816111a6015281816112f20152818161133801526113c901525f818161028001528181610d4801526124d301525f81816103b60152610c1201525f818161047401528181611878015281816118be015261194f01525f81816102b301528181610e46015261258e01525f6102310152614f575ff3fe60806040526004361061015a575f3560e01c8063983626df116100bb578063df2ab5bb11610071578063f242862111610057578063f242862114610411578063f2fde38b14610444578063f6c65d4a14610463575f80fd5b8063df2ab5bb146103eb578063e0e189a0146103fe575f80fd5b8063bbad75d2116100a1578063bbad75d214610392578063c45a0155146103a5578063c60696ec146103d8575f80fd5b8063983626df1461034c578063aedc8a701461037f575f80fd5b806363baed1611610110578063715018a6116100f6578063715018a6146102e85780638af3ac85146102fc5780638da5cb5b1461032f575f80fd5b806363baed16146102a257806369bc35b2146102d5575f80fd5b80632e214034116101405780632e214034146102205780633119049a1461026f57806341865270146101dc575f80fd5b80630f014949146101e25780632c8958f614610201575f80fd5b366101de57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101dc5760405162461bcd60e51b815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b5f80fd5b3480156101ed575f80fd5b506101dc6101fc3660046144b1565b610496565b34801561020c575f80fd5b506101dc61021b3660046144ef565b61052b565b34801561022b575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b34801561027a575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ad575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6101dc6102e3366004614568565b6105bc565b3480156102f3575f80fd5b506101dc6105ca565b348015610307575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b34801561033a575f80fd5b506002546001600160a01b0316610253565b348015610357575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6101dc61038d366004614568565b6105db565b6101dc6103a03660046145d7565b6105e5565b3480156103b0575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6101dc6103e6366004614645565b6106b6565b6101dc6103f936600461468c565b505050565b6101dc61040c3660046146cb565b610871565b34801561041c575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b34801561044f575f80fd5b506101dc61045e366004614726565b610991565b34801561046e575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b61049e610a21565b82156104ae576103f93347610a7b565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156104f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105169190614741565b1015610520575f80fd5b6103f9823383610b1a565b5f84138061053857505f83135b6105845760405162461bcd60e51b815260206004820152601360248201527f5a65726f206c697175696469747920737761700000000000000000000000000060448201526064016101d3565b5f61058e33610c0e565b905080156105a7576105a285858585610d1f565b6105b3565b6105b385858585610e20565b5050505050565b565b6105c68282610f1d565b5050565b6105d2610a21565b6105ba5f61107c565b6105c682826110da565b333014610689576003546001600160a01b0316600114610618576040516337affdbf60e11b815260040160405180910390fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916331790554281101561065857604051632dfb7c8b60e11b815260040160405180910390fd5b610664858585856111cc565b6003805473ffffffffffffffffffffffffffffffffffffffff191660011790556105b3565b804211156106aa57604051632dfb7c8b60e11b815260040160405180910390fd5b6105b3858585856111cc565b5f821180156106c6575060648211155b6106ce575f80fd5b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610732573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107569190614741565b9050848110156107a85760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420574e6174697665546f6b656e0000000000000060448201526064016101d3565b80156105b357604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561080d575f80fd5b505af115801561081f573d5f803e3d5ffd5b505050505f61271061083a858461126b90919063ffffffff16565b6108449190614780565b90508015610856576108568382610a7b565b61086985610864838561479f565b610a7b565b505050505050565b5f82118015610881575060648211155b610889575f80fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156108cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f19190614741565b9050848110156109435760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e000000000000000000000000000060448201526064016101d3565b8015610869575f612710610957838661126b565b6109619190614780565b9050801561097457610974878483610b1a565b6109888786610983848661479f565b610b1a565b50505050505050565b610999610a21565b6001600160a01b038116610a155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b610a1e8161107c565b50565b6002546001600160a01b031633146105ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b604080515f808252602082019092526001600160a01b038416908390604051610aa491906147e8565b5f6040518083038185875af1925050503d805f8114610ade576040519150601f19603f3d011682016040523d82523d5f602084013e610ae3565b606091505b50509050806103f95760405162461bcd60e51b815260206004820152600360248201526253544560e81b60448201526064016101d3565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691610b7591906147e8565b5f604051808303815f865af19150503d805f8114610bae576040519150601f19603f3d011682016040523d82523d5f602084013e610bb3565b606091505b5091509150818015610bdd575080511580610bdd575080806020019051810190610bdd9190614803565b6105b35760405162461bcd60e51b815260206004820152600260248201526114d560f21b60448201526064016101d3565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0ad27926040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c90919061481e565b6040516366f78b7b60e11b81526001600160a01b0385811660048301529192505f9183169063cdef16f690602401602060405180830381865afa158015610cd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfd919061481e565b90506001600160a01b03811615610d15576001610d17565b5f5b949350505050565b5f610d2c82840184614998565b90505f805f610d3d845f0151611299565b925092509250610d6f7f00000000000000000000000000000000000000000000000000000000000000008385846112d2565b505f805f8a13610d9457846001600160a01b0316836001600160a01b03161089610dab565b826001600160a01b0316856001600160a01b0316108a5b915091508115610dca57610dc585876020015133846112f0565b610e14565b8551610dd590611470565b15610df9578551610de5906114a7565b8652610df381335f896114d6565b50610e14565b610e01815f55565b829450610e1485876020015133846112f0565b50505050505050505050565b5f610e2d82840184614998565b90505f80610e3d835f01516116a0565b91509150610e6c7f000000000000000000000000000000000000000000000000000000000000000083836116c0565b505f805f8913610e9157836001600160a01b0316836001600160a01b03161088610ea8565b826001600160a01b0316846001600160a01b031610895b915091508115610ec757610ec284866020015133846112f0565b610f12565b8451610ed2906116d4565b15610ef6578451610ee2906116e1565b8552610ef081335f886116f5565b50610f12565b610eff81600155565b829350610f128486602001513384611876565b505050505050505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa59190614741565b905082811015610ff75760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420574e6174697665546f6b656e0000000000000060448201526064016101d3565b80156103f957604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561105c575f80fd5b505af115801561106e573d5f803e3d5ffd5b505050506103f98282610a7b565b600280546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b478281101561112b5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204e6174697665546f6b656e000000000000000060448201526064016101d3565b80156103f9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b15801561118a575f80fd5b505af115801561119c573d5f803e3d5ffd5b50505050506103f97f00000000000000000000000000000000000000000000000000000000000000008383610b1a565b82818114611206576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8181101561086957611263868683818110611225576112256149ca565b905060200201602081019061123a91906149de565b85858481811061124c5761124c6149ca565b905060200281019061125e9190614a05565b611982565b600101611208565b5f82158061128b5750508181028183828161128857611288614758565b04145b611293575f80fd5b92915050565b5f80806112a6848261217e565b92506112b384601461217e565b91506112ca6112c3601480614a48565b859061217e565b929491935050565b5f6112e7856112e28686866121ec565b612252565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156113315750804710155b1561143e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b15801561138f575f80fd5b505af11580156113a1573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190505b6020604051808303815f875af1158015611414573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114389190614803565b5061146a565b306001600160a01b0384160361145e57611459848383610b1a565b61146a565b61146a848484846122b7565b50505050565b5f61147c601480614a48565b60146114888180614a48565b6114929190614a48565b61149c9190614a48565b825110159050919050565b60606112936114b7601480614a48565b6114c2601480614a48565b84516114ce919061479f565b8491906123b4565b5f6001600160a01b0384166114e9573093505b5f805f6114f8855f0151611299565b919450925090506001600160a01b03808416908216105f8061151b8585886124cd565b6001600160a01b031663128acb088b856115348f612502565b61153d90614a5b565b6001600160a01b038e1615611552578d61158b565b8761157b57611576600173fffd8963efd1fc6a506488495d951d5263988d26614a75565b61158b565b61158b6401000276a36001614a95565b8d60405160200161159c9190614b11565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016115cb959493929190614b23565b60408051808303815f875af11580156115e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160a9190614b67565b915091505f83611623578161161e84614a5b565b61162d565b8261162d83614a5b565b90985090506001600160a01b038a165f03611691578b81146116915760405162461bcd60e51b815260206004820152601b60248201527f4e6f742072656365697665642066756c6c20616d6f756e744f7574000000000060448201526064016101d3565b50505050505050949350505050565b5f806116ac838261217e565b91506116b983601461217e565b9050915091565b5f610d17846116cf8585612514565b612567565b5f60146114928180614a48565b606061129360148084516114ce919061479f565b5f6001600160a01b038416611708573093505b5f80611716845f01516116a0565b90925090506001600160a01b03808316908216105f806117368486612588565b6001600160a01b031663128acb088a8561174f8e612502565b61175890614a5b565b6001600160a01b038d161561176d578c6117a6565b8761179657611791600173fffd8963efd1fc6a506488495d951d5263988d26614a75565b6117a6565b6117a66401000276a36001614a95565b8c6040516020016117b79190614b11565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016117e6959493929190614b23565b60408051808303815f875af1158015611801573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118259190614b67565b915091505f8361183e578161183984614a5b565b611848565b8261184883614a5b565b90975090506001600160a01b0389165f03611868578a8114611868575f80fd5b505050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156118b75750804710155b1561143e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611915575f80fd5b505af1158015611927573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506113f8565b600760f81b6001600160f81b031984161015611c1e576001600160f81b03198316611a47575f6119b482840184614c01565b8051519091506119f55760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b60448201526064016101d3565b5f816060015111611a3b5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b6b7bab73a24b760811b60448201526064016101d3565b611a44816125c3565b50505b6001600160f81b031983811601611b58575f611a6582840184614c01565b805151909150611aa65760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b60448201526064016101d3565b5f816060015111611af95760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420616d6f756e744f757400000000000000000000000000000060448201526064016101d3565b5f816080015111611b4c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420616d6f756e74496e4d6178696d756d00000000000000000060448201526064016101d3565b611b5581612696565b50505b607f60f91b6001600160f81b03198416016103f9575f611b7a82840184614c33565b90505f8160c0015111611bcf5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420616d6f756e744f75744d696e696d756d000000000000000060448201526064016101d3565b5f8160a0015111611c155760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b6b7bab73a24b760811b60448201526064016101d3565b6105b381612761565b600760f81b6001600160f81b03198416118015611c485750600760f91b6001600160f81b03198416105b15611e1457601f60fb1b6001600160f81b0319841601611d02575f611c6f82840184614c01565b805151909150611cb05760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b60448201526064016101d3565b5f816060015111611cf65760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b6b7bab73a24b760811b60448201526064016101d3565b611cff8161297d565b50505b60f760f81b6001600160f81b03198416016103f9575f611d2482840184614c01565b805151909150611d655760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b60448201526064016101d3565b5f816060015111611db85760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420616d6f756e744f757400000000000000000000000000000060448201526064016101d3565b5f816080015111611e0b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420616d6f756e74496e4d6178696d756d00000000000000000060448201526064016101d3565b6105b3816129eb565b600760f81b6001600160f81b03198416118015611e3e5750601760f81b6001600160f81b03198416105b1561202457600f60fc1b6001600160f81b0319841601611f62575f611e6582840184614ce6565b8051909150611ea95760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b6b7bab73a24b760811b60448201526064016101d3565b5f816020015111611efc5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420616d6f756e744f75744d696e00000000000000000000000060448201526064016101d3565b60608101516001600160a01b0316611f565760405162461bcd60e51b815260206004820152600a60248201527f496e76616c696420746f0000000000000000000000000000000000000000000060448201526064016101d3565b611f5f81612a8b565b50505b60ef60f81b6001600160f81b03198416016103f9575f611f8482840184614ce6565b8051909150611fc85760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b6b7bab73a24b760811b60448201526064016101d3565b5f81602001511161201b5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420616d6f756e744f75744d696e00000000000000000000000060448201526064016101d3565b61146a81612c91565b601760f81b6001600160f81b03198416111561215957600360fd1b6001600160f81b031984160161210a57813560208301356001600160a01b0382166120ac5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064016101d3565b5f81116120fb5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642076616c75650000000000000000000000000000000000000060448201526064016101d3565b612107823330846122b7565b50505b605f60f81b6001600160f81b031984160161213357813560208301356121308282610f1d565b50505b602f60f91b6001600160f81b03198416016103f957813560208301356105b382826110da565b604051630a68c79560e01b81526001600160f81b0319841660048201526024016101d3565b5f81601401835110156121d35760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064016101d3565b5001602001516c01000000000000000000000000900490565b604080516060810182525f8082526020820181905291810191909152816001600160a01b0316836001600160a01b03161115612226579091905b50604080516060810182526001600160a01b039485168152928416602084015292169181019190915290565b5f61225d8383612f7a565b9050336001600160a01b038216146112935760405162461bcd60e51b815260206004820152601a60248201527f496e76616c69642063616c6c6572206f662063616c6c6261636b00000000000060448201526064016101d3565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291515f9283929088169161231a91906147e8565b5f604051808303815f865af19150503d805f8114612353576040519150601f19603f3d011682016040523d82523d5f602084013e612358565b606091505b50915091508180156123825750805115806123825750808060200190518101906123829190614803565b6108695760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016101d3565b60608182601f0110156124095760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101d3565b8183018451101561245c5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016101d3565b60608215801561247a5760405191505f8252602082016040526124c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124b357805183526020928301920161249b565b5050858452601f01601f1916604052505b50949350505050565b5f610d177f00000000000000000000000000000000000000000000000000000000000000006124fd8686866121ec565b612f7a565b805f81121561250f575f80fd5b919050565b604080518082019091525f8082526020820152816001600160a01b0316836001600160a01b03161115612545579091905b50604080518082019091526001600160a01b0392831681529116602082015290565b5f612572838361310a565b9050336001600160a01b03821614611293575f80fd5b5f6125bc7f00000000000000000000000000000000000000000000000000000000000000006125b78585612514565b61310a565b9392505050565b5f5b5f6125d2835f0151611470565b90506126138360600151826125eb5784602001516125ed565b305b5f6040518060400160405280612605895f01516131da565b8152306020909101526131f6565b60608401528015612630578251612629906114a7565b835261263c565b50506060810151612642565b506125c5565b816080015181101561250f5760405162461bcd60e51b815260206004820152601360248201527f546f6f206c6974746c652072656365697665640000000000000000000000000060448201526064016101d3565b5f6126cb826060015183602001515f6040518060400160405280875f01518152602001306001600160a01b03168152506114d6565b50505f5460808201518111156127235760405162461bcd60e51b815260206004820152601260248201527f546f6f206d75636820726571756573746564000000000000000000000000000060448201526064016101d3565b5f195f9081558251612734906133bd565b90505f828460800151612747919061479f565b9050801561275a5761275a823383610b1a565b5050919050565b6040805180820182528251838301516020808601516bffffffffffffffffffffffff19606094851b81168587015292841b83166074860152831b90911660888401528351808403607c018152609c84019094529282523092820192909252908201515f919082906001600160a01b0316156127e05783606001516127e2565b305b6020850151855160408701519293506001600160a01b0380831690821610925f92839261280f92916124cd565b6001600160a01b0316639e4e022733868661282d8c60a00151612502565b60e08d01516001600160a01b03161561284a578c60e00151612883565b886128735761286e600173fffd8963efd1fc6a506488495d951d5263988d26614a75565b612883565b6128836401000276a36001614a95565b8b6040516020016128949190614b11565b6040516020818303038152906040526040518763ffffffff1660e01b81526004016128c496959493929190614e28565b60408051808303815f875af11580156128df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129039190614b67565b91509150826129125781612914565b805b61291d90614a5b565b95508660c001518610156129735760405162461bcd60e51b815260206004820152601360248201527f546f6f206c6974746c652072656365697665640000000000000000000000000060448201526064016101d3565b5050505050919050565b5f5b5f61298c835f01516116d4565b90506129cd8360600151826129a55784602001516129a7565b305b5f60405180604001604052806129bf895f0151613400565b815230602090910152613411565b606084015280156126305782516129e3906116e1565b83525061297f565b5f612a20826060015183602001515f6040518060400160405280875f01518152602001306001600160a01b03168152506116f5565b50506001546080820151811115612a795760405162461bcd60e51b815260206004820152601260248201527f546f6f206d75636820726571756573746564000000000000000000000000000060448201526064016101d3565b5f1960015581515f90612734906135d4565b8051606090600160ff1b01612b265781604001515f81518110612ab057612ab06149ca565b6020908102919091010151516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b239190614741565b82525b612b37825f01518360400151613602565b90505f612ba783604001515f81518110612b5357612b536149ca565b60200260200101515f015184604001515f81518110612b7457612b746149ca565b60200260200101516020015185604001515f81518110612b9657612b966149ca565b6020026020010151604001516138a1565b905082602001518260018451612bbd919061479f565b81518110612bcd57612bcd6149ca565b60200260200101511015612c345760405162461bcd60e51b815260206004820152602860248201527f426173655631526f757465723a20494e53554646494349454e545f4f555450556044820152671517d05353d5539560c21b60648201526084016101d3565b612c7883604001515f81518110612c4d57612c4d6149ca565b60200260200101515f015182845f81518110612c6b57612c6b6149ca565b60200260200101516139a7565b612c8b8284604001518560600151613a87565b50919050565b8051600160ff1b01612d295780604001515f81518110612cb357612cb36149ca565b6020908102919091010151516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d269190614741565b81525b5f612d8682604001515f81518110612d4357612d436149ca565b60200260200101515f015183604001515f81518110612d6457612d646149ca565b60200260200101516020015184604001515f81518110612b9657612b966149ca565b9050612db682604001515f81518110612da157612da16149ca565b60200260200101515f015182845f01516139a7565b604082015180515f9190612dcc9060019061479f565b81518110612ddc57612ddc6149ca565b602090810291909101810151015160608401516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015612e33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e579190614741565b9050612e6b83604001518460600151613d7b565b602083015160408401518051839190612e869060019061479f565b81518110612e9657612e966149ca565b602090810291909101810151015160608601516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015612eed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f119190614741565b612f1b919061479f565b10156103f95760405162461bcd60e51b815260206004820152602860248201527f426173655631526f757465723a20494e53554646494349454e545f4f555450556044820152671517d05353d5539560c21b60648201526084016101d3565b5f81604001516001600160a01b031682602001516001600160a01b031610612fe45760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e7300000000000000000060448201526064016101d3565b815183906001600160a01b031615613043578251602080850151604080870151905161302f9493016001600160a01b0393841681529183166020830152909116604082015260600190565b604051602081830303815290604052613080565b602080840151604080860151905161307093016001600160a01b0392831681529116602082015260400190565b6040516020818303038152906040525b80516020918201206040516130eb93927fb3fc09be5eb433d99b1ec89fd8435aaf5ffea75c1879e19028aa2414a14b3c8591016001600160f81b0319815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60408051601f1981840301815291905280516020909101209392505050565b5f81602001516001600160a01b0316825f01516001600160a01b03161061312f575f80fd5b82825f0151836020015160405160200161315f9291906001600160a01b0392831681529116602082015260400190565b60408051601f198184030181529082905280516020918201206130eb939290917fd61302e7691f3169f5ebeca3a0a4ab8f7f998c01e55ec944e62cfb1109fd273691016001600160f81b0319815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60606112935f60146131ec8180614a48565b6114ce9190614a48565b5f6001600160a01b038416613209573093505b5f805f613218855f0151611299565b925092509250600160ff1b8803613292576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561326b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061328f9190614741565b97505b6001600160a01b03808216908416105f806132ae8587866124cd565b6001600160a01b031663128acb088b856132c78f612502565b6001600160a01b038e16156132dc578d613315565b8761330557613300600173fffd8963efd1fc6a506488495d951d5263988d26614a75565b613315565b6133156401000276a36001614a95565b8d6040516020016133269190614b11565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613355959493929190614b23565b60408051808303815f875af1158015613370573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133949190614b67565b91509150826133a357816133a5565b805b6133ae90614a5b565b9b9a5050505050505050505050565b5f806133c883614118565b9050806001036133e7576125bc6133e0601480614a48565b849061217e565b6125bc816133f6601480614a48565b6133e09190614e75565b60606112935f6114ce601480614a48565b5f6001600160a01b038416613424573093505b5f80613432845f01516116a0565b90925090506001600160a01b0380821690831610600160ff1b88016134ba576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015613493573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b79190614741565b97505b5f806134c68585612588565b6001600160a01b031663128acb088a856134df8e612502565b6001600160a01b038d16156134f4578c61352d565b8761351d57613518600173fffd8963efd1fc6a506488495d951d5263988d26614a75565b61352d565b61352d6401000276a36001614a95565b8c60405160200161353e9190614b11565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161356d959493929190614b23565b60408051808303815f875af1158015613588573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ac9190614b67565b91509150826135bb57816135bd565b805b6135c690614a5b565b9a9950505050505050505050565b5f806135df8361413c565b9050806001036135f4576125bc83601461217e565b6125bc6133e0826014614e75565b60606001825110156136565760405162461bcd60e51b815260206004820152601a60248201527f426173655631526f757465723a20494e56414c49445f5041544800000000000060448201526064016101d3565b8151613663906001614a48565b67ffffffffffffffff81111561367b5761367b6147b2565b6040519080825280602002602001820160405280156136a4578160200160208202803683370190505b50905082815f815181106136ba576136ba6149ca565b6020026020010181815250505f5b825181101561389a575f6137228483815181106136e7576136e76149ca565b60200260200101515f0151858481518110613704576137046149ca565b602002602001015160200151868581518110612b9657612b966149ca565b60405163e5e31b1360e01b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e5e31b1390602401602060405180830381865afa15801561378b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137af9190614803565b1561389157806001600160a01b031663f140a35a8484815181106137d5576137d56149ca565b60200260200101518685815181106137ef576137ef6149ca565b60200260200101515f01516040518363ffffffff1660e01b81526004016138299291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015613844573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138689190614741565b83613874846001614a48565b81518110613884576138846149ca565b6020026020010181815250505b506001016136c8565b5092915050565b5f805f6138ae868661414c565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b16603482015286151560f81b604882015291935091507f000000000000000000000000000000000000000000000000000000000000000090604901604051602081830303815290604052805190602001207f0000000000000000000000000000000000000000000000000000000000000000604051602001613985939291906001600160f81b0319815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b5f836001600160a01b03163b116139bc575f80fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691613a1791906147e8565b5f604051808303815f865af19150503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150818015613a7f575080511580613a7f575080806020019051810190613a7f9190614803565b6105b3575f80fd5b5f5b825181101561146a575f613ad6848381518110613aa857613aa86149ca565b60200260200101515f0151858481518110613ac557613ac56149ca565b60200260200101516020015161414c565b5090505f85613ae6846001614a48565b81518110613af657613af66149ca565b602002602001015190505f80836001600160a01b0316878681518110613b1e57613b1e6149ca565b60200260200101515f01516001600160a01b031614613b3e57825f613b41565b5f835b915091505f60018851613b54919061479f565b8610613b605786613bd2565b613bd288613b6f886001614a48565b81518110613b7f57613b7f6149ca565b60200260200101515f015189886001613b989190614a48565b81518110613ba857613ba86149ca565b6020026020010151602001518a896001613bc29190614a48565b81518110612b9657612b966149ca565b9050613c24888781518110613be957613be96149ca565b60200260200101515f0151898881518110613c0657613c066149ca565b6020026020010151602001518a8981518110612b9657612b966149ca565b6001600160a01b031663022c0d9f8484845f6040519080825280601f01601f191660200182016040528015613c60576020820181803683370190505b506040518563ffffffff1660e01b8152600401613c809493929190614e8c565b5f604051808303815f87803b158015613c97575f80fd5b505af1158015613ca9573d5f803e3d5ffd5b50505050866001600160a01b0316336001600160a01b03167f423c093a1f80c354c75d4f9e86fde37d7c9014453df9643f585a1b199d094e508b8981518110613cf457613cf46149ca565b60200260200101518b8a81518110613d0e57613d0e6149ca565b60200260200101515f01518c8b81518110613d2b57613d2b6149ca565b602002602001015160400151604051613d62939291909283526001600160a01b039190911660208301521515604082015260600190565b60405180910390a3505060019093019250613a89915050565b5f5b82518110156103f9575f80848381518110613d9a57613d9a6149ca565b60200260200101515f0151858481518110613db757613db76149ca565b602002602001015160200151915091505f613dd2838361414c565b5090505f613e26878681518110613deb57613deb6149ca565b60200260200101515f0151888781518110613e0857613e086149ca565b602002602001015160200151898881518110612b9657612b966149ca565b90505f805f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613e68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e8c9190614ee0565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691505f866001600160a01b0316896001600160a01b031614613ed2578183613ed5565b82825b506040516370a0823160e01b81526001600160a01b03888116600483015291925082918b16906370a0823190602401602060405180830381865afa158015613f1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f439190614741565b613f4d919061479f565b9450613f5a858a8a61423e565b50809450505050505f80856001600160a01b0316886001600160a01b031614613f8457825f613f87565b5f835b915091505f60018c51613f9a919061479f565b8a10613fa6578a614008565b6140088c613fb58c6001614a48565b81518110613fc557613fc56149ca565b60200260200101515f01518d8c6001613fde9190614a48565b81518110613fee57613fee6149ca565b6020026020010151602001518e8d6001613bc29190614a48565b604080515f8152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f906140499086908690869060248101614e8c565b5f604051808303815f87803b158015614060575f80fd5b505af1158015614072573d5f803e3d5ffd5b505050505f8c8b81518110614089576140896149ca565b60200260200101516040015190508b6001600160a01b0316336001600160a01b03167f423c093a1f80c354c75d4f9e86fde37d7c9014453df9643f585a1b199d094e50888d856040516140fa939291909283526001600160a01b039190911660208301521515604082015260600190565b60405180910390a3505060019098019750613d7d9650505050505050565b5f614124601480614a48565b60148351614132919061479f565b6112939190614780565b5f6014808351614132919061479f565b5f80826001600160a01b0316846001600160a01b0316036141b95760405162461bcd60e51b815260206004820152602160248201527f426173655631526f757465723a204944454e544943414c5f41444452455353456044820152605360f81b60648201526084016101d3565b826001600160a01b0316846001600160a01b0316106141d95782846141dc565b83835b90925090506001600160a01b0382166142375760405162461bcd60e51b815260206004820152601a60248201527f426173655631526f757465723a205a45524f5f4144445245535300000000000060448201526064016101d3565b9250929050565b5f805f61424d858560016138a1565b60405163e5e31b1360e01b81526001600160a01b0382811660048301529192505f9182917f00000000000000000000000000000000000000000000000000000000000000009091169063e5e31b1390602401602060405180830381865afa1580156142ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142de9190614803565b15614355576040516378a051ad60e11b8152600481018990526001600160a01b03888116602483015284169063f140a35a90604401602060405180830381865afa15801561432e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143529190614741565b91505b61436087875f6138a1565b60405163e5e31b1360e01b81526001600160a01b0380831660048301529194507f00000000000000000000000000000000000000000000000000000000000000009091169063e5e31b1390602401602060405180830381865afa1580156143c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143ed9190614803565b15614464576040516378a051ad60e11b8152600481018990526001600160a01b03888116602483015284169063f140a35a90604401602060405180830381865afa15801561443d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144619190614741565b90505b80821161447257805f614476565b8160015b94509450505050935093915050565b8015158114610a1e575f80fd5b6001600160a01b0381168114610a1e575f80fd5b803561250f81614492565b5f805f606084860312156144c3575f80fd5b83356144ce81614485565b925060208401356144de81614492565b929592945050506040919091013590565b5f805f8060608587031215614502575f80fd5b8435935060208501359250604085013567ffffffffffffffff80821115614527575f80fd5b818701915087601f83011261453a575f80fd5b813581811115614548575f80fd5b886020828501011115614559575f80fd5b95989497505060200194505050565b5f8060408385031215614579575f80fd5b82359150602083013561458b81614492565b809150509250929050565b5f8083601f8401126145a6575f80fd5b50813567ffffffffffffffff8111156145bd575f80fd5b6020830191508360208260051b8501011115614237575f80fd5b5f805f805f606086880312156145eb575f80fd5b853567ffffffffffffffff80821115614602575f80fd5b61460e89838a01614596565b90975095506020880135915080821115614626575f80fd5b5061463388828901614596565b96999598509660400135949350505050565b5f805f8060808587031215614658575f80fd5b84359350602085013561466a81614492565b925060408501359150606085013561468181614492565b939692955090935050565b5f805f6060848603121561469e575f80fd5b83356146a981614492565b92506020840135915060408401356146c081614492565b809150509250925092565b5f805f805f60a086880312156146df575f80fd5b85356146ea81614492565b945060208601359350604086013561470181614492565b925060608601359150608086013561471881614492565b809150509295509295909350565b5f60208284031215614736575f80fd5b81356125bc81614492565b5f60208284031215614751575f80fd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261479a57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156112935761129361476c565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156147e05781810151838201526020016147c8565b50505f910152565b5f82516147f98184602087016147c6565b9190910192915050565b5f60208284031215614813575f80fd5b81516125bc81614485565b5f6020828403121561482e575f80fd5b81516125bc81614492565b60405160a0810167ffffffffffffffff8111828210171561485c5761485c6147b2565b60405290565b6040516060810167ffffffffffffffff8111828210171561485c5761485c6147b2565b604051601f8201601f1916810167ffffffffffffffff811182821017156148ae576148ae6147b2565b604052919050565b5f82601f8301126148c5575f80fd5b813567ffffffffffffffff8111156148df576148df6147b2565b6148f2601f8201601f1916602001614885565b818152846020838601011115614906575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60408284031215614932575f80fd5b6040516040810167ffffffffffffffff8282108183111715614956576149566147b2565b81604052829350843591508082111561496d575f80fd5b5061497a858286016148b6565b825250602083013561498b81614492565b6020919091015292915050565b5f602082840312156149a8575f80fd5b813567ffffffffffffffff8111156149be575f80fd5b610d1784828501614922565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156149ee575f80fd5b81356001600160f81b0319811681146125bc575f80fd5b5f808335601e19843603018112614a1a575f80fd5b83018035915067ffffffffffffffff821115614a34575f80fd5b602001915036819003821315614237575f80fd5b808201808211156112935761129361476c565b5f600160ff1b8201614a6f57614a6f61476c565b505f0390565b6001600160a01b0382811682821603908082111561389a5761389a61476c565b6001600160a01b0381811683821601908082111561389a5761389a61476c565b5f8151808452614acc8160208601602086016147c6565b601f01601f19169290920160200192915050565b5f815160408452614af46040850182614ab5565b6020938401516001600160a01b0316949093019390935250919050565b602081525f6125bc6020830184614ae0565b5f6001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152614b5c60a0830184614ab5565b979650505050505050565b5f8060408385031215614b78575f80fd5b505080516020909101519092909150565b5f60a08284031215614b99575f80fd5b614ba1614839565b9050813567ffffffffffffffff811115614bb9575f80fd5b614bc5848285016148b6565b8252506020820135614bd681614492565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b5f60208284031215614c11575f80fd5b813567ffffffffffffffff811115614c27575f80fd5b610d1784828501614b89565b5f610100808385031215614c45575f80fd5b6040519081019067ffffffffffffffff82118183101715614c6857614c686147b2565b8160405283359150614c7982614492565b818152614c88602085016144a6565b6020820152614c99604085016144a6565b6040820152614caa606085016144a6565b60608201526080840135608082015260a084013560a082015260c084013560c0820152614cd960e085016144a6565b60e0820152949350505050565b5f6020808385031215614cf7575f80fd5b823567ffffffffffffffff80821115614d0e575f80fd5b9084019060a08287031215614d21575f80fd5b614d29614839565b82358152838301358482015260408084013583811115614d47575f80fd5b8401601f81018913614d57575f80fd5b803584811115614d6957614d696147b2565b614d77878260051b01614885565b8181528781019550606091820283018801918b831115614d95575f80fd5b928801925b82841015614df65780848d031215614db0575f80fd5b614db8614862565b8435614dc381614492565b8152848a0135614dd281614492565b818b015284860135614de381614485565b8187015287529588019592830192614d9a565b50604085015250614e0c915050606084016144a6565b6060820152608083013560808201528094505050505092915050565b5f6001600160a01b0380891683528088166020840152861515604084015285606084015280851660808401525060c060a0830152614e6960c0830184614ab5565b98975050505050505050565b80820281158282048414176112935761129361476c565b8481528360208201526001600160a01b0383166040820152608060608201525f614eb96080830184614ab5565b9695505050505050565b80516dffffffffffffffffffffffffffff8116811461250f575f80fd5b5f805f60608486031215614ef2575f80fd5b614efb84614ec3565b9250614f0960208501614ec3565b9150604084015163ffffffff811681146146c0575f80fdfea26469706673582212204301f28bb5b75707b03415f5adb8689b18ebc2c2eb7fcb678de5753a5c3406f764736f6c6343000816003300000000000000000000000030055f87716d3dfd0e5198c27024481099fb4a9800000000000000000000000006852dc9d6e44782dd02994c368febc4dc1b8a17000000000000000000000000306f06c147f064a010530292a1eb6737c3e378e4000000000000000000000000c89f69baa3ff17a842ab2de89e5fc8a8e2cc7358000000000000000000000000afd89d21bdb66d00817d4153e055830b1c2b3970000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c