0 txs
0 calls
constructor
constructor(uint8 _binSponsor, address _dataProvider)
functions
binSponsor
viewfunction binSponsor() view returns (uint8)
dataProvider
viewfunction dataProvider() view returns (address)
destinationData
viewfunction destinationData(address token) view returns (tuple)
getLiquidAssetWithdrawQueue
viewfunction getLiquidAssetWithdrawQueue(address asset) view returns (address)
getRefundWallet
viewfunction getRefundWallet() view returns (address)
paused
viewfunction paused() view returns (bool)
prepareRideBus
viewfunction prepareRideBus(address token, uint256 amount) view returns (address stargate, uint256 valueToSend, uint256 minReturnFromStargate, tuple sendParam, tuple messagingFee)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
roleRegistry
viewfunction roleRegistry() view returns (address)
SETTLEMENT_DISPATCHER_BRIDGER_ROLE
viewfunction SETTLEMENT_DISPATCHER_BRIDGER_ROLE() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
bridge
payablefunction bridge(address token, uint256 amount, uint256 minReturnLD) payable
initialize
nonpayablefunction initialize(address _roleRegistry, address[] _tokens, tuple[] _destDatas)
pause
nonpayablefunction pause()
setDestinationData
nonpayablefunction setDestinationData(address[] tokens, tuple[] destDatas)
setLiquidAssetWithdrawQueue
nonpayablefunction setLiquidAssetWithdrawQueue(address asset, address boringQueue)
transferFundsToRefundWallet
nonpayablefunction transferFundsToRefundWallet(address asset, uint256 amount)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawFunds
nonpayablefunction withdrawFunds(address token, address recipient, uint256 amount)
withdrawLiquidAsset
nonpayablefunction withdrawLiquidAsset(address liquidToken, address assetOut, uint128 amount, uint128 minReturn, uint16 discount, uint24 secondsToDeadline)
events
DestinationDataSet
event DestinationDataSet(address[] tokens, (uint32 destEid, address destRecipient, address stargate)[] destDatas)
FundsBridgedWithStargate
event FundsBridgedWithStargate(address indexed token, uint256 amount, (uint72 ticketId, bytes passengerBytes) ticket)
FundsWithdrawn
event FundsWithdrawn(address indexed token, uint256 amount, address indexed recipient)
Initialized
event Initialized(uint64 version)
LiquidWithdrawalRequested
event LiquidWithdrawalRequested(address indexed liquidToken, address indexed assetOut, uint128 amountToWithdraw, uint128 amountOut)
LiquidWithdrawQueueSet
event LiquidWithdrawQueueSet(address indexed token, address indexed boringQueue)
Paused
event Paused(address account)
TransferToRefundWallet
event TransferToRefundWallet(address asset, address refundWallet, uint256 amount)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ArrayLengthMismatch
error ArrayLengthMismatch()
CannotWithdrawZeroAmount
error CannotWithdrawZeroAmount()
DestinationDataNotSet
error DestinationDataNotSet()
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance()
InsufficientFeeToCoverCost
error InsufficientFeeToCoverCost()
InsufficientMinReturn
error InsufficientMinReturn()
InsufficientReturnAmount
error InsufficientReturnAmount()
InvalidBoringQueue
error InvalidBoringQueue()
InvalidInitialization
error InvalidInitialization()
InvalidValue
error InvalidValue()
LiquidWithdrawConfigNotSet
error LiquidWithdrawConfigNotSet()
NotInitializing
error NotInitializing()
OnlyRoleRegistryOwner
error OnlyRoleRegistryOwner()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RefundWalletNotSet
error RefundWalletNotSet()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StargateValueInvalid
error StargateValueInvalid()
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
WithdrawFundsFailed
error WithdrawFundsFailed()
creation bytecode
0x60e060405230608052348015610013575f5ffd5b50604051612e3f380380612e3f83398101604081905261003291610127565b61003a610075565b81600181111561004c5761004c61016d565b60a08160018111156100605761006061016d565b9052506001600160a01b031660c05250610181565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100c55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101245780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f5f60408385031215610138575f5ffd5b825160028110610146575f5ffd5b60208401519092506001600160a01b0381168114610162575f5ffd5b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60805160a05160c051612c7f6101c05f395f81816103a8015261097701525f6104b101525f8181611839015281816118620152611a1b0152612c7f5ff3fe608060405260043610610129575f3560e01c80634f1ef286116100a85780638456cb591161006d5780638456cb5914610346578063ad3cb1cc1461035a578063b334ed8614610397578063be331978146103ca578063cc614d68146104a0578063da30eacd146104e0575f5ffd5b80634f1ef286146102a457806352d1902d146102b75780635703e434146102d95780635c975abb146102f85780635d8d032414610326575f5ffd5b80632a82afe2116100ee5780632a82afe21461020e5780632b03a50c14610222578063391c13f5146102415780633c6f7179146102605780633f4ba83a14610290575f5ffd5b806308c73259146101345780630bf5d35e146101655780631c20fadd1461017a5780631eb2b17e1461019957806322d932f4146101ef575f5ffd5b3661013057005b5f5ffd5b34801561013f575f5ffd5b506101486104ff565b6040516001600160a01b0390911681526020015b60405180910390f35b610178610173366004612110565b61052d565b005b348015610185575f5ffd5b50610178610194366004612142565b61070d565b3480156101a4575f5ffd5b506101486101b3366004612180565b6001600160a01b039081165f9081527f78555946a409defb00fb08ff23c8988ad687a02e1525a4fc9b7fd83443409e0160205260409020541690565b3480156101fa575f5ffd5b5061017861020936600461219b565b610832565b348015610219575f5ffd5b50610148610974565b34801561022d575f5ffd5b5061017861023c3660046121c5565b6109fa565b34801561024c575f5ffd5b5061017861025b366004612210565b610bca565b34801561026b575f5ffd5b5061027f61027a36600461219b565b610e84565b60405161015c95949392919061233e565b34801561029b575f5ffd5b5061017861122e565b6101786102b236600461243b565b611295565b3480156102c2575f5ffd5b506102cb6112b0565b60405190815260200161015c565b3480156102e4575f5ffd5b506101786102f336600461254e565b6112cb565b348015610303575f5ffd5b505f516020612c335f395f51905f525460ff16604051901515815260200161015c565b348015610331575f5ffd5b506102cb5f516020612c535f395f51905f5281565b348015610351575f5ffd5b5061017861136c565b348015610365575f5ffd5b5061038a604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161015c91906125b8565b3480156103a2575f5ffd5b506101487f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d5575f5ffd5b506104676103e4366004612180565b60408051606080820183525f80835260208084018290529284018190526001600160a01b0394851681527f78555946a409defb00fb08ff23c8988ad687a02e1525a4fc9b7fd83443409e00835283902083519182018452805463ffffffff8116835264010000000090048516928201929092526001909101549092169082015290565b60408051825163ffffffff1681526020808401516001600160a01b0390811691830191909152928201519092169082015260600161015c565b3480156104ab575f5ffd5b506104d37f000000000000000000000000000000000000000000000000000000000000000081565b60405161015c91906125ca565b3480156104eb575f5ffd5b506101786104fa3660046125f0565b6113d1565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f500546001600160a01b031690565b6105356114ed565b5f516020612c535f395f51905f5261054b6104ff565b604051632474521560e21b8152600481018390523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa158015610596573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ba9190612670565b6105d6576040516282b42960e81b815260040160405180910390fd5b5f5f5f5f5f6105e58989610e84565b9450945094509450945082871115610610576040516395d2fadd60e01b815260040160405180910390fd5b83471015610631576040516357630bad60e11b815260040160405180910390fd5b6106456001600160a01b038a16868a61151d565b5f856001600160a01b031663cbef2aa9868585306040518563ffffffff1660e01b81526004016106779392919061268f565b5f6040518083038185885af1158015610692573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526106ba91908101906127af565b92505050896001600160a01b03167fe80703b9d39d09d58bef629ae1125035c47d1da0342880315557c8ca9a2151cb8a836040516106f992919061284b565b60405180910390a250505050505050505050565b6107156115da565b3361071e6104ff565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190612881565b6001600160a01b0316146107a45760405163ab1899a760e01b815260040160405180910390fd5b6001600160a01b0382166107cb57604051632a9ffab760e21b815260040160405180910390fd5b6107d6838383611647565b9050816001600160a01b0316836001600160a01b03167fe9171aeff46c37ab955b8aff908e14ae9732bd06634fa131226cfe5c25bfd2fb8360405161081d91815260200190565b60405180910390a361082d6117a5565b505050565b61083a6115da565b5f516020612c535f395f51905f526108506104ff565b604051632474521560e21b8152600481018390523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf9190612670565b6108db576040516282b42960e81b815260040160405180910390fd5b5f6108e4610974565b90506001600160a01b03811661090d57604051630e8db52160e41b815260040160405180910390fd5b610918848285611647565b604080516001600160a01b038088168252841660208201529081018290529093507fd8f7c78f293a52ff06285b09819d7625a13eb9080c991b7fac88cbf2b7239e899060600160405180910390a150506109706117a5565b5050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632a82afe26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f59190612881565b905090565b33610a036104ff565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a629190612881565b6001600160a01b031614610a895760405163ab1899a760e01b815260040160405180910390fd5b6001600160a01b0382161580610aa657506001600160a01b038116155b15610ac457604051632a9ffab760e21b815260040160405180910390fd5b806001600160a01b031663f3b977846040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b249190612881565b6001600160a01b0316826001600160a01b031614610b55576040516335c66c9960e01b815260040160405180910390fd5b6001600160a01b038281165f8181527f78555946a409defb00fb08ff23c8988ad687a02e1525a4fc9b7fd83443409e01602052604080822080546001600160a01b0319169486169485179055517fdd001770b3f22fb8a32aee0705976d01646098f9c1254e8064d2ee09184490189190a35050565b5f516020612c535f395f51905f52610be06104ff565b604051632474521560e21b8152600481018390523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa158015610c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190612670565b610c6b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038781165f9081527f78555946a409defb00fb08ff23c8988ad687a02e1525a4fc9b7fd83443409e0160205260409020541680610cc257604051631d08fca760e11b815260040160405180910390fd5b60405163734d18e160e11b81526001600160a01b0388811660048301526001600160801b038816602483015261ffff861660448301525f919083169063e69a31c290606401602060405180830381865afa158015610d22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d46919061289c565b9050856001600160801b0316816001600160801b03161015610d7b5760405163cea9e31d60e01b815260040160405180910390fd5b610d986001600160a01b038a16836001600160801b038a1661151d565b6040516335d9da3b60e11b81526001600160a01b0389811660048301526001600160801b038916602483015261ffff8716604483015262ffffff86166064830152831690636bb3b476906084016020604051808303815f875af1158015610e01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2591906128b7565b50604080516001600160801b03808a168252831660208201526001600160a01b03808b1692908c16917f51bf130244aab3e8452888df64bfe19c8c35a258af2516c5c1b791db7eae2f85910160405180910390a3505050505050505050565b5f5f5f610ec96040518060e001604052805f63ffffffff1681526020015f81526020015f81526020015f81526020016060815260200160608152602001606081525090565b604080518082019091525f80825260208201526001600160a01b0387161580610ef0575085155b15610f0e57604051632a9ffab760e21b815260040160405180910390fd5b6040516370a0823160e01b815230600482015286906001600160a01b038916906370a0823190602401602060405180830381865afa158015610f52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7691906128b7565b1015610f9557604051631e9acf1760e31b815260040160405180910390fd5b5f7f78555946a409defb00fb08ff23c8988ad687a02e1525a4fc9b7fd83443409e006001600160a01b03808a165f90815260209283526040908190208151606081018352815463ffffffff811682526401000000009004841694810185905260019091015490921690820152915061102057604051633df3d86f60e01b815260040160405180910390fd5b604081810151815160e081018352835163ffffffff1681526020808501516001600160a01b0316818301528184018b9052606082018b905283515f808252818301865260808401919091528451908152808201855260a083015283516001808252818601909552929950909260c084019291820181803683375050509052604051630d35b41560e01b81529093505f906001600160a01b03881690630d35b415906110cf9087906004016128ce565b5f60405180830381865afa1580156110e9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261111091908101906128e0565b602081018051606089015251604051633b6f743b60e01b81529098509093506001600160a01b038a169250633b6f743b91506111529087905f90600401612a29565b6040805180830381865afa15801561116c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111909190612a4c565b9250825f015195505f6001600160a01b0316876001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111de573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112029190612881565b6001600160a01b03160361122257604084015161121f9087612a66565b95505b50509295509295909350565b6112366104ff565b6040516317bf301f60e21b81523360048201526001600160a01b039190911690635efcc07c906024015f6040518083038186803b158015611275575f5ffd5b505afa158015611287573d5f5f3e3d5ffd5b505050506112936117cf565b565b61129d61182e565b6112a6826118d2565b610970828261194f565b5f6112b9611a10565b505f516020612c135f395f51905f5290565b336112d46104ff565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113339190612881565b6001600160a01b03161461135a5760405163ab1899a760e01b815260040160405180910390fd5b61136684848484611a59565b50505050565b6113746104ff565b604051632fd0067b60e21b81523360048201526001600160a01b03919091169063bf4019ec906024015f6040518083038186803b1580156113b3575f5ffd5b505afa1580156113c5573d5f5f3e3d5ffd5b50505050611293611d02565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156114155750825b90505f826001600160401b031660011480156114305750303b155b90508115801561143e575080155b1561145c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561148657845460ff60401b1916600160401b1785555b61148f8a611d4a565b61149b89898989611a59565b83156114e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f516020612c335f395f51905f525460ff16156112935760405163d93c066560e01b815260040160405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261156e8482611d9c565b611366576040516001600160a01b0384811660248301525f60448301526115d091869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611de7565b6113668482611de7565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c1561161a57604051633ee5aeb560e01b815260040160405180910390fd5b61129360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90611e53565b5f6001600160a01b0384166116f757815f03611661574791505b815f036116815760405163c740c32d60e01b815260040160405180910390fd5b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f81146116ca576040519150601f19603f3d011682016040523d82523d5f602084013e6116cf565b606091505b50509050806116f157604051632607a81f60e11b815260040160405180910390fd5b5061179b565b815f03611767576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611740573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176491906128b7565b91505b815f036117875760405163c740c32d60e01b815260040160405180910390fd5b61179b6001600160a01b0385168484611e5a565b50805b9392505050565b6112935f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00611641565b6117d7611e8b565b5f516020612c335f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806118b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118a85f516020612c135f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112935760405163703e46dd60e11b815260040160405180910390fd5b5f7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f5008054604051634766d28760e01b81523360048201529192506001600160a01b031690634766d287906024015f6040518083038186803b158015611935575f5ffd5b505afa158015611947573d5f5f3e3d5ffd5b505050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119a9575060408051601f3d908101601f191682019092526119a6918101906128b7565b60015b6119d657604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f516020612c135f395f51905f528114611a0657604051632a87526960e21b8152600481018290526024016119cd565b61082d8383611eba565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112935760405163703e46dd60e11b815260040160405180910390fd5b82818114611a7a5760405163512509d360e11b815260040160405180910390fd5b7f78555946a409defb00fb08ff23c8988ad687a02e1525a4fc9b7fd83443409e005f5b82811015611cbc575f878783818110611ab857611ab8612a85565b9050602002016020810190611acd9190612180565b6001600160a01b03161480611b1357505f858583818110611af057611af0612a85565b9050606002016020016020810190611b089190612180565b6001600160a01b0316145b80611b4f57505f858583818110611b2c57611b2c612a85565b9050606002016040016020810190611b449190612180565b6001600160a01b0316145b15611b6d57604051632a9ffab760e21b815260040160405180910390fd5b868682818110611b7f57611b7f612a85565b9050602002016020810190611b949190612180565b6001600160a01b0316858583818110611baf57611baf612a85565b9050606002016040016020810190611bc79190612180565b6001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c269190612881565b6001600160a01b031614611c4d5760405163b0fcd49560e01b815260040160405180910390fd5b848482818110611c5f57611c5f612a85565b905060600201825f015f898985818110611c7b57611c7b612a85565b9050602002016020810190611c909190612180565b6001600160a01b0316815260208101919091526040015f20611cb28282612aaa565b5050600101611a9d565b507fd9ff2f11405f70248dd845c1310ceb089c99cb9fa3e609d251cf0e45b2b88c9c86868686604051611cf29493929190612b31565b60405180910390a1505050505050565b611d0a6114ed565b5f516020612c335f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611810565b611d52611f0f565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f50080546001600160a01b0319166001600160a01b038316178155611d94611f58565b610970611f60565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611ddb57508115611dcd5780600114611ddb565b5f866001600160a01b03163b115b93505050505b92915050565b5f5f60205f8451602086015f885af180611e06576040513d5f823e3d81fd5b50505f513d91508115611e1d578060011415611e2a565b6001600160a01b0384163b155b1561136657604051635274afe760e01b81526001600160a01b03851660048201526024016119cd565b80825d5050565b6040516001600160a01b0383811660248301526044820183905261082d91859182169063a9059cbb9060640161159e565b5f516020612c335f395f51905f525460ff1661129357604051638dfc202b60e01b815260040160405180910390fd5b611ec382611f80565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611f075761082d8282611fe3565b610970612055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661129357604051631afcd79f60e31b815260040160405180910390fd5b611293611f0f565b611f68611f0f565b5f516020612c335f395f51905f52805460ff19169055565b806001600160a01b03163b5f03611fb557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016119cd565b5f516020612c135f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611fff9190612bfc565b5f60405180830381855af49150503d805f8114612037576040519150601f19603f3d011682016040523d82523d5f602084013e61203c565b606091505b509150915061204c858383612074565b95945050505050565b34156112935760405163b398979f60e01b815260040160405180910390fd5b60608261208957612084826120d0565b61179e565b81511580156120a057506001600160a01b0384163b155b156120c957604051639996b31560e01b81526001600160a01b03851660048201526024016119cd565b508061179e565b8051156120e05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b6001600160a01b03811681146120f9575f5ffd5b5f5f5f60608486031215612122575f5ffd5b833561212d816120fc565b95602085013595506040909401359392505050565b5f5f5f60608486031215612154575f5ffd5b833561215f816120fc565b9250602084013561216f816120fc565b929592945050506040919091013590565b5f60208284031215612190575f5ffd5b813561179e816120fc565b5f5f604083850312156121ac575f5ffd5b82356121b7816120fc565b946020939093013593505050565b5f5f604083850312156121d6575f5ffd5b82356121e1816120fc565b915060208301356121f1816120fc565b809150509250929050565b6001600160801b03811681146120f9575f5ffd5b5f5f5f5f5f5f60c08789031215612225575f5ffd5b8635612230816120fc565b95506020870135612240816120fc565b94506040870135612250816121fc565b93506060870135612260816121fc565b9250608087013561ffff81168114612276575f5ffd5b915060a087013562ffffff8116811461228d575f5ffd5b809150509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301525f608082015160e0608085015261230b60e085018261229b565b905060a083015184820360a0860152612324828261229b565b91505060c083015184820360c086015261204c828261229b565b60018060a01b038616815284602082015283604082015260c060608201525f61236a60c08301856122c9565b83516080840152602084015160a084015290509695505050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156123bd576123bd612387565b60405290565b604051606081016001600160401b03811182821017156123bd576123bd612387565b604051601f8201601f191681016001600160401b038111828210171561240d5761240d612387565b604052919050565b5f6001600160401b0382111561242d5761242d612387565b50601f01601f191660200190565b5f5f6040838503121561244c575f5ffd5b8235612457816120fc565b915060208301356001600160401b03811115612471575f5ffd5b8301601f81018513612481575f5ffd5b803561249461248f82612415565b6123e5565b8181528660208385010111156124a8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f8401126124d7575f5ffd5b5081356001600160401b038111156124ed575f5ffd5b6020830191508360208260051b8501011115612507575f5ffd5b9250929050565b5f5f83601f84011261251e575f5ffd5b5081356001600160401b03811115612534575f5ffd5b602083019150836020606083028501011115612507575f5ffd5b5f5f5f5f60408587031215612561575f5ffd5b84356001600160401b03811115612576575f5ffd5b612582878288016124c7565b90955093505060208501356001600160401b038111156125a0575f5ffd5b6125ac8782880161250e565b95989497509550505050565b602081525f61179e602083018461229b565b60208101600283106125ea57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f5f5f60608688031215612604575f5ffd5b853561260f816120fc565b945060208601356001600160401b03811115612629575f5ffd5b612635888289016124c7565b90955093505060408601356001600160401b03811115612653575f5ffd5b61265f8882890161250e565b969995985093965092949392505050565b5f60208284031215612680575f5ffd5b8151801515811461179e575f5ffd5b608081525f6126a160808301866122c9565b90506126ba602083018580518252602090810151910152565b6001600160a01b03929092166060919091015292915050565b5f604082840312156126e3575f5ffd5b6126eb61239b565b825181526020928301519281019290925250919050565b5f61270f61248f84612415565b9050828152838383011115612722575f5ffd5b8282602083015e5f602084830101529392505050565b5f60408284031215612748575f5ffd5b61275061239b565b9050815168ffffffffffffffffff8116811461276a575f5ffd5b815260208201516001600160401b03811115612784575f5ffd5b8201601f81018413612794575f5ffd5b6127a384825160208401612702565b60208301525092915050565b5f5f5f83850360e08112156127c2575f5ffd5b60808112156127cf575f5ffd5b506127d86123c3565b8451815260208501516001600160401b03811681146127f5575f5ffd5b602082015261280786604087016126d3565b6040820152925061281b85608086016126d3565b915060c08401516001600160401b03811115612835575f5ffd5b61284186828701612738565b9150509250925092565b8281526040602082015268ffffffffffffffffff82511660408201525f60208301516040606084015261204c608084018261229b565b5f60208284031215612891575f5ffd5b815161179e816120fc565b5f602082840312156128ac575f5ffd5b815161179e816121fc565b5f602082840312156128c7575f5ffd5b5051919050565b602081525f61179e60208301846122c9565b5f5f5f60a084860312156128f2575f5ffd5b6128fc85856126d3565b925060408401516001600160401b03811115612916575f5ffd5b8401601f81018613612926575f5ffd5b80516001600160401b0381111561293f5761293f612387565b8060051b61294f602082016123e5565b9182526020818401810192908101908984111561296a575f5ffd5b6020850192505b83831015612a0b5782516001600160401b0381111561298e575f5ffd5b85016040818c03601f190112156129a3575f5ffd5b6129ab61239b565b6020820151815260408201516001600160401b038111156129ca575f5ffd5b6020818401019250508b601f8301126129e1575f5ffd5b6129f08c835160208501612702565b60208201528084525050602082019150602083019250612971565b8096505050505050612a2085606086016126d3565b90509250925092565b604081525f612a3b60408301856122c9565b905082151560208301529392505050565b5f60408284031215612a5c575f5ffd5b61179e83836126d3565b80820180821115611de157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b63ffffffff811681146120f9575f5ffd5b8135612ab581612a99565b63ffffffff8116905081548163ffffffff1982161783556020840135612ada816120fc565b6001600160c01b03199190911690911760209190911b640100000000600160c01b0316178155600181016040830135612b12816120fc565b81546001600160a01b0319166001600160a01b03919091161790555050565b604080825281018490525f8560608301825b87811015612b73578235612b56816120fc565b6001600160a01b0316825260209283019290910190600101612b43565b50838103602080860191909152858252019050845f5b85811015612bef578135612b9c81612a99565b63ffffffff1683526020820135612bb2816120fc565b6001600160a01b031660208401526040820135612bce816120fc565b6001600160a01b031660408401526060928301929190910190600101612b89565b5090979650505050505050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300349c08c4c7eff6f18e11e7787aea968e8ed1e26c7307dfcd722a9d753313069da164736f6c634300081c000a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000004a9c44c97bbf6079db37c4769aebe425bbcdd09a