69 txs
104 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
version
viewfunction version() view returns (string)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b506143b0806100206000396000f3fe6080604052600436106100ec5760003560e01c806373679b6b1161008a578063ca68d8f611610059578063ca68d8f6146102a9578063e0af3616146102c1578063e99bfa95146102dc578063fa461e33146102ef57600080fd5b806373679b6b14610243578063918f86741461026b5780639871efa414610283578063b80c2f091461029657600080fd5b80630d5f0e3b116100c65780630d5f0e3b1461018f57806354fd4d50146101a2578063591b3d08146101f05780636aa476451461020357600080fd5b806301617fab1461014357806303b87e5f1461015657806308298b5a1461017c57600080fd5b3661013e5732330361013c5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61013c61015136600461360b565b61030f565b6101696101643660046136b5565b610733565b6040519081526020015b60405180910390f35b61016961018a366004613781565b6107e4565b61016961019d3660046137f3565b610826565b3480156101ae57600080fd5b506101e3604051806040016040528060158152602001743b189718171a16ba37a116b1b7b6b6b4b9b9b4b7b760591b81525081565b60405161017391906138a3565b6101696101fe366004613e98565b610866565b34801561020f57600080fd5b5061022b73aa6fb20894554d57319c39bcc2468f72af099ea081565b6040516001600160a01b039091168152602001610173565b34801561024f57600080fd5b5061022b738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be81565b34801561027757600080fd5b50610169633b9aca0081565b6101696102913660046137f3565b610acc565b6101696102a4366004613f5a565b610b03565b3480156102b557600080fd5b506101696301c9c38081565b3480156102cd57600080fd5b5061022b6004604360981b0181565b6101696102ea366004614010565b610b60565b3480156102fb57600080fd5b5061013c61030a3660046140c0565b610b70565b600160ff1b81166001600160801b038216806103625760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610133565b600061036c610da0565b90506000836103895760008051602061431b833981519152610392565b6004604360981b015b90506000806103ad84843333896001600160801b0316610ea1565b9150915085156105785760405163052f523360e11b81526004604360981b016004820152336024820152738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be60448201526001600160801b038616606482015273aa6fb20894554d57319c39bcc2468f72af099ea090630a5ea46690608401600060405180830381600087803b15801561043957600080fd5b505af115801561044d573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b0388166004820152738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be9250632e1a7d4d9150602401600060405180830381600087803b1580156104a657600080fd5b505af11580156104ba573d6000803e3d6000fd5b505050506001600160a01b0382163014610573576000826001600160a01b03164760405160006040518083038185875af1925050503d806000811461051b576040519150601f19603f3d011682016040523d82523d6000602084013e610520565b606091505b50509050806105715760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610133565b505b61065f565b83516105cf57846001600160801b031634146105cf5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610133565b6004604360981b016001600160a01b031663d0e30db0866001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561061a57600080fd5b505af115801561062e573d6000803e3d6000fd5b505050506001600160a01b0383163014905061065f5761065f6004604360981b0183876001600160801b0316611453565b600061066c853384611483565b905060008051602061435b8339815191528960405161068d91815260200190565b60405180910390a160008051602061433b833981519152876106bd5760008051602061431b8339815191526106c6565b6004604360981b015b886106d8576004604360981b016106e8565b60008051602061431b8339815191525b604080516001600160a01b03938416815292909116602083015232908201526001600160801b03881660608201819052608082015260a00160405180910390a1505050505050505050565b600087608001354281101561075a5760405162461bcd60e51b81526004016101339061413f565b6040518b815260008051602061435b8339815191529060200160405180910390a16107d533808c610790368e90038e018e614167565b8c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506107d092508d91508e9050614183565b611877565b9b9a5050505050505050505050565b60405160a087901c815260009060008051602061435b8339815191529060200160405180910390a161081b87878733888888611932565b979650505050505050565b60405160a086901c815260009060008051602061435b8339815191529060200160405180910390a161085c3387878787876119ca565b9695505050505050565b600086608001514281101561088d5760405162461bcd60e51b81526004016101339061413f565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016108f35760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610133565b6001600160a01b0384166109425760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610133565b6001600160a01b03851661098b5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610133565b60008960400151116109d65760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610133565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a419190614190565b905060005b8951811015610aa8578a60400151828b8381518110610a6757610a676141a9565b6020026020010151610a7991906141d5565b610a8391906141ec565b8a8281518110610a9557610a956141a9565b6020908102919091010152600101610a46565b5060408a01819052610abe8a8a8a30898b611b4c565b9a9950505050505050505050565b60405160a086901c815260009060008051602061435b8339815191529060200160405180910390a161085c86868633338888611932565b6000876080013542811015610b2a5760405162461bcd60e51b81526004016101339061413f565b6040518a815260008051602061435b8339815191529060200160405180910390a1610abe338080610790368e90038e018e614167565b600061085c868686868687610866565b610c11565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610bac57610bac610b75565b6000518015610bd75760a435600483015260248201819052610bd76020600060448582885af1610bdc565b505050565b80610be957610be9610b75565b600160005114601f3d11163d151780610c0d57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610c4857610c48610b75565b6020806004808501335afa610c5f57610c5f610b75565b60206040600460088501335afa610c7857610c78610b75565b6000806000881360018114610c94576020519250879150610c9d565b60005192508891505b5060008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610cf657635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610d6857826014860152836034860152336054860152816074860152610d6360206000608460108901600073aa6fb20894554d57319c39bcc2468f72af099ea05af1610bdc565b610d95565b336010860152816030860152610d8b602060006044600c89016000885af1610bdc565b610d958386610b7f565b505050505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114610e6f5760008560a0015260008560c00152610e9a565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b600080866020015115610ec65730610ebd886080015130611e7c565b91509150611449565b8651610ed757508290506000611449565b6111da565b80820281158282048414178402610efb5763ad251c276000526004601cfd5b9290920492915050565b600082821015610f1d576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610bd757610bd760607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72610f22565b6040516084810160405263052f523360e11b8152816004820152826024820152836044820152846064820152600080608483600073aa6fb20894554d57319c39bcc2468f72af099ea05af1905080610fef57610fef60577c13636c61696d20746f6b656e73206661696c6564000000000000000000610f22565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80611050576110506058740519d95d0818985b185b98d953d98819985a5b195960421b610f22565b60005189880161107b670de0b6b3a76400008361107684670de0b6b3a76400008e610edc565b610edc565b955050808511156110ae576110ae60597c15696e76616c696420616d6f756e74315363616c656400000000000000610f22565b8660088401528460288401526020600060446004860160008a5af1915081601f3d11600160005114161516156110e7573d863b15171591505b8161111457611114605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00610f22565b8815611189576111248582610f05565b93508860048401528360248401526020600060448560008a5af1915081601f3d116001600051141615161561115c573d863b15171591505b8161118957611189605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00610f22565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608087015160e088015160a089015160009190151589841460008051602061431b83398151915285148b15161761123357611233605b7c17746f6b656e20616e6420737263206e6f74206d617463680000000000610f22565b61010060008051602061431b833981519152851402601083028201019250505060008060008060408d015160a08e01516301c9c380818301111561129957611299605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400610f22565b60608f01519550808201633b9aca0003828c0204935060c08f01519450808201633b9aca0003818c02049250505084610100811461132c57610101811461134f57610110811461132c57610111811461134f57801561139557600181146113ac57601081146113da57601181146114065761132760526e0e696e76616c69642073746174757360701b610f22565b61143a565b6113368386610f3e565b611327858460008051602061431b833981519152611196565b6113598386610f3e565b611372858460008051602061431b833981519152611196565b61137c8285610f3e565b611327848360008051602061431b833981519152611196565b6113a183868e8a610f75565b611327858489611196565b6113b883868e8a610f75565b6113c3858489611196565b6113cf82858e8a610f75565b611327848389611196565b6113e683308e8a610f75565b6113f460008085888b610ff6565b5061140086828a611196565b5061143a565b611414828401308e8a610f75565b611421828585888b610ff6565b61142c87838b611196565b61143786828b611196565b50505b50505050505050836000915091505b9550959350505050565b6114668363a9059cbb60e01b8484611efc565b610bd75760405163fb7f507960e01b815260040160405180910390fd5b6000836020015161149657506000611870565b604084015160a08501516301c9c38081830111156114d6576114d6605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400610f22565b608086015160608701516040516060810160405260008051602061431b83398151915283146001811461172d57604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa8061155e5761155e6058740519d95d0818985b185b98d953d98819985a5b195960421b610f22565b6000518a81101561158257611582604d6a029cdd588819985a5b195960921b610f22565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d11600160005114161516156115cb573d873b15171591505b816115f8576115f8605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00610f22565b8685528960208601528560408601526000805160206142fb833981519152606086a187156116ba5760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d116001600051141615161561166c573d893b15171593505b8361169957611699605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00610f22565b888752602087015260408601526000805160206142fb833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156116f95750843b153d17155b806117265761172660607c1c7472616e7366657220746f6b656e207265636569766572206661696c610f22565b5050611869565b8747101561174e5761174e604d6a029cdd588819985a5b195960921b610f22565b874703633b9aca008782020497506000806000808b885af18061179357611793605d7c197472616e73666572206574682072656665726572206661696c000000610f22565b8584528860208501528460408501526000805160206142fb833981519152606085a186156118255760c08c0151633b9aca0083890204998a0199600080808084865af18061180357611803605d7c197472616e73666572206574682072656665726572206661696c000000610f22565b50878652602086015260408501526000805160206142fb833981519152606085a15b6000806000808c86038f60601b60601c5af190508061186657611866605e7c1a7472616e7366657220657468207265636569766572206661696c0000610f22565b50505b5050505050505b9392505050565b60006001600160a01b0385166118bd5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610133565b60006118c7610da0565b90506000806118f0836118e489600001516001600160a01b031690565b8c8b8b60400151610ea1565b9092509050896000611906898989858f89611b4c565b90506000611915868c86611483565b9050611921818361420e565b9d9c50505050505050505050505050565b60006001600160a01b0384166119785760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610133565b6000611982610da0565b905060008061199d836001600160a01b038d168a8a8e610ea1565b9150915060006119bb6001600160a01b038d168c8c8a8a8e89611f50565b90506000611915858a85611483565b6000806119d5610da0565b9050600034156119f4575060008051602061431b833981519152611b19565b60006001600160a01b0386866000818110611a1157611a116141a9565b905060200201351690506000600160ff1b87876000818110611a3557611a356141a9565b905060200201351660001490508015611ab157816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaa9190614221565b9250611b16565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b139190614221565b92505b50505b600080611b2984848d8d8d610ea1565b915091506000611b3d8c848c8c8c8c61276e565b90506000611915868d85611483565b60408601516000908790611bad5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610133565b805160208201516001600160a01b0391821691611bcb911685612c7d565b9250611bd681612d11565b15611c3e576004604360981b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c2157600080fd5b505af1158015611c35573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611c7a57898181518110611c5d57611c5d6141a9565b602002602001015182611c70919061423e565b9150600101611c42565b508260400151811115611ced5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610133565b508651885114611d315760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610133565b60005b8751811015611d9a57611d92878787611d5987602001516001600160a01b0316612d11565b8d8681518110611d6b57611d6b6141a9565b60200260200101518d8781518110611d8557611d856141a9565b6020026020010151612d2d565b600101611d34565b50611da9826020015185612ea5565b60208201518390611dc3906001600160a01b031686612c7d565b611dcd919061420e565b92508160600151831015611e1c5760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610133565b60208083015160408085015181516001600160a01b03808716825290931693830193909352329082015260608101919091526080810184905260008051602061433b8339815191529060a00160405180910390a150509695505050505050565b600060008051602061431b833981519152831460018114611ef057604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080611ee557611ee56058740519d95d0818985b185b98d953d98819985a5b195960421b610f22565b506000519150611ef5565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015611f48573d8015611f3e57600160005114601f3d11169150611f46565b6000863b1191505b505b949350505050565b600061218c565b828152600060206000600484600401865afa611f8c57611f8c6054700419d95d081d1bdad95b8819985a5b195960621b610f22565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa611fda57611fda605672049d1bdad95b8c0818d85b1b0819985a5b195960521b610f22565b600051915083836004015260206000602485855afa61201b5761201b60597c1562616c616e63654f662063616c6c206661696c656400000000000000610f22565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa611fda57611fda605672049d1bdad95b8c4818d85b1b0819985a5b195960521b610f22565b668b0367c240bc6b60c21b8152600060406000600484600401875afa6120b2576120b260587c1472657365727665732063616c6c206661696c65640000000000000000610f22565b6000516020518680156120de5789156120d6576120cf8786612027565b8390039650505b9091906120f5565b88156120f5576120ee8786611f97565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca00929092028201910204905084801561212f578160048401526000602484015261213d565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161218057612180605470041cddd85c0818d85b1b0819985a5b195960621b610f22565b98975050505050505050565b8460208502810185806121b3576121b3604e6b0b656d70747920706f6f6c7360901b610f22565b5060405182358b156001811461225d5734156121e9576121e960557111696e76616c6964206d73672e76616c756560581b610f22565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073aa6fb20894554d57319c39bcc2468f72af099ea05af1612258576122586056720498db185a5b481d1bdad95b8819985a5b195960521b610f22565b61231c565b60018c3410036122875761228760557111696e76616c6964206d73672e76616c756560581b610f22565b670a9059cbbd0e30db60c41b835260008060048086018f6004604360981b015af16122cd576122cd6056720499195c1bdcda5d081155120819985a5b195960521b610f22565b6001600160a01b03821683600401528b83602401526020600060448560006004604360981b015af161231c5761231c605874051d1c985b9cd9995c8815d155120819985a5b195960421b610f22565b508a9450602084015b8381101561237b57803561236f6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b61206a565b96509150602001612325565b5060009350600160fe1b811680156124c257600094506123c83063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a61206a565b9550672e1a7d4da9059cbb60c01b8352738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be60088401528560288401526020600060448560040160006004604360981b015af161243557612435605874051d1c985b9cd9995c8815d155120819985a5b195960421b610f22565b856004840152602060006024856000738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be5af16124875761248760577c13776974686472617720455448206661696c6564000000000000000000610f22565b600080600080898b5af16124bd576124bd60577c137472616e7366657220455448206661696c6564000000000000000000610f22565b612700565b60009350600160ff1b8216801561257457600160fc1b83161561256f576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa61252857612528605672049d1bdad95b8c0818d85b1b0819985a5b195960521b610f22565b600051955087846004015260206000602486895afa6125695761256960567c15746f6b656e302062616c616e6365206661696c656400000000000000610f22565b60005194505b612610565b600160fd1b831615612610576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa6125c9576125c9605672049d1bdad95b8c4818d85b1b0819985a5b195960521b610f22565b600051955087846004015260206000602486895afa61260a5761260a60597c15746f6b656e312062616c616e6365206661696c656400000000000000610f22565b60005194505b506126488763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a61206a565b955084600010600181146126b157600160ff1b83168015612689576126826770a082310dfe168160c01b6001600160a01b03861687611f57565b96506126ab565b6126a86770a08231d21220a760c01b6001600160a01b03861687611f57565b96505b506126fe565b6770a082310dfe168160c01b845287846004015260206000602486895afa6126f6576126f66058740519d95d0818985b185b98d953d98819985a5b195960421b610f22565b846000510396505b505b50508884101561273257612732605a7c164d696e2072657475726e206e6f742072656163686564000000000000610f22565b8a815282602082015232604082015289606082015283608082015260008051602061433b83398151915260a082a1505050979650505050505050565b6000612b7e565b6000856001600160ff1b03101561279757630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461282b57630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af18061281f5760206000fd5b5060206000803e61288e565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806128865760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156128b4576322323ba760e21b60005260046000fd5b1960010195945050505050565b6001813410036128dc57631841b4e160e01b60005260046000fd5b600080600080846004604360981b015af180610c0d57610c0d60577c1357455448206465706f736974206661696c6564000000000000000000610f22565b60405160048101672e1a7d4da9059cbb60c01b8252738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be600482015283602482015260008060448360006004604360981b015af19050806129905761299060587c147472616e736665722077657468206661696c65640000000000000000610f22565b8360048301526000806024846000738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be5af19050806129e4576129e460587c1477697468647261772077657468206661696c65640000000000000000610f22565b60008060008087875af1905080612a1557612a15605571045cd95b9908195d1a195c8819985a5b1959605a1b610f22565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080612a6a57612a6a6055710459d95d081d1bdad95b8c0819985a5b1959605a1b610f22565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080612a6a57612a6a6054710459d95d081d1bdad95b8c4819985a5b1959605a1b610f22565b60008051602061431b8339815191528034612b10578235600160ff1b81161560018114612b0157612afa82612a79565b9350612b0d565b612b0a82612a1b565b93505b50505b8335600160fd1b16612b4d578335600160ff1b81161560018114612b3e57612b3782612a1b565b9250612b4a565b612b4782612a79565b92505b50505b6040518260005281602052326040528560805260008051602061433b83398151915260a06000a16040525050505050565b82601f19602084028201018380612ba0576333f3e07b60e11b60005260046000fd5b5088600034118015612bb957612bb5896128c1565b309a505b5087606052825b82811015612be357612bd6898235848e30612775565b309b509850602001612bc0565b506000600160fd1b833516118060018114612c03578015612c2257612c33565b612c118a8535858f30612775565b9550612c1d868c61291a565b612c33565b612c308a8535858f8f612775565b95505b50505085831015612c6657612c66605a7c164d696e2072657475726e206e6f742072656163686564000000000000610f22565b612c71838284612aca565b50509695505050505050565b6000612c8883612d11565b15612c9e57506001600160a01b03811631612d0b565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015612ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d089190614190565b90505b92915050565b6001600160a01b031660008051602061431b8339815191521490565b6000612d5d82600081518110612d4557612d456141a9565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b81811015612e98578015612da957612d8e868281518110612d4557612d456141a9565b9450612da36001600160a01b03861630612c7d565b9650309a505b30612db560018461420e565b82148015612dc1575088155b15612dcd575088612e65565b612dd860018461420e565b82108015612e0e575086612ded83600161423e565b81518110612dfd57612dfd6141a9565b602002602001015160200151516001145b15612e605786612e1f83600161423e565b81518110612e2f57612e2f6141a9565b602002602001015160200151600081518110612e4d57612e4d6141a9565b6020026020010151905060019450612e65565b600094505b612e8c8c8c838b8b8781518110612e7e57612e7e6141a9565b60200260200101518961315f565b50839250600101612d6b565b5050505050505050505050565b612eb7826001600160a01b0316612d11565b156130d1576040516370a0823160e01b81523060048201526000906004604360981b01906370a0823190602401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190614190565b905080156130175760405163a9059cbb60e01b8152738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be6004820152602481018290526004604360981b019063a9059cbb906044016020604051808303816000875af1158015612f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb09190614251565b50604051632e1a7d4d60e01b815260048101829052738853a6dc8ba7d4d2053f0ad05a23431c30f3a0be90632e1a7d4d90602401600060405180830381600087803b158015612ffe57600080fd5b505af1158015613012573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610bd757478015612a15576000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461307b576040519150601f19603f3d011682016040523d82523d6000602084013e613080565b606091505b5050905080610fef5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610133565b6001600160a01b0381163014610c0d576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314c9190614190565b90508015610bd757610bd7838383611453565b6000805b83515181101561330c57600084604001518281518110613185576131856141a9565b602002602001015160001b90506000806000806131ac89608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506131d8828861423e565b8951519097506131ea9060019061420e565b8603613251576127108711156132515760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610133565b876132ac576000826127101461327d5761271061326e848d6141d5565b61327891906141ec565b61327f565b8a5b90506132aa8e8b60200151898151811061329b5761329b6141a9565b60200260200101518484613316565b505b50506132f681886000015186815181106132c8576132c86141a9565b60200260200101518b858b6060015189815181106132e8576132e86141a9565b60200260200101518f6133b6565b50505080806133049061426e565b915050613163565b5050505050505050565b306001600160a01b0385160361333657613331828483611453565b612a15565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273aa6fb20894554d57319c39bcc2468f72af099ea090630a5ea46690608401600060405180830381600087803b1580156133a257600080fd5b505af115801561330c573d6000803e3d6000fd5b85156134bb57600080866001600160a01b0316636f7929f260e01b8787876040516024016133e693929190614287565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526134346001600160a01b038616650f2882bf0b3360d21b61423e565b6040516020016134459291906142bc565b60408051601f198184030181529082905261345f916142de565b6000604051808303816000865af19150503d806000811461349c576040519150601f19603f3d011682016040523d82523d6000602084013e6134a1565b606091505b5091509150816134b4576134b4816135bb565b50506135b3565b600080866001600160a01b03166330e6ae3160e01b8787876040516024016134e593929190614287565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526135336001600160a01b038616650f2882bf0b3360d21b61423e565b6040516020016135449291906142bc565b60408051601f198184030181529082905261355e916142de565b6000604051808303816000865af19150503d806000811461359b576040519150601f19603f3d011682016040523d82523d6000602084013e6135a0565b606091505b50915091508161330c5761330c816135bb565b505050505050565b8051156135ca57805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610133565b50565b6000806040838503121561361e57600080fd5b50508035926020909101359150565b6001600160a01b038116811461360857600080fd5b803561364d8161362d565b919050565b600060a0828403121561366457600080fd5b50919050565b60008083601f84011261367c57600080fd5b5081356001600160401b0381111561369357600080fd5b6020830191508360208260051b85010111156136ae57600080fd5b9250929050565b60008060008060008060008060006101408a8c0312156136d457600080fd5b8935985060208a01356136e68161362d565b97506136f58b60408c01613652565b965060e08a01356001600160401b038082111561371157600080fd5b61371d8d838e0161366a565b90985096506101008c013591508082111561373757600080fd5b6137438d838e0161366a565b90965094506101208c013591508082111561375d57600080fd5b5061376a8c828d0161366a565b915080935050809150509295985092959850929598565b60008060008060008060a0878903121561379a57600080fd5b86359550602087013594506040870135935060608701356137ba8161362d565b925060808701356001600160401b038111156137d557600080fd5b6137e189828a0161366a565b979a9699509497509295939492505050565b60008060008060006080868803121561380b57600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561383657600080fd5b6138428882890161366a565b969995985093965092949392505050565b60005b8381101561386e578181015183820152602001613856565b50506000910152565b6000815180845261388f816020860160208601613853565b601f01601f19169290920160200192915050565b6020815260006118706020830184613877565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156138ee576138ee6138b6565b60405290565b60405161014081016001600160401b03811182821017156138ee576138ee6138b6565b604051601f8201601f191681016001600160401b038111828210171561393f5761393f6138b6565b604052919050565b600060a0828403121561395957600080fd5b6139616138cc565b90508135815260208201356139758161362d565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b038211156139b9576139b96138b6565b5060051b60200190565b600082601f8301126139d457600080fd5b813560206139e96139e4836139a0565b613917565b82815260059290921b84018101918181019086841115613a0857600080fd5b8286015b84811015613a235780358352918301918301613a0c565b509695505050505050565b600082601f830112613a3f57600080fd5b81356020613a4f6139e4836139a0565b82815260059290921b84018101918181019086841115613a6e57600080fd5b8286015b84811015613a23578035613a858161362d565b8352918301918301613a72565b600082601f830112613aa357600080fd5b81356001600160401b03811115613abc57613abc6138b6565b613acf601f8201601f1916602001613917565b818152846020838601011115613ae457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613b1257600080fd5b81356020613b226139e4836139a0565b82815260059290921b84018101918181019086841115613b4157600080fd5b8286015b84811015613a235780356001600160401b03811115613b645760008081fd5b613b728986838b0101613a92565b845250918301918301613b45565b6000613b8e6139e4846139a0565b838152905060208101600584901b8301851015613baa57600080fd5b825b8460051b8401811015613d1a576001600160401b038082351115613bcf57600080fd5b8135850187601f820112613be257600080fd5b613bef6139e482356139a0565b81358082526020808301929160051b8401018a811115613c0e57600080fd5b602084015b81811015613d03578581351115613c2957600080fd5b8035850160a0818e03601f19011215613c4157600080fd5b613c496138cc565b8760208301351115613c5a57600080fd5b613c6c8e602080850135850101613a2e565b81528760408301351115613c7f57600080fd5b613c928e60206040850135850101613a2e565b60208201528760608301351115613ca857600080fd5b613cbb8e602060608501358501016139c3565b60408201528760808301351115613cd157600080fd5b613ce48e60206080850135850101613b01565b606082015260a091909101356080820152845260209384019301613c13565b505085525050602092830192919091019050613bac565b50509392505050565b600082601f830112613d3457600080fd5b61187083833560208501613b80565b801515811461360857600080fd5b803561364d81613d43565b600082601f830112613d6d57600080fd5b81356020613d7d6139e4836139a0565b82815260059290921b84018101918181019086841115613d9c57600080fd5b8286015b84811015613a235780356001600160401b0380821115613dc05760008081fd5b90880190610140828b03601f1901811315613ddb5760008081fd5b613de36138f4565b8784013581526040613df6818601613642565b898301526060613e07818701613642565b8284015260809150613e1a828701613642565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120613e5c818701613d51565b83830152928501359284841115613e7557600091508182fd5b613e838e8b86890101613a92565b90830152508652505050918301918301613da0565b6000806000806000806101408789031215613eb257600080fd5b613ebc8888613947565b955060a08701356001600160401b0380821115613ed857600080fd5b613ee48a838b016139c3565b965060c0890135915080821115613efa57600080fd5b613f068a838b01613d23565b955060e0890135915080821115613f1c57600080fd5b50613f2989828a01613d5c565b935050610100870135613f3b8161362d565b9150610120870135613f4c8161362d565b809150509295509295509295565b600080600080600080600080610120898b031215613f7757600080fd5b88359750613f888a60208b01613652565b965060c08901356001600160401b0380821115613fa457600080fd5b613fb08c838d0161366a565b909850965060e08b0135915080821115613fc957600080fd5b613fd58c838d0161366a565b90965094506101008b0135915080821115613fef57600080fd5b50613ffc8b828c0161366a565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561402957600080fd5b6140338787613947565b945060a08601356001600160401b038082111561404f57600080fd5b61405b89838a016139c3565b955060c088013591508082111561407157600080fd5b61407d89838a01613d23565b945060e088013591508082111561409357600080fd5b506140a088828901613d5c565b9250506101008601356140b28161362d565b809150509295509295909350565b600080600080606085870312156140d657600080fd5b843593506020850135925060408501356001600160401b03808211156140fb57600080fd5b818701915087601f83011261410f57600080fd5b81358181111561411e57600080fd5b88602082850101111561413057600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a0828403121561417957600080fd5b6118708383613947565b6000611870368484613b80565b6000602082840312156141a257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417612d0b57612d0b6141bf565b60008261420957634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115612d0b57612d0b6141bf565b60006020828403121561423357600080fd5b81516118708161362d565b80820180821115612d0b57612d0b6141bf565b60006020828403121561426357600080fd5b815161187081613d43565b600060018201614280576142806141bf565b5060010190565b6001600160a01b038481168252831660208201526060604082018190526000906142b390830184613877565b95945050505050565b600083516142ce818460208801613853565b9190910191825250602001919050565b600082516142f0818460208701613853565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212204817f891013419255fb78ffd70eca71795a9685aaccfc2af8de3c2b4024ba18064736f6c63430008110033