2 txs
3 calls
constructor
constructor(address _olas, address _proxyFactory, address _l2MessageRelayer, address _l1DepositProcessor, uint256 _l1SourceChainId)
functions
fxChild
viewfunction fxChild() view returns (address)
fxRootTunnel
viewfunction fxRootTunnel() view returns (address)
getBridgingDecimals
purefunction getBridgingDecimals() pure returns (uint256)
l1DepositProcessor
viewfunction l1DepositProcessor() view returns (address)
l1SourceChainId
viewfunction l1SourceChainId() view returns (uint256)
l2MessageRelayer
viewfunction l2MessageRelayer() view returns (address)
MAX_CHAIN_ID
viewfunction MAX_CHAIN_ID() view returns (uint256)
MAX_GAS_LIMIT
viewfunction MAX_GAS_LIMIT() view returns (uint256)
MIN_GAS_LIMIT
viewfunction MIN_GAS_LIMIT() view returns (uint256)
olas
viewfunction olas() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (uint8)
processedHashes
viewfunction processedHashes(bytes32) view returns (bool)
queuedHashes
viewfunction queuedHashes(bytes32) view returns (bool)
RECEIVE_MESSAGE
viewfunction RECEIVE_MESSAGE() view returns (bytes4)
stakingBatchNonce
viewfunction stakingBatchNonce() view returns (uint256)
stakingFactory
viewfunction stakingFactory() view returns (address)
withheldAmount
viewfunction withheldAmount() view returns (uint256)
changeOwner
nonpayablefunction changeOwner(address newOwner)
drain
nonpayablefunction drain() returns (uint256 amount)
migrate
nonpayablefunction migrate(address newL2TargetDispenser)
pause
nonpayablefunction pause()
processDataMaintenance
nonpayablefunction processDataMaintenance(bytes data)
processMessageFromRoot
nonpayablefunction processMessageFromRoot(uint256 stateId, address rootMessageSender, bytes data)
redeem
nonpayablefunction redeem(address target, uint256 amount, bytes32 batchHash)
setFxRootTunnel
nonpayablefunction setFxRootTunnel(address l1Processor)
syncWithheldAmount
payablefunction syncWithheldAmount(bytes bridgePayload) payable
unpause
nonpayablefunction unpause()
events
AmountWithheld
event AmountWithheld(address indexed target, uint256 amount)
Drain
event Drain(address indexed owner, uint256 amount)
FundsReceived
event FundsReceived(address indexed sender, uint256 value)
FxRootTunnelUpdated
event FxRootTunnelUpdated(address indexed fxRootTunnel)
LeftoversRefunded
event LeftoversRefunded(address indexed sender, uint256 leftovers)
MessagePosted
event MessagePosted(uint256 indexed sequence, address indexed messageSender, uint256 amount, bytes32 indexed batchHash)
MessageReceived
event MessageReceived(address indexed sender, uint256 chainId, bytes data)
MessageSent
event MessageSent(bytes message)
Migrated
event Migrated(address indexed sender, address indexed newL2TargetDispenser, uint256 amount)
OwnerUpdated
event OwnerUpdated(address indexed owner)
StakingRequestQueued
event StakingRequestQueued(bytes32 indexed queueHash, address indexed target, uint256 amount, bytes32 indexed batchHash, uint256 olasBalance, uint256 paused)
StakingTargetDeposited
event StakingTargetDeposited(address indexed target, uint256 amount, bytes32 indexed batchHash)
TargetDispenserPaused
event TargetDispenserPaused()
TargetDispenserUnpaused
event TargetDispenserUnpaused()
errors
AlreadyDelivered
error AlreadyDelivered(bytes32 deliveryHash)
IncorrectDataLength
error IncorrectDataLength(uint256 expected, uint256 provided)
InsufficientBalance
error InsufficientBalance(uint256 provided, uint256 expected)
LowerThan
error LowerThan(uint256 provided, uint256 expected)
ManagerOnly
error ManagerOnly(address sender, address manager)
Overflow
error Overflow(uint256 provided, uint256 max)
OwnerOnly
error OwnerOnly(address sender, address owner)
Paused
error Paused()
ReentrancyGuard
error ReentrancyGuard()
TargetAmountNotQueued
error TargetAmountNotQueued(address target, uint256 amount, bytes32 batchHash)
TargetRelayerOnly
error TargetRelayerOnly(address provided, address expected)
TransferFailed
error TransferFailed(address token, address from, address to, uint256 amount)
Unpaused
error Unpaused()
WrongAccount
error WrongAccount(address account)
WrongAmount
error WrongAmount(uint256 provided, uint256 expected)
WrongChainId
error WrongChainId(uint256 provided, uint256 expected)
WrongMessageSender
error WrongMessageSender(address provided, address expected)
WrongTokenAddress
error WrongTokenAddress(address provided, address expected)
ZeroAddress
error ZeroAddress()
ZeroValue
error ZeroValue()
creation bytecode
0x610120604052348015610010575f80fd5b5060405161249d38038061249d83398101604081905261002f916101c2565b8285858285856001600160a01b038516158061005257506001600160a01b038416155b8061006457506001600160a01b038316155b8061007657506001600160a01b038216155b156100945760405163d92e233d60e01b815260040160405180910390fd5b805f036100b457604051637c946ed760e01b815260040160405180910390fd5b60246100c860026001600160401b0361021c565b6100d2919061024d565b6001600160401b0316811115610130578060246100f760026001600160401b0361021c565b610101919061024d565b604051637ae5968560e01b815260048101929092526001600160401b0316602482015260440160405180910390fd5b6001600160a01b0394851660805292841660a05290831660c052821660e0526101005260028054600160a81b600160a01b6001600160a81b03199092163360ff60a01b1916179190911760ff60a81b1916179055600580546001600160a01b03191692909116919091179055506102809350505050565b80516001600160a01b03811681146101bd575f80fd5b919050565b5f805f805f60a086880312156101d6575f80fd5b6101df866101a7565b94506101ed602087016101a7565b93506101fb604087016101a7565b9250610209606087016101a7565b9150608086015190509295509295909350565b5f6001600160401b038381168061024157634e487b7160e01b5f52601260045260245ffd5b92169190910492915050565b6001600160401b0382811682821603908082111561027957634e487b7160e01b5f52601160045260245ffd5b5092915050565b60805160a05160c05160e051610100516121776103265f395f81816105bb0152611c3801525f818161033301528181611b4f01528181611bbe0152611bed01525f81816103000152818161147e01528181611ab10152611b2001525f8181610366015261164e01525f818161024401528181610d0f01528181610daf0152818161124b015281816113050152818161138f015281816117c9015261187701526121775ff3fe6080604052600436106101b1575f3560e01c80637f1e9cb0116100e75780639b7bb84711610087578063bddc966e11610062578063bddc966e1461060f578063ce5494bb1461062e578063e3f5aa511461064d578063f4427c2c14610663575f80fd5b80639b7bb847146105aa578063a6f9dae1146105dd578063a8b2ae02146105fc575f80fd5b80638da5cb5b116100c25780638da5cb5b146105395780639890220b14610558578063992c3e4b1461056c5780639a7c4b711461058b575f80fd5b80637f1e9cb0146104e75780638456cb5914610506578063888370941461051a575f80fd5b8063450d11f0116101525780635bc105c01161012d5780635bc105c0146104785780635c975abb1461048c5780637424ddc8146104be5780637ce1ffeb146104d1575f80fd5b8063450d11f01461039e57806354d20cc2146103bd5780635a7287cf14610456575f80fd5b80631bad59571161018d5780631bad5957146102ef578063256359a81461032257806329134768146103555780633f4ba83a14610388575f80fd5b806231d1151461023357806307d9c534146102835780631b2e7f0a146102c1575f80fd5b3661022f576002546001600160a01b03166101f85760405163cd3f165960e01b81525f60048201523360248201523060448201523460648201526084015b60405180910390fd5b60405134815233907f8e47b87b0ef542cdfa1659c551d88bad38aa7f452d2bbb349ab7530dfec8be8f9060200160405180910390a2005b5f80fd5b34801561023e575f80fd5b506102667f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561028e575f80fd5b506102b161029d366004611c77565b60036020525f908152604090205460ff1681565b604051901515815260200161027a565b3480156102cc575f80fd5b506102b16102db366004611c77565b60046020525f908152604090205460ff1681565b3480156102fa575f80fd5b506102667f000000000000000000000000000000000000000000000000000000000000000081565b34801561032d575f80fd5b506102667f000000000000000000000000000000000000000000000000000000000000000081565b348015610360575f80fd5b506102667f000000000000000000000000000000000000000000000000000000000000000081565b348015610393575f80fd5b5061039c610678565b005b3480156103a9575f80fd5b50600554610266906001600160a01b031681565b3480156103c8575f80fd5b5060408051808201909152601581527f726563656976654d6573736167652862797465732900000000000000000000006020909101526104257ff953cec75ae677942d7cda5cb6d12c0cb96a0904bf37d36301eef297b83c411d81565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161027a565b348015610461575f80fd5b5061046a5f5481565b60405190815260200161027a565b348015610483575f80fd5b5061046a610710565b348015610497575f80fd5b506002546104ac90600160a01b900460ff1681565b60405160ff909116815260200161027a565b61039c6104cc366004611cd3565b61073c565b3480156104dc575f80fd5b5061046a620493e081565b3480156104f2575f80fd5b50600654610266906001600160a01b031681565b348015610511575f80fd5b5061039c61090d565b348015610525575f80fd5b5061039c610534366004611d76565b6109b6565b348015610544575f80fd5b50600254610266906001600160a01b031681565b348015610563575f80fd5b5061046a610a73565b348015610577575f80fd5b5061039c610586366004611d98565b610be0565b348015610596575f80fd5b5061039c6105a5366004611dca565b610f24565b3480156105b5575f80fd5b5061046a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e8575f80fd5b5061039c6105f7366004611d76565b611004565b348015610607575f80fd5b50601261046a565b34801561061a575f80fd5b5061039c610629366004611cd3565b6110c1565b348015610639575f80fd5b5061039c610648366004611d76565b61110d565b348015610658575f80fd5b5061046a621e848081565b34801561066e575f80fd5b5061046a60015481565b6002546001600160a01b031633146106b85760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790556040517f20e9b9dbd8158c2b961d8645a7d06624a045634bb65f07ef751ae014a65f61f5905f90a1565b6024610725600267ffffffffffffffff611e74565b61072f9190611e9a565b67ffffffffffffffff1681565b6002546001600160a81b90910460ff16111561076b576040516345f5ce8b60e11b815260040160405180910390fd5b6002805460ff60a81b1916600160a91b1780825560ff600160a01b9091041690036107a9576040516313d0ff5960e31b815260040160405180910390fd5b5f54601281805f036107ce57604051637c946ed760e01b815260040160405180910390fd5b6107d88184611ec2565b5f908155600154604080516020810183905246918101919091523060608201529091906080016040516020818303038152906040528051906020012090505f80610823858985611434565b909250905080156108a957604051339082905f81818185875af1925050503d805f811461086b576040519150601f19603f3d011682016040523d82523d5f602084013e610870565b606091505b50506040518281523391507f8e49ed3e274fbea1556bdfaa9a37a0c28445bfe26d57beaf9f04fd517aa417419060200160405180910390a25b6108b4846001611f18565b6001556040518581528390339084907f1ff6d173c1ebeb42f666a09b94f554cf43eadf8054fda3247f56c343baab28f79060200160405180910390a450506002805460ff60a81b1916600160a81b179055505050505050565b6002546001600160a01b0316331461094d5760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740200000000000000000000000000000000000000001790556040517f8ef6a6615a637325c66275a8d4cadb0844f08a758e5a9df369412975bcdcbc48905f90a1565b6002546001600160a01b031633146109f65760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b6001600160a01b038116610a1d5760405163d92e233d60e01b815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f0dbabd9a07143f72b3cba582b51cec1eec13510cdd081ebf1f160e27268d5ca3905f90a250565b6002545f906001600160a81b90910460ff161115610aa4576040516345f5ce8b60e11b815260040160405180910390fd5b6002805460ff60a81b198116600160a91b179091556001600160a01b03163314610af65760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b479050805f03610b1957604051637c946ed760e01b815260040160405180910390fd5b6040515f90339083908381818185875af1925050503d805f8114610b58576040519150601f19603f3d011682016040523d82523d5f602084013e610b5d565b606091505b5050905080610b945760405163cd3f165960e01b81525f6004820152306024820152336044820152606481018390526084016101ef565b60405182815233907ff36f4d6622e16a536bbb049064af779cdd483a0b388d347d3752a65f1058bf5b9060200160405180910390a2506002805460ff60a81b1916600160a81b17905590565b6002546001600160a81b90910460ff161115610c0f576040516345f5ce8b60e11b815260040160405180910390fd5b6002805460ff60a81b1916600160a91b1780825560ff600160a01b909104169003610c4d576040516313d0ff5960e31b815260040160405180910390fd5b604080516001600160a01b0385166020820152908101839052606081018290524660808201523060a08201525f9060c00160408051601f1981840301815291815281516020928301205f818152600490935291205490915060ff1680610cf8576040517f2b82bd4a0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101859052604481018490526064016101ef565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d809190611f2b565b9050848110610ecd5760405163095ea7b360e01b81526001600160a01b038781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e199190611f42565b5060405163b6b55f2560e01b8152600481018690526001600160a01b0387169063b6b55f25906024015f604051808303815f87803b158015610e59575f80fd5b505af1158015610e6b573d5f803e3d5ffd5b5050505083866001600160a01b03167f22ab9fd8eb5063f7f3cb43c78f5d368aea9a51855ada00fa146687ef2c32198087604051610eab91815260200190565b60405180910390a35f838152600460205260409020805460ff19169055610f09565b6040517fcf47918100000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016101ef565b50506002805460ff60a81b1916600160a81b17905550505050565b6005546001600160a01b03163314610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f520000000000000000000000000000000000000000000000000000000000000060648201526084016101ef565b610ffe848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061147992505050565b50505050565b6002546001600160a01b031633146110445760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b6001600160a01b03811661106b5760405163d92e233d60e01b815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6002546001600160a01b031633146111015760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b61110a816114a9565b50565b6002546001600160a81b90910460ff16111561113c576040516345f5ce8b60e11b815260040160405180910390fd5b6002805460ff60a81b198116600160a91b179091556001600160a01b0316331461118e5760025460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016101ef565b600254600160a01b900460ff166001036111d4576040517fa45f47fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b03163b5f0361120957604051631c7025f960e11b81526001600160a01b03821660048201526024016101ef565b306001600160a01b0382160361123457604051631c7025f960e11b81523060048201526024016101ef565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611298573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bc9190611f2b565b905080156113d3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af115801561134d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113719190611f42565b9050806113d15760405163cd3f165960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015284166044820152606481018390526084016101ef565b505b6002805473ffffffffffffffffffffffffffffffffffffffff191690556040518181526001600160a01b0383169033907f928fd5531324ee87d76cc5307dc37580174da76b85cd546da631b2670bc266b59060200160405180910390a35050565b5f805f8584604051602001611453929190918252602082015260400190565b604051602081830303815290604052905061146d81611a75565b50919434945092505050565b6114a47f00000000000000000000000000000000000000000000000000000000000000008383611aaf565b505050565b6002546001600160a81b90910460ff1611156114d8576040516345f5ce8b60e11b815260040160405180910390fd5b6002805460ff60a81b1916600160a91b17905580515f90819081906115069060209086018101908601611ff0565b5f81815260036020526040902054929550909350915060ff1615611559576040517f56bc34a1000000000000000000000000000000000000000000000000000000008152600481018290526024016101ef565b5f818152600360205260408120805460ff19166001179055600254600160a01b900460ff16815b8551811015611a3e575f86828151811061159c5761159c6120b7565b602002602001015190505f8683815181106115b9576115b96120b7565b602002602001015190505f826040516024016115e491906001600160a01b0391909116815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1eda94d700000000000000000000000000000000000000000000000000000000179052519091505f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169061167a9085906120cb565b5f604051808303815f865af19150503d805f81146116b3576040519150601f19603f3d011682016040523d82523d5f602084013e6116b8565b606091505b50915091505f8280156116cc575081516020145b156116e857818060200190518101906116e59190611f2b565b90505b805f03611749576116f9858a611f18565b9850856001600160a01b03167f29bd7fae5899787bb9cb5aa121b781bf47bb44cc44f0f3ddd1e1ea383acd22fb8660405161173691815260200190565b60405180910390a2505050505050611a36565b808511156117b2575f61175c8287611ec2565b9050611768818b611f18565b9950819550866001600160a01b03167f29bd7fae5899787bb9cb5aa121b781bf47bb44cc44f0f3ddd1e1ea383acd22fb826040516117a891815260200190565b60405180910390a2505b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611816573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183a9190611f2b565b905085811015801561184c5750886001145b156119805760405163095ea7b360e01b81526001600160a01b038881166004830152602482018890527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156118bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e19190611f42565b5060405163b6b55f2560e01b8152600481018790526001600160a01b0388169063b6b55f25906024015f604051808303815f87803b158015611921575f80fd5b505af1158015611933573d5f803e3d5ffd5b505050508a876001600160a01b03167f22ab9fd8eb5063f7f3cb43c78f5d368aea9a51855ada00fa146687ef2c3219808860405161197391815260200190565b60405180910390a3611a2e565b604080516001600160a01b0389166020820152908101879052606081018c90524660808201523060a08201525f9060c00160408051601f1981840301815282825280516020918201205f81815260048352839020805460ff191660011790558a84529083018590529082018c905291508c906001600160a01b038a169083907ff40f70fa5e98296d34577a11349caa5adf0d9cf9b6d416fd901de223c50d7a6c9060600160405180910390a4505b505050505050505b600101611580565b508115610f0957815f80828254611a559190611f18565b909155505050506002805460ff60a81b1916600160a81b17905550505050565b7f8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b03681604051611aa4919061210f565b60405180910390a150565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611b4d576040517f2f3111fa0000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301527f00000000000000000000000000000000000000000000000000000000000000001660248201526044016101ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614611beb576040517f0d16cbdd0000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301527f00000000000000000000000000000000000000000000000000000000000000001660248201526044016101ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f98bbde530ec85b002f6fb0864beccaaf3ac3d2a4ac35cb3b03cf7c61ee415e337f000000000000000000000000000000000000000000000000000000000000000083604051611c66929190612121565b60405180910390a26114a4816114a9565b5f60208284031215611c87575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ccb57611ccb611c8e565b604052919050565b5f6020808385031215611ce4575f80fd5b823567ffffffffffffffff80821115611cfb575f80fd5b818501915085601f830112611d0e575f80fd5b813581811115611d2057611d20611c8e565b611d32601f8201601f19168501611ca2565b91508082528684828501011115611d47575f80fd5b80848401858401375f90820190930192909252509392505050565b6001600160a01b038116811461110a575f80fd5b5f60208284031215611d86575f80fd5b8135611d9181611d62565b9392505050565b5f805f60608486031215611daa575f80fd5b8335611db581611d62565b95602085013595506040909401359392505050565b5f805f8060608587031215611ddd575f80fd5b843593506020850135611def81611d62565b9250604085013567ffffffffffffffff80821115611e0b575f80fd5b818701915087601f830112611e1e575f80fd5b813581811115611e2c575f80fd5b886020828501011115611e3d575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f67ffffffffffffffff80841680611e8e57611e8e611e4c565b92169190910492915050565b67ffffffffffffffff828116828216039080821115611ebb57611ebb611e60565b5092915050565b81810381811115611ed557611ed5611e60565b92915050565b80851115611f1057815f1904821115611ef657611ef6611e60565b80851615611f0357918102915b93841c9390800290611edb565b509250929050565b80820180821115611ed557611ed5611e60565b5f60208284031215611f3b575f80fd5b5051919050565b5f60208284031215611f52575f80fd5b81518015158114611d91575f80fd5b5f67ffffffffffffffff821115611f7a57611f7a611c8e565b5060051b60200190565b5f82601f830112611f93575f80fd5b81516020611fa8611fa383611f61565b611ca2565b8083825260208201915060208460051b870101935086841115611fc9575f80fd5b602086015b84811015611fe55780518352918301918301611fce565b509695505050505050565b5f805f60608486031215612002575f80fd5b835167ffffffffffffffff80821115612019575f80fd5b818601915086601f83011261202c575f80fd5b8151602061203c611fa383611f61565b82815260059290921b8401810191818101908a84111561205a575f80fd5b948201945b8386101561208157855161207281611d62565b8252948201949082019061205f565b91890151919750909350505080821115612099575f80fd5b506120a686828701611f84565b925050604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611d9160208301846120e1565b828152604060208201525f61213960408301846120e1565b94935050505056fea2646970667358221220e0db306b1626f4b7b25536ea8abbd12743d1c044d2c91d2562bec3012b8f25b464736f6c63430008190033000000000000000000000000fef5d947472e72efbb2e388c730b7428406f2f9500000000000000000000000046c0d07f55d4f9b5eed2fc9680b5953e5fd7b4610000000000000000000000008397259c983751daf40400790063935a11afa28a0000000000000000000000004ce43b82ef1298e1466d3b3cee67ba6680bf82fb0000000000000000000000000000000000000000000000000000000000000001