69.9k txs
215.3k 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[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, 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)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, 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
0x608060405234801561001057600080fd5b50614efe806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa951461032b578063fa461e331461033e57600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d6101723660046140a8565b61035e565b61018a610185366004614152565b61038a565b6040519081526020015b60405180910390f35b61018a6101ab36600461421e565b61043b565b61018a6101be366004614290565b610561565b61018a6101d13660046142f0565b6105ba565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190614395565b61018a61022736600461498a565b6106e3565b34801561023857600080fd5b5061025473100f3f74125c8c724c7c0ee81e4dd5626830dd9a81565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b506102547340aa958dd87fc8305b97f2ba922cddca374bcd7f81565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba366004614290565b61093b565b61015d6102cd366004614a4c565b610955565b61018a6102e0366004614a8b565b610a82565b61018a6102f33660046142f0565b610adf565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b506102546006602160991b0181565b61018a610339366004614b41565b610cdf565b34801561034a57600080fd5b5061015d610359366004614bf1565b610cef565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038484338484610f3e565b50505050565b60008760800135428110156103b15760405162461bcd60e51b815260040161015490614c70565b6040518b8152600080516020614ea98339815191529060200160405180910390a161042c33808c6103e7368e90038e018e614c98565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042792508d91508e9050614cb4565b6112f9565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614ea98339815191529060200160405180910390a16000806104746000341186866113c2565b91509150600061048a8a6001600160a01b031690565b9050826001600160a01b0316816001600160a01b03161480156104c457506001600160a01b038316600080516020614e6983398151915214155b806104f757506001600160a01b0381161580156104f757506001600160a01b038316600080516020614e69833981519152145b6105435760405162461bcd60e51b815260206004820152601760248201527f756e78737761703a20746f6b656e206d69736d617463680000000000000000006044820152606401610154565b61055383838b8b338c8c8c6116c0565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614ea98339815191529060200160405180910390a160008061059a600034118686611795565b915091506105ae338984848b8b8b8b611a89565b98975050505050505050565b60008360800135428110156105e15760405162461bcd60e51b815260040161015490614c70565b604051878152600080516020614ea98339815191529060200160405180910390a1600080610613600034118787611795565b90925090506001600160a01b03821661063388356001600160a01b031690565b6001600160a01b031614801561066957506001600160a01b03811661065e6040890160208a01614cc1565b6001600160a01b0316145b6106b55760405162461bcd60e51b815260206004820152601960248201527f756e697377617056333a20746f6b656e206d69736d61746368000000000000006044820152606401610154565b6106d633896001600160a01b031684848b604001358c606001358c8c611a89565b9998505050505050505050565b600086608001514281101561070a5760405162461bcd60e51b815260040161015490614c70565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107705760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166107bf5760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b0385166108085760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b60008960400151116108535760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be9190614cde565b905060005b8951811015610925578a60400151828b83815181106108e4576108e4614cf7565b60200260200101516108f69190614d23565b6109009190614d3a565b8a828151811061091257610912614cf7565b60209081029190910101526001016108c3565b5060408a018190526105538a8a8a30898b611ad3565b600061094b86868633878761043b565b9695505050505050565b80608001354281101561097a5760405162461bcd60e51b815260040161015490614c70565b600082356001600160a01b038116600080516020614e698339815191521480156109c257506006602160991b016109b76040860160208701614cc1565b6001600160a01b0316145b156109d05760009150610a6a565b6001600160a01b0381166006602160991b01148015610a145750600080516020614e69833981519152610a096040860160208701614cc1565b6001600160a01b0316145b15610a225760019150610a6a565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610a7a8686848760400135610f3e565b505050505050565b6000876080013542811015610aa95760405162461bcd60e51b815260040161015490614c70565b6040518a8152600080516020614ea98339815191529060200160405180910390a16105533380806103e7368e90038e018e614c98565b6000836080013542811015610b065760405162461bcd60e51b815260040161015490614c70565b604051878152600080516020614ea98339815191529060200160405180910390a1600080610b386000341187876113c2565b90925090506001600160a01b038735811690831681148015610b7157506001600160a01b038316600080516020614e6983398151915214155b80610ba457506001600160a01b038116158015610ba457506001600160a01b038316600080516020614e69833981519152145b610bf05760405162461bcd60e51b815260206004820152601b60248201527f756e78737761703a2066726f6d546f6b656e206d69736d6174636800000000006044820152606401610154565b6001600160a01b038216610c0a60408a0160208b01614cc1565b6001600160a01b0316148015610c3757506001600160a01b038216600080516020614e6983398151915214155b80610c7b57506000610c4f60408a0160208b01614cc1565b6001600160a01b0316148015610c7b57506001600160a01b038216600080516020614e69833981519152145b610cc75760405162461bcd60e51b815260206004820152601960248201527f756e78737761703a20746f546f6b656e206d69736d61746368000000000000006044820152606401610154565b61055383838a604001358b60600135338e8d8d6116c0565b600061094b8686868686876106e3565b610d90565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610d2b57610d2b610cf4565b6000518015610d565760a435600483015260248201819052610d566020600060448582885af1610d5b565b505050565b80610d6857610d68610cf4565b600160005114601f3d11163d151780610d8c57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610dc757610dc7610cf4565b6020806004808501335afa610dde57610dde610cf4565b60206040600460088501335afa610df757610df7610cf4565b6000806000881360018114610e13576020519250879150610e1c565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610e9457635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610f0657826014860152836034860152336054860152816074860152610f0160206000608460108901600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af1610d5b565b610f33565b336010860152816030860152610f29602060006044600c89016000885af1610d5b565b610f338386610cfe565b505050505050505050565b60008111610f835760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b6000610f8d611e03565b9050600083610faa57600080516020614e69833981519152610fb3565b6006602160991b015b9050600084610fc9576006602160991b01610fd9565b600080516020614e698339815191525b9050610fe6838383611f04565b600080610ff585338a89611fb6565b9150915086156111b05760405163052f523360e11b81526006602160991b0160048201523360248201527340aa958dd87fc8305b97f2ba922cddca374bcd7f60448201526064810187905273100f3f74125c8c724c7c0ee81e4dd5626830dd9a90630a5ea46690608401600060405180830381600087803b15801561107957600080fd5b505af115801561108d573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b8152600481018990527340aa958dd87fc8305b97f2ba922cddca374bcd7f9250632e1a7d4d9150602401600060405180830381600087803b1580156110de57600080fd5b505af11580156110f2573d6000803e3d6000fd5b505050506001600160a01b03821630146111ab576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114611153576040519150601f19603f3d011682016040523d82523d6000602084013e611158565b606091505b50509050806111a95760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b61127c565b84516111fe578534146111fe5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b6006602160991b016001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561124057600080fd5b505af1158015611254573d6000803e3d6000fd5b505050506001600160a01b0383163014905061127c5761127c6006602160991b018388612513565b611287858983612543565b50604051898152600080516020614ea98339815191529060200160405180910390a1604080516001600160a01b03868116825285166020820152328183015260608101889052608081018890529051600080516020614e898339815191529181900360a00190a1505050505050505050565b60006001600160a01b03851661133f5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611349611e03565b905061136d8161136387600001516001600160a01b031690565b8760200151611f04565b600080611380838b8a8a60400151611fb6565b9092509050896000611396898989858f89611ad3565b905060006113a5868c86612543565b90506113b18183614d5c565b9d9c50505050505050505050505050565b600080826114125760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061142f5761142f614cf7565b9050602002013560001c1690506000600160ff1b8686600081811061145657611456614cf7565b9050602002013560001c16600014159050806114d357816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ce9190614d6f565b611535565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115359190614d6f565b93506001600160a01b0384166006602160991b011480156115535750865b1561156a57600080516020614e6983398151915293505b60008686611579600182614d5c565b81811061158857611588614cf7565b60200291909101359150506001600160a01b038116600160ff1b821615158061161257816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160d9190614d6f565b611674565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116749190614d6f565b9550600160fe1b831615156001600160a01b0387166006602160991b0114801561169b5750805b156116b257600080516020614e6983398151915296505b505050505050935093915050565b60006001600160a01b0384166117065760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611710611e03565b905061171d818b8b611f04565b60008061172c8389898d611fb6565b909250905060006117686001600160a01b038e16600080516020614e698339815191521461175a578d61175d565b60005b8c8c8a8a8e89612937565b90506000611777858a85612543565b90506117838183614d5c565b9e9d5050505050505050505050505050565b600080826117e55760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061180257611802614cf7565b905060200201351690506000600160ff1b8686600081811061182657611826614cf7565b905060200201351660001490508061189f57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190614d6f565b611901565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119019190614d6f565b93506001600160a01b0384166006602160991b0114801561191f5750865b1561193657600080516020614e6983398151915293505b60008686611945600182614d5c565b81811061195457611954614cf7565b60200291909101359150506001600160a01b038116600160ff1b821615806119dd57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d89190614d6f565b611a3f565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f9190614d6f565b9550600160fd1b831615156001600160a01b0387166006602160991b0114801561169b575080156116b257600080516020614e698339815191529650505050505050935093915050565b600080611a94611e03565b9050611aa1818989611f04565b600080611ab0838d8d8b611fb6565b915091506000611ac48d848b8b8b8b613149565b90506000611777858e85612543565b60408601516000908790611b345760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b0391821691611b52911685613652565b9250611b5d816136e6565b15611bc5576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ba857600080fd5b505af1158015611bbc573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611c0157898181518110611be457611be4614cf7565b602002602001015182611bf79190614d8c565b9150600101611bc9565b508260400151811115611c745760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b508651885114611cb85760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b8751811015611d2157611d19878787611ce087602001516001600160a01b03166136e6565b8d8681518110611cf257611cf2614cf7565b60200260200101518d8781518110611d0c57611d0c614cf7565b6020026020010151613702565b600101611cbb565b50611d3082602001518561387a565b60208201518390611d4a906001600160a01b031686613652565b611d549190614d5c565b92508160600151831015611da35760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614e898339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611ed25760008560a0015260008560c00152611efd565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611f275750816001600160a01b031683608001516001600160a01b0316145b80611f53575082602001518015611f535750806001600160a01b031683608001516001600160a01b0316145b80611f6a57508251158015611f6a57508260200151155b610d565760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420636f6d6d697373696f6e20696e666f0000000000000000006044820152606401610154565b600080856020015115611fdb5730611fd2876080015130613b34565b9150915061250a565b8551611fec5750829050600061250a565b6122ef565b808202811582820484141784026120105763ad251c276000526004601cfd5b9290920492915050565b600082821015612032576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610d5657610d5660607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72612037565b6040516084810160405263052f523360e11b8152816004820152826024820152836044820152846064820152600080608483600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af19050806121045761210460577c13636c61696d20746f6b656e73206661696c6564000000000000000000612037565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612165576121656058740519d95d0818985b185b98d953d98819985a5b195960421b612037565b600051898801612190670de0b6b3a76400008361218b84670de0b6b3a76400008e611ff1565b611ff1565b955050808511156121c3576121c360597c15696e76616c696420616d6f756e74315363616c656400000000000000612037565b8660088401528460288401526020600060446004860160008a5af1915081601f3d11600160005114161516156121fc573d863b15171591505b8161222957612229605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612037565b881561229e57612239858261201a565b93508860048401528360248401526020600060448560008a5af1915081601f3d1160016000511416151615612271573d863b15171591505b8161229e5761229e605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612037565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020614e698339815191528414610100020191600091829182918291906301c9c380828201111561236357612363605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612037565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a020490508461010081146123ed5761010181146124105761011081146123ed576101118114612410578015612456576001811461246d576010811461249b57601181146124c7576123e860526e0e696e76616c69642073746174757360701b612037565b6124fb565b6123f78386612053565b6123e88584600080516020614e698339815191526122ab565b61241a8386612053565b6124338584600080516020614e698339815191526122ab565b61243d8285612053565b6123e88483600080516020614e698339815191526122ab565b61246283868e8a61208a565b6123e88584896122ab565b61247983868e8a61208a565b6124848584896122ab565b61249082858e8a61208a565b6123e88483896122ab565b6124a783308e8a61208a565b6124b560008085888b61210b565b506124c186828a6122ab565b506124fb565b6124d5828401308e8a61208a565b6124e2828585888b61210b565b6124ed87838b6122ab565b6124f886828b6122ab565b50505b50505050505050836000915091505b94509492505050565b6125268363a9059cbb60e01b8484613bb4565b610d565760405163fb7f507960e01b815260040160405180910390fd5b6000836020015161255657506000612930565b604084015160a08501516301c9c380818301111561259657612596605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612037565b6080860151606087015160405160608101604052600080516020614e698339815191528314600181146127ed57604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa8061261e5761261e6058740519d95d0818985b185b98d953d98819985a5b195960421b612037565b6000518a81101561264257612642604d6a029cdd588819985a5b195960921b612037565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d116001600051141615161561268b573d873b15171591505b816126b8576126b8605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612037565b868552896020860152856040860152600080516020614e49833981519152606086a1871561277a5760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d116001600051141615161561272c573d893b15171593505b8361275957612759605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612037565b88875260208701526040860152600080516020614e49833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156127b95750843b153d17155b806127e6576127e660607c1c7472616e7366657220746f6b656e207265636569766572206661696c612037565b5050612929565b8747101561280e5761280e604d6a029cdd588819985a5b195960921b612037565b874703633b9aca008782020497506000806000808b885af18061285357612853605d7c197472616e73666572206574682072656665726572206661696c000000612037565b858452886020850152846040850152600080516020614e49833981519152606085a186156128e55760c08c0151633b9aca0083890204998a0199600080808084865af1806128c3576128c3605d7c197472616e73666572206574682072656665726572206661696c000000612037565b5087865260208601526040850152600080516020614e49833981519152606085a15b6000806000808c86038f60601b60601c5af190508061292657612926605e7c1a7472616e7366657220657468207265636569766572206661696c0000612037565b50505b5050505050505b9392505050565b6000612b67565b828152600060206000600484600401865afa612973576129736054700419d95d081d1bdad95b8819985a5b195960621b612037565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa6129c1576129c1605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612037565b600051915083836004015260206000602485855afa612a0257612a0260597c1562616c616e63654f662063616c6c206661696c656400000000000000612037565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa6129c1576129c1605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612037565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612a9957612a9960587c1472657365727665732063616c6c206661696c65640000000000000000612037565b600051602051868015612ac5578915612abd57612ab68786612a0e565b8390039650505b909190612adc565b8815612adc57612ad5878661297e565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612b165781600484015260006024840152612b24565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16105ae576105ae605470041cddd85c0818d85b1b0819985a5b195960621b612037565b846020850281018580612b8e57612b8e604e6b0b656d70747920706f6f6c7360901b612037565b5060405182358b1560018114612c38573415612bc457612bc460557111696e76616c6964206d73672e76616c756560581b612037565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af1612c3357612c336056720498db185a5b481d1bdad95b8819985a5b195960521b612037565b612cf7565b60018c341003612c6257612c6260557111696e76616c6964206d73672e76616c756560581b612037565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1612ca857612ca86056720499195c1bdcda5d081155120819985a5b195960521b612037565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af1612cf757612cf7605874051d1c985b9cd9995c8815d155120819985a5b195960421b612037565b508a9450602084015b83811015612d56578035612d4a6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612a51565b96509150602001612d00565b5060009350600160fe1b81168015612e9d5760009450612da33063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a51565b9550672e1a7d4da9059cbb60c01b83527340aa958dd87fc8305b97f2ba922cddca374bcd7f60088401528560288401526020600060448560040160006006602160991b015af1612e1057612e10605874051d1c985b9cd9995c8815d155120819985a5b195960421b612037565b8560048401526020600060248560007340aa958dd87fc8305b97f2ba922cddca374bcd7f5af1612e6257612e6260577c13776974686472617720455448206661696c6564000000000000000000612037565b600080600080898b5af1612e9857612e9860577c137472616e7366657220455448206661696c6564000000000000000000612037565b6130db565b60009350600160ff1b82168015612f4f57600160fc1b831615612f4a576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612f0357612f03605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612037565b600051955087846004015260206000602486895afa612f4457612f4460567c15746f6b656e302062616c616e6365206661696c656400000000000000612037565b60005194505b612feb565b600160fd1b831615612feb576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612fa457612fa4605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612037565b600051955087846004015260206000602486895afa612fe557612fe560597c15746f6b656e312062616c616e6365206661696c656400000000000000612037565b60005194505b506130238763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a51565b9550846000106001811461308c57600160ff1b831680156130645761305d6770a082310dfe168160c01b6001600160a01b0386168761293e565b9650613086565b6130836770a08231d21220a760c01b6001600160a01b0386168761293e565b96505b506130d9565b6770a082310dfe168160c01b845287846004015260206000602486895afa6130d1576130d16058740519d95d0818985b185b98d953d98819985a5b195960421b612037565b846000510396505b505b50508884101561310d5761310d605a7c164d696e2072657475726e206e6f742072656163686564000000000000612037565b8a8152826020820152326040820152896060820152836080820152600080516020614e8983398151915260a082a1505050979650505050505050565b6000613553565b6000856001600160ff1b03101561317257630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461320657630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806131fa5760206000fd5b5060206000803e613269565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132615760206000fd5b5060208060003e5b505050506000519050600160ff1b81101561328f576322323ba760e21b60005260046000fd5b1960010195945050505050565b6001813410036132b757631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af180610d8c57610d8c60577c1357455448206465706f736974206661696c6564000000000000000000612037565b60405160048101672e1a7d4da9059cbb60c01b82527340aa958dd87fc8305b97f2ba922cddca374bcd7f600482015283602482015260008060448360006006602160991b015af190508061336b5761336b60587c147472616e736665722077657468206661696c65640000000000000000612037565b83600483015260008060248460007340aa958dd87fc8305b97f2ba922cddca374bcd7f5af19050806133bf576133bf60587c1477697468647261772077657468206661696c65640000000000000000612037565b60008060008087875af190508061038457610384605571045cd95b9908195d1a195c8819985a5b1959605a1b612037565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa90508061343f5761343f6055710459d95d081d1bdad95b8c0819985a5b1959605a1b612037565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa90508061343f5761343f6054710459d95d081d1bdad95b8c4819985a5b1959605a1b612037565b600080516020614e6983398151915280346134e5578235600160ff1b811615600181146134d6576134cf8261344e565b93506134e2565b6134df826133f0565b93505b50505b8335600160fd1b16613522578335600160ff1b811615600181146135135761350c826133f0565b925061351f565b61351c8261344e565b92505b50505b60405182600052816020523260405285608052600080516020614e8983398151915260a06000a16040525050505050565b82601f19602084028201018380613575576333f3e07b60e11b60005260046000fd5b508860003411801561358e5761358a8961329c565b309a505b5087606052825b828110156135b8576135ab898235848e30613150565b309b509850602001613595565b506000600160fd1b8335161180600181146135d85780156135f757613608565b6135e68a8535858f30613150565b95506135f2868c6132f5565b613608565b6136058a8535858f8f613150565b95505b5050508583101561363b5761363b605a7c164d696e2072657475726e206e6f742072656163686564000000000000612037565b61364683828461349f565b50509695505050505050565b600061365d836136e6565b1561367357506001600160a01b038116316136e0565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156136b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136dd9190614cde565b90505b92915050565b6001600160a01b0316600080516020614e698339815191521490565b60006137328260008151811061371a5761371a614cf7565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b8181101561386d57801561377e5761376386828151811061371a5761371a614cf7565b94506137786001600160a01b03861630613652565b9650309a505b3061378a600184614d5c565b82148015613796575088155b156137a257508861383a565b6137ad600184614d5c565b821080156137e35750866137c2836001614d8c565b815181106137d2576137d2614cf7565b602002602001015160200151516001145b1561383557866137f4836001614d8c565b8151811061380457613804614cf7565b60200260200101516020015160008151811061382257613822614cf7565b602002602001015190506001945061383a565b600094505b6138618c8c838b8b878151811061385357613853614cf7565b602002602001015189613c08565b50839250600101613740565b5050505050505050505050565b61388c826001600160a01b03166136e6565b15613aa6576040516370a0823160e01b81523060048201526000906006602160991b01906370a0823190602401602060405180830381865afa1580156138d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fa9190614cde565b905080156139ec5760405163a9059cbb60e01b81527340aa958dd87fc8305b97f2ba922cddca374bcd7f6004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af1158015613961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139859190614d9f565b50604051632e1a7d4d60e01b8152600481018290527340aa958dd87fc8305b97f2ba922cddca374bcd7f90632e1a7d4d90602401600060405180830381600087803b1580156139d357600080fd5b505af11580156139e7573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610d5657478015610384576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613a50576040519150601f19603f3d011682016040523d82523d6000602084013e613a55565b606091505b50509050806121045760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610d8c576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b219190614cde565b90508015610d5657610d56838383612513565b6000600080516020614e69833981519152831460018114613ba857604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613b9d57613b9d6058740519d95d0818985b185b98d953d98819985a5b195960421b612037565b506000519150613bad565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015613c00573d8015613bf657600160005114601f3d11169150613bfe565b6000863b1191505b505b949350505050565b6000805b835151811015613db557600084604001518281518110613c2e57613c2e614cf7565b602002602001015160001b9050600080600080613c5589608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c1692509050613c818288614d8c565b895151909750613c9390600190614d5c565b8603613cfa57612710871115613cfa5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b87613d555760008261271014613d2657612710613d17848d614d23565b613d219190614d3a565b613d28565b8a5b9050613d538e8b602001518981518110613d4457613d44614cf7565b60200260200101518484613dbf565b505b5050613d9f8188600001518681518110613d7157613d71614cf7565b60200260200101518b858b606001518981518110613d9157613d91614cf7565b60200260200101518f613e5f565b5050508080613dad90614dbc565b915050613c0c565b5050505050505050565b306001600160a01b03851603613ddf57613dda828483612513565b610384565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273100f3f74125c8c724c7c0ee81e4dd5626830dd9a90630a5ea46690608401600060405180830381600087803b158015613e4b57600080fd5b505af1158015613db5573d6000803e3d6000fd5b8515613f6457600080866001600160a01b0316636f7929f260e01b878787604051602401613e8f93929190614dd5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613edd6001600160a01b038616650f2882bf0b3360d21b614d8c565b604051602001613eee929190614e0a565b60408051601f1981840301815290829052613f0891614e2c565b6000604051808303816000865af19150503d8060008114613f45576040519150601f19603f3d011682016040523d82523d6000602084013e613f4a565b606091505b509150915081613f5d57613f5d81614058565b5050610a7a565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613f8e93929190614dd5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613fdc6001600160a01b038616650f2882bf0b3360d21b614d8c565b604051602001613fed929190614e0a565b60408051601f198184030181529082905261400791614e2c565b6000604051808303816000865af19150503d8060008114614044576040519150601f19603f3d011682016040523d82523d6000602084013e614049565b606091505b509150915081613db557613db5815b80511561406757805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b600080604083850312156140bb57600080fd5b50508035926020909101359150565b6001600160a01b03811681146140a557600080fd5b80356140ea816140ca565b919050565b600060a0828403121561410157600080fd5b50919050565b60008083601f84011261411957600080fd5b5081356001600160401b0381111561413057600080fd5b6020830191508360208260051b850101111561414b57600080fd5b9250929050565b60008060008060008060008060006101408a8c03121561417157600080fd5b8935985060208a0135614183816140ca565b97506141928b60408c016140ef565b965060e08a01356001600160401b03808211156141ae57600080fd5b6141ba8d838e01614107565b90985096506101008c01359150808211156141d457600080fd5b6141e08d838e01614107565b90965094506101208c01359150808211156141fa57600080fd5b506142078c828d01614107565b915080935050809150509295985092959850929598565b60008060008060008060a0878903121561423757600080fd5b8635955060208701359450604087013593506060870135614257816140ca565b925060808701356001600160401b0381111561427257600080fd5b61427e89828a01614107565b979a9699509497509295939492505050565b6000806000806000608086880312156142a857600080fd5b85359450602086013593506040860135925060608601356001600160401b038111156142d357600080fd5b6142df88828901614107565b969995985093965092949392505050565b6000806000806000610100868803121561430957600080fd5b85359450602086013561431b816140ca565b935061432a87604088016140ef565b925060e08601356001600160401b038111156142d357600080fd5b60005b83811015614360578181015183820152602001614348565b50506000910152565b60008151808452614381816020860160208601614345565b601f01601f19169290920160200192915050565b6020815260006129306020830184614369565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156143e0576143e06143a8565b60405290565b60405161014081016001600160401b03811182821017156143e0576143e06143a8565b604051601f8201601f191681016001600160401b0381118282101715614431576144316143a8565b604052919050565b600060a0828403121561444b57600080fd5b6144536143be565b9050813581526020820135614467816140ca565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b038211156144ab576144ab6143a8565b5060051b60200190565b600082601f8301126144c657600080fd5b813560206144db6144d683614492565b614409565b82815260059290921b840181019181810190868411156144fa57600080fd5b8286015b8481101561451557803583529183019183016144fe565b509695505050505050565b600082601f83011261453157600080fd5b813560206145416144d683614492565b82815260059290921b8401810191818101908684111561456057600080fd5b8286015b84811015614515578035614577816140ca565b8352918301918301614564565b600082601f83011261459557600080fd5b81356001600160401b038111156145ae576145ae6143a8565b6145c1601f8201601f1916602001614409565b8181528460208386010111156145d657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261460457600080fd5b813560206146146144d683614492565b82815260059290921b8401810191818101908684111561463357600080fd5b8286015b848110156145155780356001600160401b038111156146565760008081fd5b6146648986838b0101614584565b845250918301918301614637565b60006146806144d684614492565b838152905060208101600584901b830185101561469c57600080fd5b825b8460051b840181101561480c576001600160401b0380823511156146c157600080fd5b8135850187601f8201126146d457600080fd5b6146e16144d68235614492565b81358082526020808301929160051b8401018a81111561470057600080fd5b602084015b818110156147f557858135111561471b57600080fd5b8035850160a0818e03601f1901121561473357600080fd5b61473b6143be565b876020830135111561474c57600080fd5b61475e8e602080850135850101614520565b8152876040830135111561477157600080fd5b6147848e60206040850135850101614520565b6020820152876060830135111561479a57600080fd5b6147ad8e602060608501358501016144b5565b604082015287608083013511156147c357600080fd5b6147d68e602060808501358501016145f3565b606082015260a091909101356080820152845260209384019301614705565b50508552505060209283019291909101905061469e565b50509392505050565b600082601f83011261482657600080fd5b61293083833560208501614672565b80151581146140a557600080fd5b80356140ea81614835565b600082601f83011261485f57600080fd5b8135602061486f6144d683614492565b82815260059290921b8401810191818101908684111561488e57600080fd5b8286015b848110156145155780356001600160401b03808211156148b25760008081fd5b90880190610140828b03601f19018113156148cd5760008081fd5b6148d56143e6565b87840135815260406148e88186016140df565b8983015260606148f98187016140df565b828401526080915061490c8287016140df565b818401525060a0808601358284015260c0915081860135818401525060e08086013582840152610100915081860135818401525061012061494e818701614843565b8383015292850135928484111561496757600091508182fd5b6149758e8b86890101614584565b90830152508652505050918301918301614892565b60008060008060008061014087890312156149a457600080fd5b6149ae8888614439565b955060a08701356001600160401b03808211156149ca57600080fd5b6149d68a838b016144b5565b965060c08901359150808211156149ec57600080fd5b6149f88a838b01614815565b955060e0890135915080821115614a0e57600080fd5b50614a1b89828a0161484e565b935050610100870135614a2d816140ca565b9150610120870135614a3e816140ca565b809150509295509295509295565b600080600060e08486031215614a6157600080fd5b833592506020840135614a73816140ca565b9150614a8285604086016140ef565b90509250925092565b600080600080600080600080610120898b031215614aa857600080fd5b88359750614ab98a60208b016140ef565b965060c08901356001600160401b0380821115614ad557600080fd5b614ae18c838d01614107565b909850965060e08b0135915080821115614afa57600080fd5b614b068c838d01614107565b90965094506101008b0135915080821115614b2057600080fd5b50614b2d8b828c01614107565b999c989b5096995094979396929594505050565b60008060008060006101208688031215614b5a57600080fd5b614b648787614439565b945060a08601356001600160401b0380821115614b8057600080fd5b614b8c89838a016144b5565b955060c0880135915080821115614ba257600080fd5b614bae89838a01614815565b945060e0880135915080821115614bc457600080fd5b50614bd18882890161484e565b925050610100860135614be3816140ca565b809150509295509295909350565b60008060008060608587031215614c0757600080fd5b843593506020850135925060408501356001600160401b0380821115614c2c57600080fd5b818701915087601f830112614c4057600080fd5b813581811115614c4f57600080fd5b886020828501011115614c6157600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215614caa57600080fd5b6129308383614439565b6000612930368484614672565b600060208284031215614cd357600080fd5b8135612930816140ca565b600060208284031215614cf057600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176136e0576136e0614d0d565b600082614d5757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156136e0576136e0614d0d565b600060208284031215614d8157600080fd5b8151612930816140ca565b808201808211156136e0576136e0614d0d565b600060208284031215614db157600080fd5b815161293081614835565b600060018201614dce57614dce614d0d565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614e0190830184614369565b95945050505050565b60008351614e1c818460208801614345565b9190910191825250602001919050565b60008251614e3e818460208701614345565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212207c0dd6691f6c8c1540eaecd9bddb198e2eeed6dcb7b2b1052bb2b9127263976064736f6c63430008110033