1 tx
2 calls
constructor
constructor(address _owner, address _weth, address _wooRouter, address _sgInfo)
functions
bridgeSlippage
viewfunction bridgeSlippage() view returns (uint256)
dstExternalFeeRate
viewfunction dstExternalFeeRate() view returns (uint16)
ETH_PLACEHOLDER_ADDR
viewfunction ETH_PLACEHOLDER_ADDR() view returns (address)
FEE_BASE
viewfunction FEE_BASE() view returns (uint256)
feeAddr
viewfunction feeAddr() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
quoteLayerZeroFee
viewfunction quoteLayerZeroFee(uint256 refId, address to, tuple srcInfos, tuple dstInfos, tuple dstExtSwapInfo) view returns (uint256, uint256)
sgInfo
viewfunction sgInfo() view returns (address)
srcExternalFeeRate
viewfunction srcExternalFeeRate() view returns (uint16)
weth
viewfunction weth() view returns (address)
wooCrossRouters
viewfunction wooCrossRouters(uint32) view returns (address)
wooRouter
viewfunction wooRouter() view returns (address)
claimFee
nonpayablefunction claimFee(address token)
crossSwap
payablefunction crossSwap(uint256 refId, address to, tuple srcInfos, tuple dstInfos, tuple srcExtSwapInfo, tuple dstExtSwapInfo) payable
inCaseTokenGotStuck
nonpayablefunction inCaseTokenGotStuck(address stuckToken)
lzCompose
payablefunction lzCompose(address _from, bytes32, bytes _message, address, bytes) payable
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setBridgeSlippage
nonpayablefunction setBridgeSlippage(uint256 _bridgeSlippage)
setFeeAddr
nonpayablefunction setFeeAddr(address _feeAddr)
setWooCrossRouter
nonpayablefunction setWooCrossRouter(uint32 _eid, address _crossRouter)
setWooRouter
nonpayablefunction setWooRouter(address _wooRouter)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
WooCrossSwapOnDstChain
event WooCrossSwapOnDstChain(uint256 indexed refId, address indexed sender, address indexed to, address bridgedToken, uint256 bridgedAmount, address toToken, address realToToken, uint256 minToAmount, uint256 realToAmount, uint8 swapType, uint256 fee)
WooCrossSwapOnSrcChain
event WooCrossSwapOnSrcChain(uint256 indexed refId, address indexed sender, address indexed to, address fromToken, uint256 fromAmount, address bridgeToken, uint256 minBridgeAmount, uint256 realBridgeAmount, uint8 swapType, uint256 fee)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidOptionType
error InvalidOptionType(uint16 optionType)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162004e7238038062004e7283398101604081905262000034916200013f565b836001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f81620000d2565b506000805460ff60a01b19169055600180556001600160a01b03928316608052600280549284166001600160a01b031993841617905560038054919093169116179055506064600555600680546219001963ffffffff199091161790556200019c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013a57600080fd5b919050565b600080600080608085870312156200015657600080fd5b620001618562000122565b9350620001716020860162000122565b9250620001816040860162000122565b9150620001916060860162000122565b905092959194509250565b608051614c586200021a6000396000818161026e01528181612b3f01528181612bc001528181612c1601528181612ca501528181612d6501528181612deb01528181612e9c01528181612ede01528181612f6d01528181613153015281816131cf0152818161328d015281816132cf015261335e0152614c586000f3fe60806040526004361061019a5760003560e01c806383af5550116100e1578063d0a102601161008a578063ecb911de11610064578063ecb911de146104e3578063ecefc705146104fe578063f2fde38b14610515578063fdeba4e51461053557600080fd5b8063d0a1026014610490578063d6b4c897146104a3578063e1a4e72a146104c357600080fd5b80638da5cb5b116100bb5780638da5cb5b14610411578063b2855b4f1461043c578063b92921411461045c57600080fd5b806383af5550146103b05780638456cb59146103d457806388c4cb36146103e957600080fd5b80634dba39a21161014357806369d2299c1161011d57806369d2299c146103385780636ebc51e11461037b578063715018a61461039b57600080fd5b80634dba39a2146102b057806358800adf146102d05780635c975abb146102fd57600080fd5b80633f4ba83a116101745780633f4ba83a146102475780633fc8cef31461025c578063403a01e51461029057600080fd5b8063117acd17146101a65780631b445c61146101e057806339e7fddc146101f557600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101c66101c1366004613f93565b610562565b604080519283526020830191909152015b60405180910390f35b6101f36101ee366004614105565b6108c6565b005b34801561020157600080fd5b506004546102229073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d7565b34801561025357600080fd5b506101f36112d5565b34801561026857600080fd5b506102227f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c57600080fd5b506101f36102ab36600461420e565b6112e7565b3480156102bc57600080fd5b506101f36102cb366004614227565b611386565b3480156102dc57600080fd5b506003546102229073ffffffffffffffffffffffffffffffffffffffff1681565b34801561030957600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020016101d7565b34801561034457600080fd5b5061022261035336600461425d565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038757600080fd5b506101f3610396366004614227565b611478565b3480156103a757600080fd5b506101f36115aa565b3480156103bc57600080fd5b506103c660055481565b6040519081526020016101d7565b3480156103e057600080fd5b506101f36115bc565b3480156103f557600080fd5b5061022273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561041d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610222565b34801561044857600080fd5b506101f3610457366004614227565b6115cc565b34801561046857600080fd5b5060065461047d9062010000900461ffff1681565b60405161ffff90911681526020016101d7565b6101f361049e3660046142c3565b61161b565b3480156104af57600080fd5b506101f36104be366004614364565b611a2e565b3480156104cf57600080fd5b506101f36104de366004614227565b611b33565b3480156104ef57600080fd5b5060065461047d9061ffff1681565b34801561050a57600080fd5b506103c6620186a081565b34801561052157600080fd5b506101f3610530366004614227565b611c24565b34801561054157600080fd5b506002546102229073ffffffffffffffffffffffffffffffffffffffff1681565b6000808087876105786040880160208901614227565b6105886060890160408a01614227565b8860600135886040516020016105a39695949392919061448b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600061063c816105e960c0890160a08a016144e4565b6105f960a08a0160808b016144e4565b604080517e030000000000000000000000000000000000000000000000000000000000006020820152815180820360020181526022909101909152929190611c85565b6040805160e081019091529091506000908061065b60208a018a61425d565b63ffffffff1681526020016106b0600760008b6000016020810190610680919061425d565b63ffffffff16815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690565b81526040808b01356020808401919091526060808d01358385015283018690526080830187905281518082018352600080825260a09094015260035482517f42407dc40000000000000000000000000000000000000000000000000000000081529251949550929373ffffffffffffffffffffffffffffffffffffffff9093169263bb0d15fe9284926342407dc4926004808401938290030181865afa15801561075e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107829190614516565b61079260408d0160208e01614227565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b9190614533565b905060008173ffffffffffffffffffffffffffffffffffffffff16633b6f743b8460006040518363ffffffff1660e01b815260040161086b929190614634565b6040805180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab9190614688565b8051602090910151909d909c509a5050505050505050505050565b6108ce611d08565b6108d6611d5d565b73ffffffffffffffffffffffffffffffffffffffff8516610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f576f6f43726f7373436861696e526f7574657256353a2021746f00000000000060448201526064015b60405180910390fd5b835173ffffffffffffffffffffffffffffffffffffffff166109fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e66726f6d546f6b656e00000000000000000000000000000000000000000000606482015260840161094f565b6000610a0e6060850160408601614227565b73ffffffffffffffffffffffffffffffffffffffff1603610ab1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f576f6f43726f7373436861696e526f7574657256353a2021647374496e666f7360448201527f2e746f546f6b656e000000000000000000000000000000000000000000000000606482015260840161094f565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163bb0d15fe9183916342407dc49160048083019260209291908290030181865afa158015610b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4d9190614516565b60208801516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610beb9190614533565b73ffffffffffffffffffffffffffffffffffffffff1603610c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e627269646765546f6b656e0000000000000000000000000000000000000000606482015260840161094f565b8351600090819073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff111111111111111111111111111111111111111201610d6a573486604001511115610d65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e66726f6d416d6f756e74000000000000000000000000000000000000000000606482015260840161094f565b610d7e565b610d7e866000015133308960400151611da0565b856020015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff1614610fcc5785516002546040880151610de4929173ffffffffffffffffffffffffffffffffffffffff1690611f11565b6000610df36020860186614227565b73ffffffffffffffffffffffffffffffffffffffff1614610efd5760025473ffffffffffffffffffffffffffffffffffffffff1663199b83fa34610e3a6020880188614227565b610e476020890189614227565b8a600001518b602001518c604001518d60600151308d8060200190610e6c91906146a4565b6040518b63ffffffff1660e01b8152600401610e9099989796959493929190614709565b60206040518083038185885af1158015610eae573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ed39190614778565b600654909250620186a090610eec9061ffff16846147c0565b610ef691906147d7565b905061106b565b600254865160208801516040808a015160608b015191517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401526044830152606482015230608482015289821660a4820152911690637dc2038290349060c40160206040518083038185885af1158015610fa0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fc59190614778565b915061106b565b8560600151866040015114611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e6d696e427269646765416d6f756e7400000000000000000000000000000000606482015260840161094f565b856040015191505b8161107a876020015130612081565b1015611108576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f576f6f43726f7373436861696e526f7574657256353a202142616c616e63655f60448201527f456e6f7567680000000000000000000000000000000000000000000000000000606482015260840161094f565b6111128183614812565b915085606001518210156111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e6d696e427269646765416d6f756e7400000000000000000000000000000000606482015260840161094f565b6111b688888489898861216b565b73ffffffffffffffffffffffffffffffffffffffff87163373ffffffffffffffffffffffffffffffffffffffff16897f546dc08c5438b68796e5047ad2ac863ab74300bdf49457917d47021f090c45c489600001518a604001518b602001518c6060015189600073ffffffffffffffffffffffffffffffffffffffff168d60000160208101906112469190614227565b73ffffffffffffffffffffffffffffffffffffffff161461126857600161126b565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9788168152602081019690965293909516928401929092526060830152608082015260ff90911660a082015260c0810186905260e00160405180910390a450506112cd60018055565b505050505050565b6112dd612565565b6112e56125b8565b565b6112ef612565565b612710811115611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f576f6f43726f7373436861696e526f7574657256353a20215f6272696467655360448201527f6c69707061676500000000000000000000000000000000000000000000000000606482015260840161094f565b600555565b61138e612565565b73ffffffffffffffffffffffffffffffffffffffff8116611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f576f6f43726f7373436861696e526f7574657256353a20215f776f6f526f757460448201527f6572000000000000000000000000000000000000000000000000000000000000606482015260840161094f565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611480611d5d565b60045473ffffffffffffffffffffffffffffffffffffffff166114ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f576f6f43726f7373436861696e526f7574657256353a20216665654164647200604482015260640161094f565b600061150b8230612081565b9050801561159d577fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff831601611578576004546115739073ffffffffffffffffffffffffffffffffffffffff1682612635565b61159d565b60045461159d90839073ffffffffffffffffffffffffffffffffffffffff168361271e565b506115a760018055565b50565b6115b2612565565b6112e56000612887565b6115c4612565565b6112e56128fc565b6115d4612565565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916342407dc49160048083019260209291908290030181865afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190614516565b6003546040517f73f0c8f500000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015291925073ffffffffffffffffffffffffffffffffffffffff16906373f0c8f590602401602060405180830381865afa158015611724573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117489190614533565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f576f6f43726f7373436861696e526f7574657256353a20494e56414c49445f4360448201527f414c4c4552000000000000000000000000000000000000000000000000000000606482015260840161094f565b600061180e878761296b565b90506000806000806000806118238d8d612984565b8060200190518101906118369190614825565b6003546040517fbb0d15fe000000000000000000000000000000000000000000000000000000008152969c50949a509298509096509450925073ffffffffffffffffffffffffffffffffffffffff169063bb0d15fe906118c3908b90889060040163ffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b602060405180830381865afa1580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119049190614533565b73ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff16146119be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f576f6f43726f7373436861696e526f7574657256353a20215f66726f6d5f737460448201527f6172676174650000000000000000000000000000000000000000000000000000606482015260840161094f565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff851601611a0e57611a098686858a86866129cf565b611a1d565b611a1d868685878b878761353d565b505050505050505050505050505050565b611a36612565565b73ffffffffffffffffffffffffffffffffffffffff8116611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f576f6f43726f7373436861696e526f7574657256353a20215f63726f7373526f60448201527f7574657200000000000000000000000000000000000000000000000000000000606482015260840161094f565b63ffffffff91909116600090815260076020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b611b3b612565565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601611b82576115a73347612635565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c139190614778565b9050611c2082338361271e565b5050565b611c2c612565565b73ffffffffffffffffffffffffffffffffffffffff8116611c7c576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161094f565b6115a781612887565b6060846003611c95826000613cb0565b61ffff1614611ce257611ca9816000613cb0565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161094f565b6000611cef868686613d30565b9050611cfd87600383613e3c565b979650505050505050565b60005474010000000000000000000000000000000000000000900460ff16156112e5576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260015403611d99576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691611e3f9190614965565b6000604051808303816000865af19150503d8060008114611e7c576040519150601f19603f3d011682016040523d82523d6000602084013e611e81565b606091505b5091509150818015611eab575080511580611eab575080806020019051810190611eab9190614981565b6112cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015260640161094f565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529151600092839290871691611fa89190614965565b6000604051808303816000865af19150503d8060008114611fe5576040519150601f19603f3d011682016040523d82523d6000602084013e611fea565b606091505b50915091508180156120145750805115806120145750808060200190518101906120149190614981565b61207a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015260640161094f565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14612149576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121449190614778565b612162565b8173ffffffffffffffffffffffffffffffffffffffff16315b90505b92915050565b6000868661217f6040860160208701614227565b61218f6060870160408801614227565b8660600135866040516020016121aa9695949392919061448b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506000612200816121f060c0870160a088016144e4565b6105f960a08801608089016144e4565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905192935060009273ffffffffffffffffffffffffffffffffffffffff9092169163bb0d15fe9183916342407dc4916004808201926020929091908290030181865afa15801561227e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a29190614516565b60208901516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190614533565b602087015190915073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146123875761238786602001518289611f11565b6040805160e08101909152600090806123a3602089018961425d565b63ffffffff1681526020016123c8600760008a6000016020810190610680919061425d565b8152602001886040015181526020018860600151815260200184815260200185815260200160405180602001604052806000815250815250905060008273ffffffffffffffffffffffffffffffffffffffff16633b6f743b8360006040518363ffffffff1660e01b8152600401612440929190614634565b6040805180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190614688565b90508273ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a6020015173ffffffffffffffffffffffffffffffffffffffff16146124f05782516124f2565b345b8484326040518563ffffffff1660e01b8152600401612513939291906149a3565b60c06040518083038185885af1158015612531573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061255691906149ed565b50505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146112e5576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161094f565b6125c0613ea7565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161266c9190614965565b60006040518083038185875af1925050503d80600081146126a9576040519150601f19603f3d011682016040523d82523d6000602084013e6126ae565b606091505b5050905080612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015260640161094f565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916127b59190614965565b6000604051808303816000865af19150503d80600081146127f2576040519150601f19603f3d011682016040523d82523d6000602084013e6127f7565b606091505b50915091508180156128215750805115806128215750808060200190518101906128219190614981565b61207a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015260640161094f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612904611d08565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861260b3390565b600061297b602c600c8486614a81565b61216291614aab565b606061299382604c8186614a81565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff111111111111111111111111111111111111111201612b3d57612a178685612635565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888a73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff1614612ad4576001612ad7565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4506112cd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ba557600080fd5b505af1158015612bb9573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d0557612c3c7f0000000000000000000000000000000000000000000000000000000000000000878661271e565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888a7f00000000000000000000000000000000000000000000000000000000000000008a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff1614612ad4576001612ad7565b815173ffffffffffffffffffffffffffffffffffffffff161561314a57600654600090620186a090612d419062010000900461ffff16876147c0565b612d4b91906147d7565b90506000612d598287614812565b600254909150612da1907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1683611f11565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663199b83fa856000015186600001517f00000000000000000000000000000000000000000000000000000000000000008b868b8f8c602001516040518963ffffffff1660e01b8152600401612e36989796959493929190614ae7565b6020604051808303816000875af1925050508015612e8f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e8c91810190614778565b60015b61303557600254612ed9907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff166000611f11565b612f047f0000000000000000000000000000000000000000000000000000000000000000898861271e565b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8a8c7f00000000000000000000000000000000000000000000000000000000000000008c8e600073ffffffffffffffffffffffffffffffffffffffff168e6000015173ffffffffffffffffffffffffffffffffffffffff1614612fcd576001612fd0565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613143565b8873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168b7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868d8e8d89600073ffffffffffffffffffffffffffffffffffffffff168f6000015173ffffffffffffffffffffffffffffffffffffffff16146130de5760016130e1565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c082015260e081018990529051908190036101000190a4505b5050613534565b60025461318f907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1686611f11565b6002546040517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152878116602483015260448201879052606482018690528881166084830181905260a483015290911690637dc203829060c4016020604051808303816000875af1925050508015613280575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261327d91810190614778565b60015b613426576002546132ca907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff166000611f11565b6132f57f0000000000000000000000000000000000000000000000000000000000000000878661271e565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888a7f00000000000000000000000000000000000000000000000000000000000000008a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff16146133be5760016133c1565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613534565b8673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee898b8c8b89600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff16146134cf5760016134d2565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4505b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff808616908716036136665761356985888661271e565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c88888b8c8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff16146135fe576001613601565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613ca6565b815173ffffffffffffffffffffffffffffffffffffffff16156139ec57600654600090620186a0906136a29062010000900461ffff16876147c0565b6136ac91906147d7565b90506136b88186614812565b6002549095506136e090879073ffffffffffffffffffffffffffffffffffffffff1687611f11565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663199b83fa84600001518560000151898b8a8a8f8b602001516040518963ffffffff1660e01b8152600401613755989796959493929190614ae7565b6020604051808303816000875af19250505080156137ae575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526137ab91810190614778565b60015b6138ec576002546137d890879073ffffffffffffffffffffffffffffffffffffffff166000611f11565b6137e28186614b54565b94506137ef86898761271e565b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c89898c8c8b8d600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613884576001613887565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a46139e6565b8873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168b7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c8a8a8d8e8c89600073ffffffffffffffffffffffffffffffffffffffff168e6000015173ffffffffffffffffffffffffffffffffffffffff1614613981576001613984565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c082015260e081018890529051908190036101000190a4505b50613ca6565b600254613a1190869073ffffffffffffffffffffffffffffffffffffffff1686611f11565b6002546040517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152888116602483015260448201879052606482018690528981166084830181905260a483015290911690637dc203829060c4016020604051808303816000875af1925050508015613ae2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613adf91810190614778565b60015b613bac57600254613b0c90869073ffffffffffffffffffffffffffffffffffffffff166000611f11565b613b1785888661271e565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c88888b8b8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff16146135fe576001613601565b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c89898c8d8b89600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613c41576001613c44565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4505b5050505050505050565b6000613cbd826002614b54565b83511015613d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000604482015260640161094f565b50016002015190565b60606fffffffffffffffffffffffffffffffff821615613dc6576040517fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085811b8216602284015284901b166032820152604201604051602081830303815290604052613e34565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b1660228201526032016040516020818303038152906040525b949350505050565b6060836003613e4c826000613cb0565b61ffff1614613e6057611ca9816000613cb0565b846001613e6d8551613efb565b613e78906001614b67565b8686604051602001613e8e959493929190614b89565b6040516020818303038152906040529150509392505050565b60005474010000000000000000000000000000000000000000900460ff166112e5576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff821115613f43576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152601060048201526024810183905260440161094f565b5090565b73ffffffffffffffffffffffffffffffffffffffff811681146115a757600080fd5b600060c08284031215613f7b57600080fd5b50919050565b600060408284031215613f7b57600080fd5b60008060008060008587036101a0811215613fad57600080fd5b863595506020870135613fbf81613f47565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613ff157600080fd5b506040860192506140058760c08801613f69565b915061018086013567ffffffffffffffff81111561402257600080fd5b61402e88828901613f81565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561408d5761408d61403b565b60405290565b6040805190810167ffffffffffffffff8111828210171561408d5761408d61403b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156140fd576140fd61403b565b604052919050565b6000806000806000808688036101c081121561412057600080fd5b87359650602088013561413281613f47565b955060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561416457600080fd5b5061416d61406a565b604088013561417b81613f47565b8152606088013561418b81613f47565b60208201526080880135604082015260a0880135606082015293506141b38860c08901613f69565b925061018087013567ffffffffffffffff808211156141d157600080fd5b6141dd8a838b01613f81565b93506101a08901359150808211156141f457600080fd5b5061420189828a01613f81565b9150509295509295509295565b60006020828403121561422057600080fd5b5035919050565b60006020828403121561423957600080fd5b813561424481613f47565b9392505050565b63ffffffff811681146115a757600080fd5b60006020828403121561426f57600080fd5b81356142448161424b565b60008083601f84011261428c57600080fd5b50813567ffffffffffffffff8111156142a457600080fd5b6020830191508360208285010111156142bc57600080fd5b9250929050565b600080600080600080600060a0888a0312156142de57600080fd5b87356142e981613f47565b965060208801359550604088013567ffffffffffffffff8082111561430d57600080fd5b6143198b838c0161427a565b909750955060608a0135915061432e82613f47565b9093506080890135908082111561434457600080fd5b506143518a828b0161427a565b989b979a50959850939692959293505050565b6000806040838503121561437757600080fd5b82356143828161424b565b9150602083013561439281613f47565b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081356143f381613f47565b73ffffffffffffffffffffffffffffffffffffffff1683526020820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261444157600080fd5b820160208101903567ffffffffffffffff81111561445e57600080fd5b80360382131561446d57600080fd5b6040602086015261448260408601828461439d565b95945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff8088166020840152808716604084015280861660608401525083608083015260c060a08301526144d860c08301846143e6565b98975050505050505050565b6000602082840312156144f657600080fd5b81356fffffffffffffffffffffffffffffffff8116811461424457600080fd5b60006020828403121561452857600080fd5b81516142448161424b565b60006020828403121561454557600080fd5b815161424481613f47565b60005b8381101561456b578181015183820152602001614553565b50506000910152565b6000815180845261458c816020860160208601614550565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261460160e0850182614574565b905060a083015184820360a086015261461a8282614574565b91505060c083015184820360c08601526144828282614574565b60408152600061464760408301856145be565b905082151560208301529392505050565b60006040828403121561466a57600080fd5b614672614093565b9050815181526020820151602082015292915050565b60006040828403121561469a57600080fd5b6121628383614658565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146d957600080fd5b83018035915067ffffffffffffffff8211156146f457600080fd5b6020019150368190038213156142bc57600080fd5b600061010073ffffffffffffffffffffffffffffffffffffffff808d168452808c166020850152808b166040850152808a1660608501528860808501528760a085015280871660c0850152508060e0840152614768818401858761439d565b9c9b505050505050505050505050565b60006020828403121561478a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761216557612165614791565b60008261480d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561216557612165614791565b60008060008060008060c0878903121561483e57600080fd5b8651955060208088015161485181613f47565b604089015190965061486281613f47565b606089015190955061487381613f47565b608089015160a08a0151919550935067ffffffffffffffff8082111561489857600080fd5b908901906040828c0312156148ac57600080fd5b6148b4614093565b82516148bf81613f47565b815282840151828111156148d257600080fd5b8084019350508b601f8401126148e757600080fd5b8251828111156148f9576148f961403b565b614929857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016140b6565b92508083528c8582860101111561493f57600080fd5b61494e81868501878701614550565b508184820152809450505050509295509295509295565b60008251614977818460208701614550565b9190910192915050565b60006020828403121561499357600080fd5b8151801515811461424457600080fd5b6080815260006149b660808301866145be565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c0811215614a0157600080fd5b6080811215614a0f57600080fd5b506040516060810167ffffffffffffffff8282108183111715614a3457614a3461403b565b8160405285518352602086015191508082168214614a5157600080fd5b506020820152614a648560408601614658565b60408201529150614a788460808501614658565b90509250929050565b60008085851115614a9157600080fd5b83861115614a9e57600080fd5b5050820193919092039150565b80356020831015612165577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152808a16604085015280891660608501528760808501528660a085015280861660c0850152508060e0840152614b4581840185614574565b9b9a5050505050505050505050565b8082018082111561216557612165614791565b61ffff818116838216019080821115614b8257614b82614791565b5092915050565b60008651614b9b818460208b01614550565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351614c13816004840160208801614550565b0160040197965050505050505056fea2646970667358221220494a3bc1b47ca5a2858637269f903d5c2afce5624980fa06618a9d53a902c63064736f6c6343000816003300000000000000000000000097471c0fdddb5e5cc34cb08cb17961bd3a53f38f00000000000000000000000042000000000000000000000000000000000000060000000000000000000000004c4af8dbc524681930a27b2f1af5bcc8062e6fb7000000000000000000000000c3d60dd6436f3c40278f1158be82acedb4195335