24 txs
49 calls
constructor
constructor(address _weth, bool gasIsEth, address _executor)
functions
BRIDGE_OPERATOR_ROLE
viewfunction BRIDGE_OPERATOR_ROLE() view returns (bytes32)
dcntEth
viewfunction dcntEth() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultAdmin
viewfunction defaultAdmin() view returns (address)
defaultAdminDelay
viewfunction defaultAdminDelay() view returns (uint48)
defaultAdminDelayIncreaseWait
viewfunction defaultAdminDelayIncreaseWait() view returns (uint48)
destinationBridges
viewfunction destinationBridges(uint32 lzId) view returns (address dstRouter)
estimateSendAndCallFee
viewfunction estimateSendAndCallFee(uint8 msgType, uint32 dstChainId, address toAddress, address refundAddress, uint256 amount, uint64 dstGasForCall, bool deliverEth, bytes payload) view returns (uint256 nativeFee, uint256 zroFee)
executor
viewfunction executor() view returns (address)
gasCurrencyIsEth
viewfunction gasCurrencyIsEth() view returns (bool)
gasForRelay
viewfunction gasForRelay() view returns (uint128)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MT_ETH_TRANSFER_WITH_PAYLOAD
viewfunction MT_ETH_TRANSFER_WITH_PAYLOAD() view returns (uint8)
MT_ETH_TRANSFER
viewfunction MT_ETH_TRANSFER() view returns (uint8)
owner
viewfunction owner() view returns (address)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
requireOperator
viewfunction requireOperator() view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
weth
viewfunction weth() view returns (address)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
addDestinationBridge
nonpayablefunction addDestinationBridge(uint32 _dstChainId, address _routerAddress)
addLiquidityEth
payablefunction addLiquidityEth() payable
addLiquidityWeth
nonpayablefunction addLiquidityWeth(uint256 amount)
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
bridge
payablefunction bridge(uint32 dstChainId, address toAddress, address refundAddress, uint256 amount, uint64 dstGasForCall, bool deliverEth) payable
bridgeWithPayload
payablefunction bridgeWithPayload(uint32 dstChainId, address toAddress, address refundAddress, uint256 amount, bool deliverEth, uint64 dstGasForCall, bytes payload) payable
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
lzCompose
payablefunction lzCompose(address _from, bytes32, bytes _message, address, bytes) payable
redeemEth
nonpayablefunction redeemEth()
redeemEthFor
nonpayablefunction redeemEthFor(address account, uint256 amount)
redeemWeth
nonpayablefunction redeemWeth()
redeemWethFor
nonpayablefunction redeemWethFor(address account, uint256 amount)
registerDcntEth
nonpayablefunction registerDcntEth(address _addr)
removeLiquidityEth
nonpayablefunction removeLiquidityEth(uint256 amount)
removeLiquidityWeth
nonpayablefunction removeLiquidityWeth(uint256 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
setExecutor
nonpayablefunction setExecutor(address _executor)
setGasForRelay
nonpayablefunction setGasForRelay(uint128 _gasForRelay)
setRequireOperator
nonpayablefunction setRequireOperator(bool _requireOperator)
setWeth
nonpayablefunction setWeth(address _weth)
withdraw
nonpayablefunction withdraw(address to, uint256 amount)
withdrawERC20
nonpayablefunction withdrawERC20(address token, address to, uint256 amount)
events
AddedDestinationBridge
event AddedDestinationBridge(uint32 dstChainId, address routerAddress)
AddedLiquidity
event AddedLiquidity(uint256 amount)
BridgedPayload
event BridgedPayload()
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
ReceivedPayload
event ReceivedPayload()
RegisteredDcntEth
event RegisteredDcntEth(address addr)
RemovedLiquidity
event RemovedLiquidity(uint256 amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetExecutor
event SetExecutor(address executor)
SetGasForRelay
event SetGasForRelay(uint128 before, uint128 gasForRelay)
SetRequireOperator
event SetRequireOperator(bool requireOperator)
SetWeth
event SetWeth(address weth)
Withdraw
event Withdraw(address to, uint256 amount)
WithdrawERC20
event WithdrawERC20(address token, address to, uint256 amount)
errors
InsufficientBalance
error InsufficientBalance()
InvalidOptionType
error InvalidOptionType(uint16 optionType)
InvalidRecipient
error InvalidRecipient()
NotEnoughReserves
error NotEnoughReserves()
OnlyBridgeOperator
error OnlyBridgeOperator()
OnlyDcntEth
error OnlyDcntEth()
OnlyEthChain
error OnlyEthChain()
OnlyLzEndpoint
error OnlyLzEndpoint()
OnlyWeth
error OnlyWeth()
TransferFailed
error TransferFailed()
WithdrawalFailed
error WithdrawalFailed()
creation bytecode
0x6080604052600680546001600160801b0319166201d4c01790553480156200002657600080fd5b50604051620047383803806200473883398101604081905262000049916200028d565b33620151808180620000a25760405162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20302064656661756c742061646d696e000060448201526064015b60405180910390fd5b600180546001600160d01b0316600160d01b65ffffffffffff851602179055620000ce60008262000120565b5050600380546001600160a01b039586166001600160a01b03199182161790915560068054941515600160801b0260ff60801b19909516949094179093555060058054919093169116179055620002e5565b81620001c45760006200013b6002546001600160a01b031690565b6001600160a01b031614620001a85760405162461bcd60e51b815260206004820152602c60248201527f416363657373436f6e74726f6c3a2064656661756c742061646d696e20616c7260448201526b1958591e4819dc985b9d195960a21b606482015260840162000099565b600280546001600160a01b0319166001600160a01b0383161790555b620001d08282620001d4565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620001d0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002303390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6001600160a01b03811681146200028a57600080fd5b50565b600080600060608486031215620002a357600080fd5b8351620002b08162000274565b60208501519093508015158114620002c757600080fd5b6040850151909250620002da8162000274565b809150509250925092565b61444380620002f56000396000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063cc8463c8116100c1578063d602b9fd1161007a578063d602b9fd1461086e578063db11e60614610883578063dc0f495414610898578063f3fef3a3146108b8578063f7090907146108d8578063f855ba84146108f857600080fd5b8063cc8463c81461079e578063cefc1429146107b3578063cf6eefb7146107c8578063d0a1026014610803578063d0e6d6e214610816578063d547741f1461084e57600080fd5b8063af5e82bd11610113578063af5e82bd146106d3578063b0027229146106f3578063b20abe0014610713578063b8d1452f14610728578063bd41813214610748578063c34c08e51461077e57600080fd5b80638da5cb5b1461060e57806391d1485414610623578063981c4e4d14610643578063a1eda53c14610663578063a217fddf14610697578063ab477f46146106ac57600080fd5b806344004cc1116101fe578063634e93da116101b7578063634e93da1461055c578063649a5ec71461057c57806364bcb61e1461059c57806367e10c7e146105bd5780636f9b0181146105dd57806384ef8ffc146105f057600080fd5b806344004cc11461047257806346d708f6146104925780634be40fd1146104b25780635c478efd146104e657806360bc2fac1461050757806361b5e5671461052757600080fd5b8063241a66ab11610250578063241a66ab146103b9578063248a9ca3146103cc57806324e344431461040a5780632f2ff15d1461041257806336568abe146104325780633fc8cef31461045257600080fd5b806301ffc9a7146102ce578063022d63fb146103035780630aa6220b1461032c5780630cb477dd146103415780630cd4b3f9146103795780631c3c0ea81461039957600080fd5b366102c9576003546001600160a01b031633146102c757604051632f95b04960e21b815260040160405180910390fd5b005b600080fd5b3480156102da57600080fd5b506102ee6102e93660046137b5565b61090d565b60405190151581526020015b60405180910390f35b34801561030f57600080fd5b50620697805b60405165ffffffffffff90911681526020016102fa565b34801561033857600080fd5b506102c7610938565b34801561034d57600080fd5b50600454610361906001600160a01b031681565b6040516001600160a01b0390911681526020016102fa565b34801561038557600080fd5b506102c76103943660046137df565b61094e565b3480156103a557600080fd5b506102c76103b436600461380d565b610a69565b6102c76103c7366004613929565b610ae7565b3480156103d857600080fd5b506103fc6103e73660046137df565b60009081526020819052604090206001015490565b6040519081526020016102fa565b6102c7610bb7565b34801561041e57600080fd5b506102c761042d3660046139ca565b610ce8565b34801561043e57600080fd5b506102c761044d3660046139ca565b610d62565b34801561045e57600080fd5b50600354610361906001600160a01b031681565b34801561047e57600080fd5b506102c761048d3660046139fa565b610e4c565b34801561049e57600080fd5b506102c76104ad366004613a3b565b610ef6565b3480156104be57600080fd5b506103fc7f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b156881565b3480156104f257600080fd5b506006546102ee90600160881b900460ff1681565b34801561051357600080fd5b506102c76105223660046137df565b610f6a565b34801561053357600080fd5b50610547610542366004613a67565b610f9e565b604080519283526020830191909152016102fa565b34801561056857600080fd5b506102c761057736600461380d565b61109d565b34801561058857600080fd5b506102c7610597366004613b1b565b6110b1565b3480156105a857600080fd5b506006546102ee90600160801b900460ff1681565b3480156105c957600080fd5b506102c76105d8366004613b43565b6110c5565b6102c76105eb366004613b6f565b6110f6565b3480156105fc57600080fd5b506002546001600160a01b0316610361565b34801561061a57600080fd5b506103616111d4565b34801561062f57600080fd5b506102ee61063e3660046139ca565b6111ed565b34801561064f57600080fd5b506102c761065e366004613be6565b611216565b34801561066f57600080fd5b506106786112ab565b6040805165ffffffffffff9384168152929091166020830152016102fa565b3480156106a357600080fd5b506103fc600081565b3480156106b857600080fd5b506106c1600181565b60405160ff90911681526020016102fa565b3480156106df57600080fd5b506102c76106ee36600461380d565b6112ff565b3480156106ff57600080fd5b506102c761070e366004613c12565b611374565b34801561071f57600080fd5b506102c7611404565b34801561073457600080fd5b506102c761074336600461380d565b61147c565b34801561075457600080fd5b50610361610763366004613c3b565b6007602052600090815260409020546001600160a01b031681565b34801561078a57600080fd5b50600554610361906001600160a01b031681565b3480156107aa57600080fd5b506103156114f1565b3480156107bf57600080fd5b506102c7611550565b3480156107d457600080fd5b506107dd6115ce565b604080516001600160a01b03909316835265ffffffffffff9091166020830152016102fa565b6102c7610811366004613c9e565b6115ef565b34801561082257600080fd5b50600654610836906001600160801b031681565b6040516001600160801b0390911681526020016102fa565b34801561085a57600080fd5b506102c76108693660046139ca565b611cc3565b34801561087a57600080fd5b506102c7611d40565b34801561088f57600080fd5b506106c1600081565b3480156108a457600080fd5b506102c76108b33660046137df565b611d53565b3480156108c457600080fd5b506102c76108d3366004613b43565b611d5d565b3480156108e457600080fd5b506102c76108f3366004613b43565b611e50565b34801561090457600080fd5b506102c7611e81565b60006001600160e01b031982166318a4c3c360e11b1480610932575061093282611ef7565b92915050565b600061094381611f2c565b61094b611f36565b50565b6003546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190613d3e565b50600480546040516340c10f1960e01b81526001600160a01b03909116916340c10f19916109fb913391869101613d5b565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b505050507f3a8ab79f6d1537e459a1a8379f48a77e1ffd07dda4b16ea97074fdab5dd8bf3481604051610a5e91815260200190565b60405180910390a150565b610a746000336111ed565b610a995760405162461bcd60e51b8152600401610a9090613d74565b60405180910390fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f34d4f6a542f13533b1eaa27e7ae8691368028d05b7075ad7a6c34df851a67a4390602001610a5e565b600654600160881b900460ff168015610b275750610b257f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b1568336111ed565b155b15610b455760405163156061c360e21b815260040160405180910390fd5b610bae604051806101000160405280600160ff1681526020018963ffffffff168152602001886001600160a01b03168152602001876001600160a01b03168152602001868152602001846001600160401b03168152602001851515815260200183815250611f41565b50505050505050565b600654600160801b900460ff16610be15760405163163f2bb360e01b815260040160405180910390fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b5050600480546040516340c10f1960e01b81526001600160a01b0390911694506340c10f199350610c7b92503391349101613d5b565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050507f3a8ab79f6d1537e459a1a8379f48a77e1ffd07dda4b16ea97074fdab5dd8bf3434604051610cde91815260200190565b60405180910390a1565b81610d545760405162461bcd60e51b815260206004820152603660248201527f416363657373436f6e74726f6c3a2063616e2774206469726563746c79206772604482015275616e742064656661756c742061646d696e20726f6c6560501b6064820152608401610a90565b610d5e828261222d565b5050565b81158015610d7d57506002546001600160a01b038281169116145b15610e4257600080610d8d6115ce565b90925090506001600160a01b038216158015610db0575065ffffffffffff811615155b8015610dc357504265ffffffffffff8216105b610e2d5760405162461bcd60e51b815260206004820152603560248201527f416363657373436f6e74726f6c3a206f6e6c792063616e2072656e6f756e636560448201527420696e2074776f2064656c6179656420737465707360581b6064820152608401610a90565b50506001805465ffffffffffff60a01b191690555b610d5e8282612257565b610e576000336111ed565b610e735760405162461bcd60e51b8152600401610a9090613d74565b6001600160a01b038216610e9a57604051634e46966960e11b815260040160405180910390fd5b610ea58383836122d1565b604080516001600160a01b038086168252841660208201529081018290527f33c35f9541201e342d5e7467016e65a0a06182eb12a5f17103f71cec95b6cb29906060015b60405180910390a1505050565b610f016000336111ed565b610f1d5760405162461bcd60e51b8152600401610a9090613d74565b60068054821515600160881b0260ff60881b199091161790556040517f710b808038150f0828772bf50fad7fe289013675ee568e946b32ce154d184b7390610a5e90831515815260200190565b600654600160801b900460ff16610f945760405163163f2bb360e01b815260040160405180910390fd5b61094b3382612327565b600080600061100b6040518061010001604052808d60ff1681526020018c63ffffffff1681526020018b6001600160a01b031681526020018a6001600160a01b03168152602001898152602001886001600160401b03168152602001871515815260200186815250612524565b60048054604051633b6f743b60e01b81529293506000926001600160a01b0390911691633b6f743b91611042918691869101613e67565b6040805180830381865afa15801561105e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110829190613ed9565b8051602090910151909d909c509a5050505050505050505050565b60006110a881611f2c565b610d5e826127ac565b60006110bc81611f2c565b610d5e8261281f565b6110d06000336111ed565b6110ec5760405162461bcd60e51b8152600401610a9090613d74565b610d5e8282612327565b600654600160881b900460ff16801561113657506111347f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b1568336111ed565b155b156111545760405163156061c360e21b815260040160405180910390fd5b6111cc604051806101000160405280600060ff1681526020018863ffffffff168152602001876001600160a01b03168152602001866001600160a01b03168152602001858152602001846001600160401b03168152602001831515815260200160405180602001604052806000815250815250611f41565b505050505050565b60006111e86002546001600160a01b031690565b905090565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6112216000336111ed565b61123d5760405162461bcd60e51b8152600401610a9090613d74565b63ffffffff821660008181526007602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527ffa4c8b7da61aa1077ba66c66c6642bb4db726707aa57cd3c501a1be85bcdb60391015b60405180910390a15050565b600254600090600160d01b900465ffffffffffff1680151580156112d757504265ffffffffffff821610155b6112e3576000806112f7565b600254600160a01b900465ffffffffffff16815b915091509091565b61130a6000336111ed565b6113265760405162461bcd60e51b8152600401610a9090613d74565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff113879fb49f207af6bab1407ed71952fb682642ad27456e2a6d37b8cdc2d42590602001610a5e565b61137f6000336111ed565b61139b5760405162461bcd60e51b8152600401610a9090613d74565b600654604080516001600160801b03928316815291831660208301527f486cc448e0a69274938b9dd93534dbe13876a4aaaddafc91cbe92fe02ed00b06910160405180910390a1600680546001600160801b0319166001600160801b0392909216919091179055565b600480546040516370a0823160e01b81523392810183905261147a92916001600160a01b0316906370a0823190602401602060405180830381865afa158015611451573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114759190613ef5565b612327565b565b6114876000336111ed565b6114a35760405162461bcd60e51b8152600401610a9090613d74565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527fd774f3d7380bde29204d92bbcfe68a2ffbdeb7634f7b3b7affa39d7fee0c36fb90602001610a5e565b600254600090600160d01b900465ffffffffffff16801515801561151c57504265ffffffffffff8216105b61153757600154600160d01b900465ffffffffffff1661154a565b600254600160a01b900465ffffffffffff165b91505090565b600061155a6115ce565b509050336001600160a01b038216146115c65760405162461bcd60e51b815260206004820152602860248201527f416363657373436f6e74726f6c3a2070656e64696e672061646d696e206d75736044820152671d081858d8d95c1d60c21b6064820152608401610a90565b61094b612888565b6001546001600160a01b03811691600160a01b90910465ffffffffffff1690565b6004805460408051635e280f1160e01b8152905133936001600160a01b0390931692635e280f11928082019260209290918290030181865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190613f0e565b6001600160a01b031614611684576040516321c6509b60e01b815260040160405180910390fd5b60045487906001600160a01b038083169116146116b4576040516301ab90c760e61b815260040160405180910390fd5b60006116c08787612953565b905060006116ce888861299e565b9050600080600080858060200190518101906116ea9190613f2b565b6040805160208101909152600081529397509195509350915060001960ff86160161172a57868060200190518101906117239190613f8a565b9450505050505b6003546040516370a0823160e01b815230600482015287916001600160a01b0316906370a0823190602401602060405180830381865afa158015611772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117969190613ef5565b101561181d576004805460405163a9059cbb60e01b81526001600160a01b039091169163a9059cbb916117cd9187918b9101613d5b565b6020604051808303816000875af11580156117ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118109190613d3e565b5050505050505050611cb9565b60048054604051632770a7eb60e21b81526001600160a01b0390911691639dc29fac9161184e9130918b9101613d5b565b600060405180830381600087803b15801561186857600080fd5b505af115801561187c573d6000803e3d6000fd5b50505060ff86169050611abe57600654600160801b900460ff1615806118a0575081155b156119205760035460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906118d79087908a90600401613d5b565b6020604051808303816000875af11580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190613d3e565b50611c88565b600354604051632e1a7d4d60e01b8152600481018890526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561196657600080fd5b505af115801561197a573d6000803e3d6000fd5b505050506000846001600160a01b03168760405160006040518083038185875af1925050503d80600081146119cb576040519150601f19603f3d011682016040523d82523d6000602084013e6119d0565b606091505b505090508061191a57600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a2957600080fd5b505af1158015611a3d573d6000803e3d6000fd5b505060035460405163a9059cbb60e01b81526001600160a01b03909116935063a9059cbb9250611a74915087908b90600401613d5b565b6020604051808303816000875af1158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190613d3e565b5050611c88565b60035460055460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611af4929116908a90600401613d5b565b6020604051808303816000875af1158015611b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b379190613d3e565b506005546040516316d3253b60e11b81526001600160a01b0390911690632da64a7690611b70908690889087908c908890600401614051565b600060405180830381600087803b158015611b8a57600080fd5b505af1925050508015611b9b575060015b611c7c573d808015611bc9576040519150601f19603f3d011682016040523d82523d6000602084013e611bce565b606091505b5060035460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611c019087908b90600401613d5b565b6020604051808303816000875af1158015611c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c449190613d3e565b5060035460055460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611a7492911690600090600401613d5b565b50505050505050611cb9565b6040517f13a76bc2d7c38575da4637abf1baceef95c05e258ec9ea07aac17d79cb70a83190600090a1505050505050505b5050505050505050565b81611d365760405162461bcd60e51b815260206004820152603760248201527f416363657373436f6e74726f6c3a2063616e2774206469726563746c7920726560448201527f766f6b652064656661756c742061646d696e20726f6c650000000000000000006064820152608401610a90565b610d5e82826129be565b6000611d4b81611f2c565b61094b6129e3565b61094b33826129ee565b611d686000336111ed565b611d845760405162461bcd60e51b8152600401610a9090613d74565b6001600160a01b038216611dab57604051634e46966960e11b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611df8576040519150601f19603f3d011682016040523d82523d6000602084013e611dfd565b606091505b5050905080611e1f576040516327fcd9d160e01b815260040160405180910390fd5b7f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648383604051610ee9929190613d5b565b611e5b6000336111ed565b611e775760405162461bcd60e51b8152600401610a9090613d74565b610d5e82826129ee565b600480546040516370a0823160e01b81523392810183905261147a92916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190613ef5565b6129ee565b60006001600160e01b03198216637965db0b60e01b148061093257506301ffc9a760e01b6001600160e01b0319831614610932565b61094b8133612b86565b61147a600080612bdf565b6000611f4c82612524565b60048054604051633b6f743b60e01b81529293506000926001600160a01b0390911691633b6f743b91611f83918691869101613e67565b6040805180830381865afa158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc39190613ed9565b9050600082604001518460800151611fdb91906140a2565b600654909150600090600160801b900460ff161561208257600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db085604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561204757600080fd5b505af115801561205b573d6000803e3d6000fd5b50505050508360400151823461207191906140a2565b61207b91906140a2565b9050612108565b60035460808601516040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156120df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121039190613d3e565b503490505b6004805460408087015190516340c10f1960e01b81526001600160a01b03909216926340c10f199261213e923092909101613d5b565b600060405180830381600087803b15801561215857600080fd5b505af115801561216c573d6000803e3d6000fd5b505060048054606089015160405163c7c7f5b360e01b81526001600160a01b03909216945063c7c7f5b3935085926121aa928a928a929091016140b5565b60c06040518083038185885af11580156121c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121ed91906140f4565b50506121fd856060015183612c9f565b6040517f92e769a26f7d1d5adb6430709a0d3d57ef7f41ed81d3ca026964ce4f724350d590600090a15050505050565b60008281526020819052604090206001015461224881611f2c565b6122528383612da0565b505050565b6001600160a01b03811633146122c75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a90565b610d5e8282612e4a565b6122528363a9059cbb60e01b84846040516024016122f0929190613d5b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612e85565b6003546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123979190613ef5565b10156123b65760405163c6c13aa760e01b815260040160405180910390fd5b60048054604051632770a7eb60e21b81526001600160a01b0390911691639dc29fac916123e7918791879101613d5b565b600060405180830381600087803b15801561240157600080fd5b505af1158015612415573d6000803e3d6000fd5b5050600354604051632e1a7d4d60e01b8152600481018690526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b15801561245f57600080fd5b505af1158015612473573d6000803e3d6000fd5b505050506000836001600160a01b03168360405160006040518083038185875af1925050503d80600081146124c4576040519150601f19603f3d011682016040523d82523d6000602084013e6124c9565b606091505b50509050806124eb576040516312171d8360e31b815260040160405180910390fd5b6040518381527f04b0a3a0ab96097f4ab2292b42474f44218859ae0f669c636c01fa72712f11219060200160405180910390a150505050565b61256d6040518060e00160405280600063ffffffff1681526020016000801916815260200160008152602001600081526020016060815260200160608152602001606081525090565b60208281015163ffffffff1660009081526007825260408082205481516001600160a01b03909116818501528151808203909401845281019052906125b19061417d565b9050600061261a60008560a001516001600160401b03166000612612600660009054906101000a90046001600160801b0316600061260b60408051600360f01b602082015281516002818303018152602290910190915290565b9190612f5a565b929190612fc2565b845190915060609060ff16612688578451604080870151606088015160c0890151925161267294939060200160ff9490941684526001600160a01b039283166020850152911660408301521515606082015260800190565b60405160208183030381529060405290506126c1565b8451604080870151606088015160c089015160e08a015193516126af9594906020016141a4565b60405160208183030381529060405290505b6000600460009054906101000a90046001600160a01b03166001600160a01b031663963efcaa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273a9190613ef5565b905060008182886080015161274f91906141e1565b6127599190614203565b6040805160e0810182526020998a015163ffffffff1681528981019790975286810182905260608701919091526080860194909452505060a0830152805193840190526000835260c08101929092525090565b60006127b66114f1565b6127bf4261300c565b6127c9919061421a565b90506127d58282613077565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b600061282a826130f6565b6128334261300c565b61283d919061421a565b90506128498282612bdf565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910161129f565b6000806128936115ce565b915091506128a88165ffffffffffff16151590565b80156128bb57504265ffffffffffff8216105b6129185760405162461bcd60e51b815260206004820152602860248201527f416363657373436f6e74726f6c3a207472616e736665722064656c6179206e6f6044820152671d081c185cdcd95960c21b6064820152608401610a90565b612934600061292f6002546001600160a01b031690565b612e4a565b61293f600083612da0565b5050600180546001600160d01b0319169055565b606061296282604c8186614240565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b60006129ae602c600c8486614240565b6129b79161426a565b9392505050565b6000828152602081905260409020600101546129d981611f2c565b6122528383612e4a565b61147a600080613077565b6003546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5e9190613ef5565b1015612a7d5760405163c6c13aa760e01b815260040160405180910390fd5b60048054604051632770a7eb60e21b81526001600160a01b0390911691639dc29fac91612aae918791879101613d5b565b600060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505060035460405163a9059cbb60e01b81526001600160a01b03909116925063a9059cbb9150612b129086908690600401613d5b565b6020604051808303816000875af1158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b559190613d3e565b506040518281527f04b0a3a0ab96097f4ab2292b42474f44218859ae0f669c636c01fa72712f112190602001610ee9565b612b9082826111ed565b610d5e57612b9d8161313e565b612ba8836020613150565b604051602001612bb9929190614288565b60408051601f198184030181529082905262461bcd60e51b8252610a90916004016142fd565b600254600160d01b900465ffffffffffff168015612c62574265ffffffffffff82161015612c3857600254600180546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055612c62565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b50600280546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b8015610d5e57600654600160801b900460ff1615612d2b576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d04576040519150601f19603f3d011682016040523d82523d6000602084013e612d09565b606091505b5050905080612252576040516312171d8360e31b815260040160405180910390fd5b60035460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612d5d9085908590600401613d5b565b6020604051808303816000875af1158015612d7c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122529190613d3e565b81612e40576000612db96002546001600160a01b031690565b6001600160a01b031614612e245760405162461bcd60e51b815260206004820152602c60248201527f416363657373436f6e74726f6c3a2064656661756c742061646d696e20616c7260448201526b1958591e4819dc985b9d195960a21b6064820152608401610a90565b600280546001600160a01b0319166001600160a01b0383161790555b610d5e82826132eb565b81158015612e6557506002546001600160a01b038281169116145b15612e7b57600280546001600160a01b03191690555b610d5e828261336f565b6000612eda826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133d49092919063ffffffff16565b9050805160001480612efb575080806020019051810190612efb9190613d3e565b6122525760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a90565b6060836003612f6a8260006133eb565b61ffff1614612f9e57612f7e8160006133eb565b604051633a51740d60e01b815261ffff9091166004820152602401610a90565b6000612faa8585613448565b9050612fb8866001836134c0565b9695505050505050565b6060846003612fd28260006133eb565b61ffff1614612fe657612f7e8160006133eb565b6000612ff386868661352b565b9050613001876003836134c0565b979650505050505050565b600065ffffffffffff8211156130735760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610a90565b5090565b60006130816115ce565b6001805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b0388161717905591506130c390508165ffffffffffff16151590565b15612252576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a1505050565b6000806131016114f1565b90508065ffffffffffff168365ffffffffffff1611613129576131248382614310565b6129b7565b6129b765ffffffffffff8416620697806135ce565b60606109326001600160a01b03831660145b6060600061315f836002614203565b61316a90600261432f565b6001600160401b0381111561318157613181613866565b6040519080825280601f01601f1916602001820160405280156131ab576020820181803683370190505b509050600360fc1b816000815181106131c6576131c6614342565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106131f5576131f5614342565b60200101906001600160f81b031916908160001a9053506000613219846002614203565b61322490600161432f565b90505b600181111561329c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061325857613258614342565b1a60f81b82828151811061326e5761326e614342565b60200101906001600160f81b031916908160001a90535060049490941c9361329581614358565b9050613227565b5083156129b75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a90565b6132f582826111ed565b610d5e576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561332b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61337982826111ed565b15610d5e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606133e384846000856135e4565b949350505050565b60006133f882600261432f565b8351101561343f5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606401610a90565b50016002015190565b60606001600160801b0382161561349057604080516001600160801b0319608086811b8216602084015285901b166030820152016040516020818303038152906040526129b7565b6040516001600160801b0319608085901b1660208201526030016040516020818303038152906040529392505050565b60608360036134d08260006133eb565b61ffff16146134e457612f7e8160006133eb565b8460016134f185516136b4565b6134fc90600161436f565b868660405160200161351295949392919061438a565b6040516020818303038152906040529150509392505050565b60606001600160801b03821615613588576040516001600160f01b031960f086901b1660208201526001600160801b0319608085811b8216602284015284901b1660328201526042016040516020818303038152906040526133e3565b6040516001600160f01b031960f086901b1660208201526001600160801b0319608085901b16602282015260320160405160208183030381529060405290509392505050565b60008183106135dd57816129b7565b5090919050565b6060824710156136455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a90565b600080866001600160a01b0316858760405161366191906143f1565b60006040518083038185875af1925050503d806000811461369e576040519150601f19603f3d011682016040523d82523d6000602084013e6136a3565b606091505b509150915061300187838387613717565b600061ffff8211156130735760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201526536206269747360d01b6064820152608401610a90565b6060831561378657825160000361377f576001600160a01b0385163b61377f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a90565b50816133e3565b6133e3838381511561379b5781518083602001fd5b8060405162461bcd60e51b8152600401610a9091906142fd565b6000602082840312156137c757600080fd5b81356001600160e01b0319811681146129b757600080fd5b6000602082840312156137f157600080fd5b5035919050565b6001600160a01b038116811461094b57600080fd5b60006020828403121561381f57600080fd5b81356129b7816137f8565b803563ffffffff8116811461383e57600080fd5b919050565b801515811461094b57600080fd5b6001600160401b038116811461094b57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138a4576138a4613866565b604052919050565b60006001600160401b038211156138c5576138c5613866565b50601f01601f191660200190565b600082601f8301126138e457600080fd5b81356138f76138f2826138ac565b61387c565b81815284602083860101111561390c57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060e0888a03121561394457600080fd5b61394d8861382a565b9650602088013561395d816137f8565b9550604088013561396d816137f8565b945060608801359350608088013561398481613843565b925060a088013561399481613851565b915060c08801356001600160401b038111156139af57600080fd5b6139bb8a828b016138d3565b91505092959891949750929550565b600080604083850312156139dd57600080fd5b8235915060208301356139ef816137f8565b809150509250929050565b600080600060608486031215613a0f57600080fd5b8335613a1a816137f8565b92506020840135613a2a816137f8565b929592945050506040919091013590565b600060208284031215613a4d57600080fd5b81356129b781613843565b60ff8116811461094b57600080fd5b600080600080600080600080610100898b031215613a8457600080fd5b8835613a8f81613a58565b9750613a9d60208a0161382a565b96506040890135613aad816137f8565b95506060890135613abd816137f8565b94506080890135935060a0890135613ad481613851565b925060c0890135613ae481613843565b915060e08901356001600160401b03811115613aff57600080fd5b613b0b8b828c016138d3565b9150509295985092959890939650565b600060208284031215613b2d57600080fd5b813565ffffffffffff811681146129b757600080fd5b60008060408385031215613b5657600080fd5b8235613b61816137f8565b946020939093013593505050565b60008060008060008060c08789031215613b8857600080fd5b613b918761382a565b95506020870135613ba1816137f8565b94506040870135613bb1816137f8565b9350606087013592506080870135613bc881613851565b915060a0870135613bd881613843565b809150509295509295509295565b60008060408385031215613bf957600080fd5b613c028361382a565b915060208301356139ef816137f8565b600060208284031215613c2457600080fd5b81356001600160801b03811681146129b757600080fd5b600060208284031215613c4d57600080fd5b6129b78261382a565b60008083601f840112613c6857600080fd5b5081356001600160401b03811115613c7f57600080fd5b602083019150836020828501011115613c9757600080fd5b9250929050565b600080600080600080600060a0888a031215613cb957600080fd5b8735613cc4816137f8565b96506020880135955060408801356001600160401b0380821115613ce757600080fd5b613cf38b838c01613c56565b909750955060608a01359150613d08826137f8565b90935060808901359080821115613d1e57600080fd5b50613d2b8a828b01613c56565b989b979a50959850939692959293505050565b600060208284031215613d5057600080fd5b81516129b781613843565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526927b7363c9030b236b4b760b11b604082015260600190565b60005b83811015613db3578181015183820152602001613d9b565b50506000910152565b60008151808452613dd4816020860160208601613d98565b601f01601f19169290920160200192915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e06080850152613e2b60e0850182613dbc565b905060a083015184820360a0860152613e448282613dbc565b91505060c083015184820360c0860152613e5e8282613dbc565b95945050505050565b604081526000613e7a6040830185613de8565b905082151560208301529392505050565b600060408284031215613e9d57600080fd5b604051604081018181106001600160401b0382111715613ebf57613ebf613866565b604052825181526020928301519281019290925250919050565b600060408284031215613eeb57600080fd5b6129b78383613e8b565b600060208284031215613f0757600080fd5b5051919050565b600060208284031215613f2057600080fd5b81516129b7816137f8565b60008060008060808587031215613f4157600080fd5b8451613f4c81613a58565b6020860151909450613f5d816137f8565b6040860151909350613f6e816137f8565b6060860151909250613f7f81613843565b939692955090935050565b600080600080600060a08688031215613fa257600080fd5b8551613fad81613a58565b6020870151909550613fbe816137f8565b6040870151909450613fcf816137f8565b6060870151909350613fe081613843565b60808701519092506001600160401b03811115613ffc57600080fd5b8601601f8101881361400d57600080fd5b805161401b6138f2826138ac565b81815289602083850101111561403057600080fd5b614041826020830160208601613d98565b8093505050509295509295909350565b6001600160a01b0386811682528516602082015283151560408201526060810183905260a06080820181905260009061300190830184613dbc565b634e487b7160e01b600052601160045260246000fd5b818103818111156109325761093261408c565b6080815260006140c86080830186613de8565b8451602084810191909152909401516040830152506001600160a01b0391909116606090910152919050565b60008082840360c081121561410857600080fd5b608081121561411657600080fd5b50604051606081018181106001600160401b038211171561413957614139613866565b60405283518152602084015161414e81613851565b60208201526141608560408601613e8b565b604082015291506141748460808501613e8b565b90509250929050565b8051602080830151919081101561419e576000198160200360031b1b821691505b50919050565b60ff861681526001600160a01b03858116602083015284166040820152821515606082015260a06080820181905260009061300190830184613dbc565b6000826141fe57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176109325761093261408c565b65ffffffffffff8181168382160190808211156142395761423961408c565b5092915050565b6000808585111561425057600080fd5b8386111561425d57600080fd5b5050820193919092039150565b8035602083101561093257600019602084900360031b1b1692915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516142c0816017850160208801613d98565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516142f1816028840160208801613d98565b01602801949350505050565b6020815260006129b76020830184613dbc565b65ffffffffffff8281168282160390808211156142395761423961408c565b808201808211156109325761093261408c565b634e487b7160e01b600052603260045260246000fd5b6000816143675761436761408c565b506000190190565b61ffff8181168382160190808211156142395761423961408c565b6000865161439c818460208b01613d98565b6001600160f81b031960f888811b82169285019283526001600160f01b031960f089901b16600184015286901b16600382015283516143e2816004840160208801613d98565b01600401979650505050505050565b60008251614403818460208701613d98565b919091019291505056fea26469706673582212209cca1b67be64c85dbc9a037839a902f5030bc8c61067d7db5aa4cd03031d153464736f6c634300081800330000000000000000000000002170ed0880ac9a755fd29b2688956bd959f933f80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640f01a1364bebbca9b7e39ff59b619b1df7a80f