0 txs
26 calls
constructor
constructor()
functions
crossChainDispatcher
viewfunction crossChainDispatcher() view returns (address _crossChainDispatcher)
crossChainFlashRepays
viewfunction crossChainFlashRepays(uint256) view returns (uint16 dstChainId, address syntheticToken, uint256 repayAmountMin, address account, bool finished)
crossChainLeverages
viewfunction crossChainLeverages(uint256) view returns (uint16 dstChainId, address bridgeToken, address depositToken, address syntheticToken, uint256 amountIn, uint256 debtAmount, uint256 depositAmountMin, address account, bool finished, address tokenIn)
crossChainRequestsLength
viewfunction crossChainRequestsLength() view returns (uint256)
governor
viewfunction governor() view returns (address _governor)
pool
viewfunction pool() view returns (address)
swapper
viewfunction swapper() view returns (address _swapper)
VERSION
viewfunction VERSION() view returns (string)
crossChainFlashRepay
payablefunction crossChainFlashRepay(address syntheticToken_, address depositToken_, uint256 withdrawAmount_, address bridgeToken_, uint256 bridgeTokenAmountMin_, uint256 swapAmountOutMin_, uint256 repayAmountMin_, bytes lzArgs_) payable
crossChainFlashRepayCallback
nonpayablefunction crossChainFlashRepayCallback(uint256 id_, uint256 swapAmountOut_) returns (uint256 _repaid)
crossChainLeverage
payablefunction crossChainLeverage(address tokenIn_, address syntheticToken_, address bridgeToken_, address depositToken_, uint256 amountIn_, uint256 leverage_, uint256 swapAmountOutMin_, uint256 depositAmountMin_, bytes lzArgs_) payable
crossChainLeverage
payablefunction crossChainLeverage(address, address, address, uint256, uint256, uint256, uint256, bytes) payable
crossChainLeverageCallback
nonpayablefunction crossChainLeverageCallback(uint256 id_, uint256 swapAmountOut_) returns (uint256 _deposited)
flashRepay
nonpayablefunction flashRepay(address syntheticToken_, address depositToken_, uint256 withdrawAmount_, uint256 repayAmountMin_) returns (uint256 _withdrawn, uint256 _repaid)
initialize
nonpayablefunction initialize(address pool_)
leverage
nonpayablefunction leverage(address tokenIn_, address depositToken_, address syntheticToken_, uint256 amountIn_, uint256 leverage_, uint256 depositAmountMin_) returns (uint256 _deposited, uint256 _issued)
retryCrossChainFlashRepayCallback
nonpayablefunction retryCrossChainFlashRepayCallback(uint16 srcChainId_, bytes srcAddress_, uint64 nonce_, uint256 amount_, bytes payload_, uint256 newRepayAmountMin_)
retryCrossChainLeverageCallback
nonpayablefunction retryCrossChainLeverageCallback(uint16 srcChainId_, bytes srcAddress_, uint64 nonce_, address token_, uint256 amount_, bytes payload_, uint256 newDepositAmountMin_)
events
CrossChainFlashRepayFinished
event CrossChainFlashRepayFinished(uint256 indexed id)
CrossChainFlashRepayStarted
event CrossChainFlashRepayStarted(uint256 indexed id)
CrossChainLeverageFinished
event CrossChainLeverageFinished(uint256 indexed id)
CrossChainLeverageStarted
event CrossChainLeverageStarted(uint256 indexed id)
FlashRepaid
event FlashRepaid(address indexed syntheticToken, address indexed depositToken, uint256 withdrawn, uint256 repaid)
Initialized
event Initialized(uint8 version)
Leveraged
event Leveraged(address indexed tokenIn, address indexed depositToken, address indexed syntheticToken, uint256 leverage, uint256 amountIn, uint256 issued, uint256 deposited)
errors
AmountIsTooHigh
error AmountIsTooHigh()
AmountIsZero
error AmountIsZero()
BridgeTokenIsNull
error BridgeTokenIsNull()
CrossChainFlashRepayInactive
error CrossChainFlashRepayInactive()
CrossChainRequestCompletedAlready
error CrossChainRequestCompletedAlready()
CrossChainRequestInvalidKey
error CrossChainRequestInvalidKey()
DepositTokenDoesNotExist
error DepositTokenDoesNotExist()
FlashRepaySlippageTooHigh
error FlashRepaySlippageTooHigh()
IsShutdown
error IsShutdown()
LeverageSlippageTooHigh
error LeverageSlippageTooHigh()
LeverageTooHigh
error LeverageTooHigh()
LeverageTooLow
error LeverageTooLow()
PoolAddressIsNull
error PoolAddressIsNull()
PoolIsNull
error PoolIsNull()
PositionIsNotHealthy
error PositionIsNotHealthy()
SenderIsNotCrossChainDispatcher
error SenderIsNotCrossChainDispatcher()
SyntheticDoesNotExist
error SyntheticDoesNotExist()
TokenInIsNull
error TokenInIsNull()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b62000152565b6200002e60ff62000031565b50565b60008054610100900460ff1615620000ca578160ff1660011480156200006a575062000068306200014360201b62002d871760201c565b155b620000c25760405162461bcd60e51b815260206004820152602e602482015260008051602062004aba83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001295760405162461bcd60e51b815260206004820152602e602482015260008051602062004aba83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000b9565b506000805460ff191660ff92909216919091179055600190565b6001600160a01b03163b151590565b61495880620001626000396000f3fe6080604052600436106101095760003560e01c8063583bfe761161009557806399e5e6551161006457806399e5e6551461037b5780639b6623d814610416578063c35576911461042c578063c4d66de81461043f578063ffa1ad741461045f57600080fd5b8063583bfe76146102275780636455bf6f146102475780638056777414610275578063823185611461029557600080fd5b806332c615b4116100dc57806332c615b41461018a578063364fda001461019f57806339c9a98e146101d45780633bb1f3d0146101e75780634d7e9a761461020757600080fd5b80630c340a241461010e57806316f0115b14610140578063196e7f51146101605780632b3297f914610175575b600080fd5b34801561011a57600080fd5b5061012361049d565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014c57600080fd5b50600254610123906001600160a01b031681565b61017361016e366004613e4f565b61051f565b005b34801561018157600080fd5b5061012361098d565b34801561019657600080fd5b50610123610a42565b3480156101ab57600080fd5b506101bf6101ba366004613f08565b610af7565b60408051928352602083019190915201610137565b6101736101e2366004613f4e565b61111c565b3480156101f357600080fd5b50610173610202366004614019565b611151565b34801561021357600080fd5b506101bf6102223660046140c1565b611429565b34801561023357600080fd5b50610173610242366004614126565b611abd565b34801561025357600080fd5b506102676102623660046141e3565b611e1c565b604051908152602001610137565b34801561028157600080fd5b506102676102903660046141e3565b6122a0565b3480156102a157600080fd5b506103196102b0366004614205565b6035602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015461ffff871697620100009097046001600160a01b0390811697968116969581169581811692600160a01b90910460ff1691168a565b6040805161ffff909b168b526001600160a01b03998a1660208c0152978916978a01979097529487166060890152608088019390935260a087019190915260c0860152831660e085015215156101008401521661012082015261014001610137565b34801561038757600080fd5b506103dc610396366004614205565b60366020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b03908116929190811690600160a01b900460ff1685565b6040805161ffff90961686526001600160a01b0394851660208701528501929092529190911660608301521515608082015260a001610137565b34801561042257600080fd5b5061026760345481565b61017361043a36600461421e565b612816565b34801561044b57600080fd5b5061017361045a3660046142a0565b612ce1565b34801561046b57600080fd5b50610490604051806040016040528060058152602001640312e332e360dc1b81525081565b6040516101379190614315565b6002546040805163030d028960e21b815290516000926001600160a01b031691630c340a24916004808301926020929190829003018186803b1580156104e257600080fd5b505afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a9190614328565b905090565b6002600154141561054b5760405162461bcd60e51b815260040161054290614345565b60405180910390fd5b6002600181905554604051633e25dee160e21b81526001600160a01b03808a1660048301528992169063f8977b849060240160206040518083038186803b15801561059557600080fd5b505afa1580156105a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cd919061438c565b6105ea5760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808d1660048301528c921690631a0dd00b9060240160206040518083038186803b15801561062f57600080fd5b505afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610667919061438c565b6106845760405163a596698b60e01b815260040160405180910390fd5b8b886106a3576040516310eb483f60e21b815260040160405180910390fd5b670de0b6b3a764000088116106cb57604051631907e1ff60e21b815260040160405180910390fd5b6107608a6001600160a01b031663df011c416040518163ffffffff1660e01b815260040160206040518083038186803b15801561070757600080fd5b505afa15801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f91906143a7565b61075190670de0b6b3a76400006143d6565b670de0b6b3a764000090612d96565b88111561078057604051630a4f5a0760e01b815260040160405180910390fd5b6001600160a01b0381166107a757604051634f70ad6b60e01b815260040160405180910390fd5b6001600160a01b038b166107ce57604051633a8b51a760e01b815260040160405180910390fd5b6000806107dc83338d612dd3565b9a506107ea838f8d8d612ef4565b9150600260009054906101000a90046001600160a01b03166001600160a01b0316639f8f0fa88f6040518263ffffffff1660e01b815260040161083c91906001600160a01b0391909116815260200190565b60206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c9190614328565b6001600160a01b031663bfa176566108a2610a42565b846040518363ffffffff1660e01b81526004016108c09291906143ed565b6040805180830381600087803b1580156108d957600080fd5b505af11580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190614406565b508091505060008e8e838c60405160200161095394939291906001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60408051601f1981840301815291905290508c610976858e8685858f8f8f61302b565b505060018055505050505050505050505050505050565b6002546040805163afcff50f60e01b815290516000926001600160a01b03169163afcff50f916004808301926020929190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190614328565b6001600160a01b0316632b3297f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e257600080fd5b6002546040805163afcff50f60e01b815290516000926001600160a01b03169163afcff50f916004808301926020929190829003018186803b158015610a8757600080fd5b505afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190614328565b6001600160a01b03166332c615b46040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e257600080fd5b600080600260009054906101000a90046001600160a01b03166001600160a01b031663ecf3a3f96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b80919061438c565b15610b9e57604051631b0e923f60e11b815260040160405180910390fd5b60026001541415610bc15760405162461bcd60e51b815260040161054290614345565b6002600181905554604051633e25dee160e21b81526001600160a01b0380881660048301528792169063f8977b849060240160206040518083038186803b158015610c0b57600080fd5b505afa158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c43919061438c565b610c605760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808a16600483015289921690631a0dd00b9060240160206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd919061438c565b610cfa5760405163a596698b60e01b815260040160405180910390fd5b85610d18576040516310eb483f60e21b815260040160405180910390fd5b6040516370a0823160e01b81523360048201526001600160a01b038816906370a082319060240160206040518083038186803b158015610d5757600080fd5b505afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f91906143a7565b861115610daf57604051635de1e54160e01b815260040160405180910390fd5b6002546040516313f1e1f560e31b81526001600160a01b038a81166004830152909116906000908290639f8f0fa89060240160206040518083038186803b158015610df957600080fd5b505afa158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e319190614328565b6040516370a0823160e01b81523360048201529091506001600160a01b038216906370a082319060240160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab91906143a7565b871115610ecb57604051635de1e54160e01b815260040160405180910390fd5b6040516336e1668760e11b81526001600160a01b038a1690636dc2cd0e90610ef99033908c906004016143ed565b6040805180830381600087803b158015610f1257600080fd5b505af1158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190614406565b5095506000610f6c610f5a61098d565b610f638c613321565b8d8a6000613394565b604051630450cfaf60e31b81529091506001600160a01b038316906322867d7890610f9d90339085906004016143ed565b6040805180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190614406565b5095508786101561101257604051634394bddf60e11b815260040160405180910390fd5b60405163dde3ab9560e01b81523360048201526000906001600160a01b0385169063dde3ab959060240160a06040518083038186803b15801561105457600080fd5b505afa158015611068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108c919061442a565b505050509050806110b05760405163cfd3600360e01b815260040160405180910390fd5b8a6001600160a01b03168c6001600160a01b03167f70e2337c0939e469d0c3d069c581bc0b72c541a70c592cdd46087d24e5e980d28a8a6040516110fe929190918252602082015260400190565b60405180910390a35050505050506001808190555094509492505050565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401610542565b600061119284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133ae92505050565b600081815260366020908152604091829020825160a081018452815461ffff811682526201000090046001600160a01b03908116938201939093526001820154938101939093526002015490811660608301819052600160a01b90910460ff161515608083015291945092501515905061121f576040516311bf899560e21b815260040160405180910390fd5b80608001511561124257604051630814de4560e11b815260040160405180910390fd5b80606001516001600160a01b0316336001600160a01b031614156112755760008281526036602052604090206001018390555b600061127f610a42565b60405163dfda255f60e01b815261ffff8d1660048201529091506000906001600160a01b0383169063dfda255f9060240160206040518083038186803b1580156112c857600080fd5b505afa1580156112dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113009190614328565b604051602001611328919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052905082602001516001600160a01b0316636d1bb8f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae9190614328565b6001600160a01b031663cfd6528e8d8d8d8d86888f8f8f6040518a63ffffffff1660e01b81526004016113e99998979695949392919061449a565b600060405180830381600087803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b50505050505050505050505050505050565b600080600260009054906101000a90046001600160a01b03166001600160a01b031663ecf3a3f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561147a57600080fd5b505afa15801561148e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b2919061438c565b156114d057604051631b0e923f60e11b815260040160405180910390fd5b600260015414156114f35760405162461bcd60e51b815260040161054290614345565b6002600181905554604051633e25dee160e21b81526001600160a01b03808a1660048301528992169063f8977b849060240160206040518083038186803b15801561153d57600080fd5b505afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611575919061438c565b6115925760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808a16600483015289921690631a0dd00b9060240160206040518083038186803b1580156115d757600080fd5b505afa1580156115eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160f919061438c565b61162c5760405163a596698b60e01b815260040160405180910390fd5b8661164a576040516310eb483f60e21b815260040160405180910390fd5b670de0b6b3a7640000861161167257604051631907e1ff60e21b815260040160405180910390fd5b6116ae896001600160a01b031663df011c416040518163ffffffff1660e01b815260040160206040518083038186803b15801561070757600080fd5b8611156116ce57604051630a4f5a0760e01b815260040160405180910390fd5b60006116d861098d565b905060006116e58b613321565b90506001600160a01b038c166116f957809b505b6117048c338b612dd3565b9850806001600160a01b03168c6001600160a01b0316146117305761172d828d838c6000613394565b98505b600061173e828c8c8c612ef4565b6002546040516313f1e1f560e31b81526001600160a01b038e8116600483015292935060009290911690639f8f0fa89060240160206040518083038186803b15801561178957600080fd5b505afa15801561179d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c19190614328565b604051635fd0bb2b60e11b81529091506001600160a01b0382169063bfa17656906117f290309086906004016143ed565b6040805180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190614406565b506040516340c10f1960e01b81529097506001600160a01b038216906340c10f199061187590339086906004016143ed565b600060405180830381600087803b15801561188f57600080fd5b505af11580156118a3573d6000803e3d6000fd5b50505050505060006118b9838c84896000613394565b6118c3908b614515565b9050878110156118e65760405163c724afdf60e01b815260040160405180910390fd5b6118fb6001600160a01b0383168d60006133ed565b61190f6001600160a01b0383168d836133ed565b604051636e553f6560e01b8152600481018290523360248201526001600160a01b038d1690636e553f65906044016040805180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e9190614406565b5060025460405163dde3ab9560e01b81523360048201529198506000916001600160a01b039091169063dde3ab959060240160a06040518083038186803b1580156119d857600080fd5b505afa1580156119ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a10919061442a565b50505050905080611a345760405163cfd3600360e01b815260040160405180910390fd5b8b6001600160a01b03168d6001600160a01b03168f6001600160a01b03167fd82c156e929db20771fc8413cc0789925f6c666a3e5076d5844765ee28bb3a958d8f8c8e604051611a9d949392919093845260208401929092526040830152606082015260800190565b60405180910390a450505050505060018081905550965096945050505050565b6000611afe84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061353c92505050565b600081815260356020908152604091829020825161014081018452815461ffff811682526201000090046001600160a01b0390811693820193909352600182015483169381019390935260028101548216606084015260038101546080840152600481015460a0840152600581015460c0840152600681015480831660e08501819052600160a01b90910460ff1615156101008501526007909101549091166101208301529193509150611bc5576040516311bf899560e21b815260040160405180910390fd5b80610100015115611be957604051630814de4560e11b815260040160405180910390fd5b8060e001516001600160a01b0316336001600160a01b03161415611c1c5760008281526035602052604090206005018390555b6000611c26610a42565b60405163dfda255f60e01b815261ffff8e1660048201529091506000906001600160a01b0383169063dfda255f9060240160206040518083038186803b158015611c6f57600080fd5b505afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190614328565b6040516bffffffffffffffffffffffff19606083901b16602082015290915060009063ab8236f360e01b908f9060340160408051601f1981840301815290829052611cff92918f908f908f908f908f9060240161452d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050826001600160a01b0316633352b6086040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190614328565b6001600160a01b031663c0e6ac6c8f8f8f8f88876040518763ffffffff1660e01b8152600401611dda96959493929190614591565b600060405180830381600087803b158015611df457600080fd5b505af1158015611e08573d6000803e3d6000fd5b505050505050505050505050505050505050565b6002546040805163ecf3a3f960e01b815290516000926001600160a01b03169163ecf3a3f9916004808301926020929190829003018186803b158015611e6157600080fd5b505afa158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e99919061438c565b15611eb757604051631b0e923f60e11b815260040160405180910390fd5b60026001541415611eda5760405162461bcd60e51b815260040161054290614345565b6002600155611ee7610a42565b6001600160a01b0316336001600160a01b031614611f1857604051632b78ce1b60e11b815260040160405180910390fd5b600083815260366020908152604091829020825160a081018452815461ffff811682526201000090046001600160a01b03908116938201939093526001820154938101939093526002015490811660608301819052600160a01b90910460ff1615156080830152611f9c576040516311bf899560e21b815260040160405180910390fd5b806080015115611fbf57604051630814de4560e11b815260040160405180910390fd5b6000848152603660209081526040909120600201805460ff60a01b1916600160a01b179055810151611ff2903385612dd3565b60025460208301516040516313f1e1f560e31b81526001600160a01b039182166004820152929550600092911690639f8f0fa89060240160206040518083038186803b15801561204157600080fd5b505afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120799190614328565b60608301516040516370a0823160e01b81526001600160a01b0391821660048201529192506000919083169063c9dc4b4d9082906370a082319060240160206040518083038186803b1580156120ce57600080fd5b505afa1580156120e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210691906143a7565b6040518263ffffffff1660e01b815260040161212491815260200190565b604080518083038186803b15801561213b57600080fd5b505afa15801561214f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121739190614406565b50905060006121828683613575565b90508015612211576060840151604051630450cfaf60e31b81526001600160a01b038516916322867d78916121bc919085906004016143ed565b6040805180830381600087803b1580156121d557600080fd5b505af11580156121e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220d9190614406565b5094505b836040015185101561223657604051634394bddf60e11b815260040160405180910390fd5b808611156122665760608401516122669061225183896143d6565b60208701516001600160a01b0316919061358b565b60405187907f46da7fdc7ceed834de258df19d8f9ebd7082810a4eb45732d1401df31e5aaa1390600090a250506001805550909392505050565b6002546040805163ecf3a3f960e01b815290516000926001600160a01b03169163ecf3a3f9916004808301926020929190829003018186803b1580156122e557600080fd5b505afa1580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231d919061438c565b1561233b57604051631b0e923f60e11b815260040160405180910390fd5b6002600154141561235e5760405162461bcd60e51b815260040161054290614345565b600260015561236b610a42565b6001600160a01b0316336001600160a01b03161461239c57604051632b78ce1b60e11b815260040160405180910390fd5b600083815260356020908152604091829020825161014081018452815461ffff811682526201000090046001600160a01b0390811693820193909352600182015483169381019390935260028101548216606084015260038101546080840152600481015460a0840152600581015460c0840152600681015480831660e08501819052600160a01b90910460ff16151561010085015260079091015490911661012083015261245e576040516311bf899560e21b815260040160405180910390fd5b8061010001511561248257604051630814de4560e11b815260040160405180910390fd5b60006124918260400151613321565b6000868152603560209081526040909120600601805460ff60a01b1916600160a01b1790558301519091506124c7903386612dd3565b9350600082602001516001600160a01b03168361012001516001600160a01b0316141561251e576125176124f961098d565b846101200151848887608001516125109190614515565b6000613394565b9050612564565b61253c61252961098d565b8461012001518486608001516000613394565b905061255761254961098d565b846020015184886000613394565b6125619082614515565b90505b8260c001518110156125895760405163c724afdf60e01b815260040160405180910390fd5b60408301516125a4906001600160a01b0384169060006133ed565b60408301516125be906001600160a01b03841690836133ed565b60408084015160e08501519151636e553f6560e01b8152600481018490526001600160a01b039283166024820152911690636e553f65906044016040805180830381600087803b15801561261157600080fd5b505af1158015612625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126499190614406565b5060025460608501516040516313f1e1f560e31b81526001600160a01b03918216600482015292965016908190639f8f0fa89060240160206040518083038186803b15801561269757600080fd5b505afa1580156126ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cf9190614328565b6001600160a01b03166340c10f198560e001518660a001516040518363ffffffff1660e01b81526004016127049291906143ed565b600060405180830381600087803b15801561271e57600080fd5b505af1158015612732573d6000803e3d6000fd5b5050505060e084015160405163dde3ab9560e01b81526001600160a01b03918216600482015260009183169063dde3ab959060240160a06040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b7919061442a565b505050509050806127db5760405163cfd3600360e01b815260040160405180910390fd5b60405188907f8e4ff8e32fb3b90b184bdac5bf0d9b2a0fe19baa9dfea95c0fcd7d8e3842e80e90600090a25050600180555091949350505050565b600260015414156128395760405162461bcd60e51b815260040161054290614345565b6002600181905554604051633e25dee160e21b81526001600160a01b03808b1660048301528a92169063f8977b849060240160206040518083038186803b15801561288357600080fd5b505afa158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb919061438c565b6128d85760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808d1660048301528c921690631a0dd00b9060240160206040518083038186803b15801561291d57600080fd5b505afa158015612931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612955919061438c565b6129725760405163a596698b60e01b815260040160405180910390fd5b88612990576040516310eb483f60e21b815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663afcff50f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129de57600080fd5b505afa1580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a169190614328565b6001600160a01b031663995031cd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4e57600080fd5b505afa158015612a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a86919061438c565b612aa357604051639e0d93d560e01b815260040160405180910390fd5b6002546040516313f1e1f560e31b81526001600160a01b038d811660048301526000928392911690639f8f0fa89060240160206040518083038186803b158015612aec57600080fd5b505afa158015612b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b249190614328565b9050806001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612b6157600080fd5b505af1158015612b75573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526001600160a01b03841692506370a08231915060240160206040518083038186803b158015612bb857600080fd5b505afa158015612bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf091906143a7565b871115612c1057604051635de1e54160e01b815260040160405180910390fd5b612c18610a42565b91505060008b6001600160a01b0316639470b0bd338d6040518363ffffffff1660e01b8152600401612c4b9291906143ed565b6040805180830381600087803b158015612c6457600080fd5b505af1158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c9190614406565b509050612cbc612caa61098d565b612cb38e613321565b8c848d876135aa565b9050612cce828b8f848c8c8c8c6137c6565b5050600180555050505050505050505050565b6000612ced600161394f565b90508015612d05576000805461ff0019166101001790555b6001600160a01b038216612d2c57604051633cb1fb1f60e11b815260040160405180910390fd5b612d346139dc565b612d3d82613a0d565b8015612d83576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600081612da46002826145ed565b612db6670de0b6b3a76400008661460f565b612dc09190614515565b612dca91906145ed565b90505b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038616906370a082319060240160206040518083038186803b158015612e1757600080fd5b505afa158015612e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4f91906143a7565b9050612e666001600160a01b038616853086613a7d565b6040516370a0823160e01b815230600482015281906001600160a01b038716906370a082319060240160206040518083038186803b158015612ea757600080fd5b505afa158015612ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edf91906143a7565b612ee991906143d6565b9150505b9392505050565b60025460408051637556d1c160e11b815290516000926001600160a01b03169163eaada382916004808301926020929190829003018186803b158015612f3957600080fd5b505afa158015612f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f719190614328565b6001600160a01b031663b64663848686612f9d87612f97670de0b6b3a7640000896143d6565b90613abb565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152604482015260640160206040518083038186803b158015612fea57600080fd5b505afa158015612ffe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302291906143a7565b95945050505050565b6000613035613af3565b905060008060008089806020019051810190613051919061462e565b9350935093509350600061309a88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b5592505050565b505090506040518061014001604052808261ffff168152602001856001600160a01b031681526020018b6001600160a01b03168152602001866001600160a01b031681526020018e81526020018d81526020018a8152602001336001600160a01b031681526020016000151581526020018f6001600160a01b03168152506035600088815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816003015560a0820151816004015560c0820151816005015560e08201518160060160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160060160146101000a81548160ff0219169083151502179055506101208201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050505061327b610a42565b6001600160a01b03166339f648bf348733888888888f8f6040518a63ffffffff1660e01b81526004016132b5989796959493929190614676565b6000604051808303818588803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b50506040518893507f46a791deaa2c43990d6e3b60a320fbebef9a6677379f326b308fb9efc8128619925060009150a250505050505050505050505050565b6000816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561335c57600080fd5b505afa158015613370573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dcd9190614328565b60006133a48686868686306135aa565b9695505050505050565b6000806000838060200190518101906133c791906146d5565b80519095506133e091508501602090810190860161479e565b9250925092509193909250565b8015806134765750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b15801561343c57600080fd5b505afa158015613450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347491906143a7565b155b6134e15760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610542565b6135378363095ea7b360e01b84846040516024016135009291906143ed565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b6e565b505050565b6000808280602001905181019061355391906146d5565b805190945061356c9150840160209081019085016147e1565b91509150915091565b60008183106135845781612dca565b5090919050565b6135378363a9059cbb60e01b84846040516024016135009291906143ed565b6000846001600160a01b0316866001600160a01b031614613797576135da6001600160a01b0387168860006133ed565b6135ee6001600160a01b03871688866133ed565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908716906370a082319060240160206040518083038186803b15801561363357600080fd5b505afa158015613647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366b91906143a7565b604051636ccb2b0160e01b81526001600160a01b03898116600483015288811660248301526044820188905260648201879052858116608483015291925090891690636ccb2b019060a401602060405180830381600087803b1580156136d057600080fd5b505af11580156136e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370891906143a7565b506040516370a0823160e01b81526001600160a01b0384811660048301528291908816906370a082319060240160206040518083038186803b15801561374d57600080fd5b505afa158015613761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378591906143a7565b61378f91906143d6565b9150506133a4565b6001600160a01b03821630146137bb576137bb6001600160a01b038716838661358b565b509195945050505050565b60006137d0613af3565b9050600061381384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b5592505050565b50506040805160a08101825261ffff80841682526001600160a01b03808d1660208085019182528486018c815233606087018181526000608089018181528d82526036909552899020975188549551871662010000026001600160b01b031990961697169690961793909317865551600186015592516002909401805493511515600160a01b026001600160a81b03199094169483169490941792909217909255915162bc9db960e01b81529293508c169162bc9db99134916138e69187918f908f908f908f908e908e90600401614676565b6000604051808303818588803b1580156138ff57600080fd5b505af1158015613913573d6000803e3d6000fd5b50506040518593507ff83a8331f3e68a894879f051738cb73cdced1709a214e49f6dc1d541a0415e8b925060009150a250505050505050505050565b60008054610100900460ff1615613996578160ff1660011480156139725750303b155b61398e5760405162461bcd60e51b81526004016105429061480f565b506000919050565b60005460ff8084169116106139bd5760405162461bcd60e51b81526004016105429061480f565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff16613a035760405162461bcd60e51b81526004016105429061485d565b613a0b613c40565b565b600054610100900460ff16613a345760405162461bcd60e51b81526004016105429061485d565b6001600160a01b038116613a5b5760405163724f500960e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0380851660248301528316604482015260648101829052613ab59085906323b872dd60e01b90608401613500565b50505050565b6000821580613ac8575081155b15613ad557506000612dcd565b670de0b6b3a7640000613ae96002826145ed565b612db6848661460f565b60004630603460008154613b06906148a8565b9182905550604051613b37939291906020019283526001600160a01b03919091166020830152604082015260600190565b6040516020818303038152906040528051906020012060001c905090565b6000806000838060200190518101906133e091906148c3565b6000613bc3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613c6d9092919063ffffffff16565b8051909150156135375780806020019051810190613be1919061438c565b6135375760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610542565b600054610100900460ff16613c675760405162461bcd60e51b81526004016105429061485d565b60018055565b6060613c7c8484600085613c84565b949350505050565b606082471015613ce55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610542565b6001600160a01b0385163b613d3c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610542565b600080866001600160a01b03168587604051613d589190614906565b60006040518083038185875af1925050503d8060008114613d95576040519150601f19603f3d011682016040523d82523d6000602084013e613d9a565b606091505b5091509150613daa828286613db5565b979650505050505050565b60608315613dc4575081612eed565b825115613dd45782518084602001fd5b8160405162461bcd60e51b81526004016105429190614315565b6001600160a01b0381168114613e0357600080fd5b50565b60008083601f840112613e1857600080fd5b50813567ffffffffffffffff811115613e3057600080fd5b602083019150836020828501011115613e4857600080fd5b9250929050565b6000806000806000806000806000806101208b8d031215613e6f57600080fd5b8a35613e7a81613dee565b995060208b0135613e8a81613dee565b985060408b0135613e9a81613dee565b975060608b0135613eaa81613dee565b965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b013567ffffffffffffffff811115613ee357600080fd5b613eef8d828e01613e06565b915080935050809150509295989b9194979a5092959850565b60008060008060808587031215613f1e57600080fd5b8435613f2981613dee565b93506020850135613f3981613dee565b93969395505050506040820135916060013590565b60008060008060008060008060006101008a8c031215613f6d57600080fd5b8935613f7881613dee565b985060208a0135613f8881613dee565b975060408a0135613f9881613dee565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff811115613fd057600080fd5b613fdc8c828d01613e06565b915080935050809150509295985092959850929598565b61ffff81168114613e0357600080fd5b67ffffffffffffffff81168114613e0357600080fd5b60008060008060008060008060c0898b03121561403557600080fd5b883561404081613ff3565b9750602089013567ffffffffffffffff8082111561405d57600080fd5b6140698c838d01613e06565b909950975060408b0135915061407e82614003565b90955060608a0135945060808a0135908082111561409b57600080fd5b506140a88b828c01613e06565b999c989b50969995989497949560a00135949350505050565b60008060008060008060c087890312156140da57600080fd5b86356140e581613dee565b955060208701356140f581613dee565b9450604087013561410581613dee565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080600060e08a8c03121561414457600080fd5b893561414f81613ff3565b985060208a013567ffffffffffffffff8082111561416c57600080fd5b6141788d838e01613e06565b909a50985060408c0135915061418d82614003565b90965060608b01359061419f82613dee565b90955060808b0135945060a08b013590808211156141bc57600080fd5b506141c98c828d01613e06565b9a9d999c50979a9699959894979660c00135949350505050565b600080604083850312156141f657600080fd5b50508035926020909101359150565b60006020828403121561421757600080fd5b5035919050565b60008060008060008060008060006101008a8c03121561423d57600080fd5b893561424881613dee565b985060208a013561425881613dee565b975060408a0135965060608a013561426f81613dee565b955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff811115613fd057600080fd5b6000602082840312156142b257600080fd5b8135612eed81613dee565b60005b838110156142d85781810151838201526020016142c0565b83811115613ab55750506000910152565b600081518084526143018160208601602086016142bd565b601f01601f19169290920160200192915050565b602081526000612dca60208301846142e9565b60006020828403121561433a57600080fd5b8151612eed81613dee565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b805180151581146139d757600080fd5b60006020828403121561439e57600080fd5b612dca8261437c565b6000602082840312156143b957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156143e8576143e86143c0565b500390565b6001600160a01b03929092168252602082015260400190565b6000806040838503121561441957600080fd5b505080516020909101519092909150565b600080600080600060a0868803121561444257600080fd5b61444b8661437c565b602087015160408801516060890151608090990151929a91995097965090945092505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8a16815260e0602082015260006144b860e083018a8c614471565b67ffffffffffffffff8916604084015282810360608401526144da81896142e9565b6001600160a01b038816608085015260a0840187905283810360c08501529050614505818587614471565b9c9b505050505050505050505050565b60008219821115614528576145286143c0565b500190565b61ffff8816815260c06020820152600061454a60c08301896142e9565b67ffffffffffffffff881660408401526001600160a01b03871660608401526080830186905282810360a0840152614583818587614471565b9a9950505050505050505050565b61ffff8716815260a0602082015260006145af60a083018789614471565b67ffffffffffffffff861660408401526001600160a01b038516606084015282810360808401526145e081856142e9565b9998505050505050505050565b60008261460a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615614629576146296143c0565b500290565b6000806000806080858703121561464457600080fd5b845161464f81613dee565b602086015190945061466081613dee565b6040860151606090960151949790965092505050565b8881526001600160a01b0388811660208301528781166040830152861660608201526080810185905260a0810184905260e060c082018190526000906145839083018486614471565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156146e857600080fd5b825160ff811681146146f957600080fd5b602084015190925067ffffffffffffffff8082111561471757600080fd5b818501915085601f83011261472b57600080fd5b81518181111561473d5761473d6146bf565b604051601f8201601f19908116603f01168101908382118183101715614765576147656146bf565b8160405282815288602084870101111561477e57600080fd5b61478f8360208301602088016142bd565b80955050505050509250929050565b6000806000606084860312156147b357600080fd5b83516147be81613dee565b60208501519093506147cf81613dee565b80925050604084015190509250925092565b600080604083850312156147f457600080fd5b82516147ff81613dee565b6020939093015192949293505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006000198214156148bc576148bc6143c0565b5060010190565b6000806000606084860312156148d857600080fd5b83516148e381613ff3565b6020850151604086015191945092506148fb81614003565b809150509250925092565b600082516149188184602087016142bd565b919091019291505056fea2646970667358221220999a51eea1c92569334064d2a38a22fd3865d8effb2083d8a4d64e433beb715664736f6c63430008090033496e697469616c697a61626c653a20636f6e747261637420697320616c726561