0 txs
472 calls
constructor
constructor(address admin)
functions
adapterToId
viewfunction adapterToId(address adapter) view returns (uint16 adapterId)
balances
viewfunction balances(bytes32 userId) view returns (uint256 balance)
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)
failedMessages
viewfunction failedMessages(uint16 adapterId, bytes32 messageId) view returns (bytes32 messageHash)
getAdapter
viewfunction getAdapter(uint16 adapterId) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSendFee
viewfunction getSendFee(tuple message) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
idToAdapter
viewfunction idToAdapter(uint16 adapterId) view returns (address adapter)
isAdapterInitialized
viewfunction isAdapterInitialized(uint16 adapterId) view returns (bool)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
MESSAGE_SENDER_ROLE
viewfunction MESSAGE_SENDER_ROLE() view returns (bytes32)
owner
viewfunction owner() view returns (address)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
seenMessages
viewfunction seenMessages(uint16 adapterId, bytes32 messageId) view returns (bool hasBeenSeen)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
addAdapter
nonpayablefunction addAdapter(uint16 adapterId, address adapter)
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increaseBalance
payablefunction increaseBalance(bytes32 userId) payable
receiveMessage
payablefunction receiveMessage(tuple message) payable
removeAdapter
nonpayablefunction removeAdapter(uint16 adapterId)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
retryMessage
payablefunction retryMessage(uint16 adapterId, bytes32 messageId, tuple message, bytes extraArgs) payable
reverseMessage
payablefunction reverseMessage(uint16 adapterId, bytes32 messageId, tuple message, bytes extraArgs) payable
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
sendMessage
payablefunction sendMessage(tuple message) payable
withdraw
nonpayablefunction withdraw()
events
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
MessageFailed
event MessageFailed(uint16 adapterId, bytes32 indexed messageId, bytes reason, (bytes32 messageId, uint16 sourceChainId, bytes32 sourceAddress, bytes32 handler, bytes payload, uint16 returnAdapterId, uint256 returnGasLimit) message, bytes32 messageHash)
MessageRetryFailed
event MessageRetryFailed(uint16 adapterId, bytes32 indexed messageId, bytes reason)
MessageRetrySucceeded
event MessageRetrySucceeded(uint16 adapterId, bytes32 indexed messageId)
MessageReverseFailed
event MessageReverseFailed(uint16 adapterId, bytes32 indexed messageId, bytes reason)
MessageReverseSucceeded
event MessageReverseSucceeded(uint16 adapterId, bytes32 indexed messageId)
MessageSucceeded
event MessageSucceeded(uint16 adapterId, bytes32 indexed messageId)
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)
Withdraw
event Withdraw(bytes32 userId, address receiver, uint256 amount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlEnforcedDefaultAdminDelay
error AccessControlEnforcedDefaultAdminDelay(uint48 schedule)
AccessControlEnforcedDefaultAdminRules
error AccessControlEnforcedDefaultAdminRules()
AccessControlInvalidDefaultAdmin
error AccessControlInvalidDefaultAdmin(address defaultAdmin)
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AdapterInitialized
error AdapterInitialized(uint16 adapterId)
AdapterNotInitialized
error AdapterNotInitialized(uint16 adapterId)
AdapterUnknown
error AdapterUnknown(address adapter)
ChainUnavailable
error ChainUnavailable(uint16 folksChainId)
FailedMessageUnknown
error FailedMessageUnknown(uint16 adapterId, bytes32 messageId)
FailedToWithdrawFunds
error FailedToWithdrawFunds(address recipient, uint256 amount)
MessageAlreadySeen
error MessageAlreadySeen(bytes32 messageId)
NotEnoughFunds
error NotEnoughFunds(bytes32 user)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SenderDoesNotMatch
error SenderDoesNotMatch(address messager, address caller)
ZeroAddressAdapter
error ZeroAddressAdapter()
creation bytecode
0x60806040523480156200001157600080fd5b506040516200286f3803806200286f8339810160408190526200003491620001f7565b8062015180816001600160a01b0381166200006957604051636116401160e11b81526000600482015260240160405180910390fd5b600180546001600160d01b0316600160d01b65ffffffffffff85160217905562000095600082620000d3565b505050620000ca7faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c82620000d360201b60201c565b50505062000229565b60008262000134576000620000f06002546001600160a01b031690565b6001600160a01b0316146200011857604051631fe1e13d60e11b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0384161790555b62000140838362000149565b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001ee576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001a53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000143565b50600062000143565b6000602082840312156200020a57600080fd5b81516001600160a01b03811681146200022257600080fd5b9392505050565b61263680620002396000396000f3fe60806040526004361061020f5760003560e01c806397979f5511610118578063cf644955116100a0578063dc42b97e1161006f578063dc42b97e1461066a578063eb867c521461067d578063ebe768921461069d578063ec87621c146106d9578063fb91a4a71461070d57600080fd5b8063cf644955146105da578063cf6eefb7146105fa578063d547741f14610635578063d602b9fd1461065557600080fd5b8063a9aa9ad7116100e7578063a9aa9ad714610542578063ab9017f214610555578063b695003014610590578063cc8463c8146105b0578063cefc1429146105c557600080fd5b806397979f55146104c65780639b611712146104e6578063a1eda53c146104f9578063a217fddf1461052d57600080fd5b806336568abe1161019b57806384ef8ffc1161016a57806384ef8ffc1461041f5780638909aa3f146104515780638da5cb5b1461047e57806391d14854146104935780639292086d146104b357600080fd5b806336568abe146103aa5780633ccfd60b146103ca578063634e93da146103df578063649a5ec7146103ff57600080fd5b80631a5e23b2116101e25780631a5e23b2146102cf57806322ec29d7146102e2578063248a9ca3146103165780632d6bebbe146103465780632f2ff15d1461038a57600080fd5b806301ffc9a714610214578063022d63fb146102495780630aa6220b14610272578063110cd7e514610289575b600080fd5b34801561022057600080fd5b5061023461022f366004611e5b565b610743565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b50620697805b60405165ffffffffffff9091168152602001610240565b34801561027e57600080fd5b5061028761076e565b005b34801561029557600080fd5b506102c16102a4366004611e9c565b600660209081526000928352604080842090915290825290205481565b604051908152602001610240565b6102876102dd366004612026565b610784565b3480156102ee57600080fd5b506102c17faec5a311f519ff58597b7a96a9b73e880cdfd44a234fd872d3246ae9808e9ec281565b34801561032257600080fd5b506102c1610331366004612103565b60009081526020819052604090206001015490565b34801561035257600080fd5b50610377610361366004612131565b60046020526000908152604090205461ffff1681565b60405161ffff9091168152602001610240565b34801561039657600080fd5b506102876103a536600461214e565b610967565b3480156103b657600080fd5b506102876103c536600461214e565b610993565b3480156103d657600080fd5b50610287610a3a565b3480156103eb57600080fd5b506102876103fa366004612131565b610b06565b34801561040b57600080fd5b5061028761041a36600461217e565b610b1a565b34801561042b57600080fd5b506002546001600160a01b03165b6040516001600160a01b039091168152602001610240565b34801561045d57600080fd5b506102c161046c366004612103565b60076020526000908152604090205481565b34801561048a57600080fd5b50610439610b2e565b34801561049f57600080fd5b506102346104ae36600461214e565b610b47565b6102876104c1366004612238565b610b70565b3480156104d257600080fd5b506102876104e136600461226d565b610de9565b6102876104f4366004612103565b610ec9565b34801561050557600080fd5b5061050e610eef565b6040805165ffffffffffff938416815292909116602083015201610240565b34801561053957600080fd5b506102c1600081565b610287610550366004612299565b610f43565b34801561056157600080fd5b50610234610570366004611e9c565b600560209081526000928352604080842090915290825290205460ff1681565b34801561059c57600080fd5b506102c16105ab366004612026565b6110fe565b3480156105bc57600080fd5b5061025b611186565b3480156105d157600080fd5b506102876111e5565b3480156105e657600080fd5b506102876105f5366004612317565b611225565b34801561060657600080fd5b5061060f6112a1565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610240565b34801561064157600080fd5b5061028761065036600461214e565b6112c2565b34801561066157600080fd5b506102876112ea565b610287610678366004612299565b6112fd565b34801561068957600080fd5b50610439610698366004612317565b61149d565b3480156106a957600080fd5b506102346106b8366004612317565b61ffff166000908152600360205260409020546001600160a01b0316151590565b3480156106e557600080fd5b506102c17faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c81565b34801561071957600080fd5b50610439610728366004612317565b6003602052600090815260409020546001600160a01b031681565b60006001600160e01b031982166318a4c3c360e11b14806107685750610768826114fd565b92915050565b600061077981611532565b61078161153c565b50565b7faec5a311f519ff58597b7a96a9b73e880cdfd44a234fd872d3246ae9808e9ec26107ae81611532565b8151516000906107bd9061149d565b905060006107cc846020015190565b90506001600160a01b038116331461080d57604051633d2c0f0160e21b81526001600160a01b03821660048201523360248201526044015b60405180910390fd5b604051630b69500360e41b81526000906001600160a01b0384169063b69500309061083c908890600401612378565b602060405180830381865afa158015610859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087d9190612443565b905060006108986108918760800151611549565b6040015190565b600081815260076020526040902054909150826108b58234612472565b10156108d75760405163b3ec96e560e01b815260048101839052602401610804565b826108e23483612472565b6108ec9190612485565b600083815260076020526040908190209190915551630d2f11d960e11b81526001600160a01b03861690631a5e23b290859061092c908b90600401612378565b6000604051808303818588803b15801561094557600080fd5b505af1158015610959573d6000803e3d6000fd5b505050505050505050505050565b8161098557604051631fe1e13d60e11b815260040160405180910390fd5b61098f8282611629565b5050565b811580156109ae57506002546001600160a01b038281169116145b15610a30576000806109be6112a1565b90925090506001600160a01b0382161515806109e0575065ffffffffffff8116155b806109f357504265ffffffffffff821610155b15610a1b576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610804565b50506001805465ffffffffffff60a01b191690555b61098f828261164e565b336000818152600760205260408082208054908390559051909190839083908381818185875af1925050503d8060008114610a91576040519150601f19603f3d011682016040523d82523d6000602084013e610a96565b606091505b5050905080610ac15760405163250d9adf60e11b815233600482015260248101839052604401610804565b604080518481523360208201529081018390527fe7284ffe0c70ad2f3b0aa15cde1cfe95f736935651a138725b21fd168edc5d6a9060600160405180910390a1505050565b6000610b1181611532565b61098f82611686565b6000610b2581611532565b61098f826116f9565b6000610b426002546001600160a01b031690565b905090565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b3360008181526004602052604090205461ffff16610b8d8161149d565b6001600160a01b0316826001600160a01b031614610bc9576040516355ed399160e11b81526001600160a01b0383166004820152602401610804565b61ffff811660009081526005602090815260408083208651845290915290205460ff1615610c10578251604051639d1e575560e01b81526004810191909152602401610804565b6000610c1d846060015190565b90503415610c63576000610c376108918660800151611549565b905034600760008381526020019081526020016000206000828254610c5c9190612472565b9091555050505b61ffff821660009081526005602090815260408083208751845290915290819020805460ff1916600117905551639292086d60e01b81526001600160a01b03821690639292086d90610cb9908790600401612500565b600060405180830381600087803b158015610cd357600080fd5b505af1925050508015610ce4575060015b610da9573d808015610d12576040519150601f19603f3d011682016040523d82523d6000602084013e610d17565b606091505b50600085604051602001610d2b9190612500565b60408051601f19818403018152828252805160209182012061ffff88166000908152600683528381208b5182529092529190208190558751909250907f3f5874d5457242294cfd609fe884fd768ee3c2914ccba7daa8536db7791d191990610d9a90879086908b908790612513565b60405180910390a25050610de3565b835160405161ffff841681527fad1988539b0ec6c00337659800dd74b159ca84862a6639b7d577cc354fa0e7b29060200160405180910390a25b50505050565b7faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c610e1381611532565b6001600160a01b038216610e3a57604051631d0588bd60e01b815260040160405180910390fd5b61ffff83166000908152600360205260409020546001600160a01b031615610e7b5760405163288911c360e01b815261ffff84166004820152602401610804565b5061ffff909116600081815260036020908152604080832080546001600160a01b039096166001600160a01b0319909616861790559382526004905291909120805461ffff19169091179055565b60008181526007602052604081208054349290610ee7908490612472565b909155505050565b600254600090600160d01b900465ffffffffffff168015158015610f1b57504265ffffffffffff821610155b610f2757600080610f3b565b600254600160a01b900465ffffffffffff16815b915091509091565b6000610f50858585611769565b90506000610f5f846060015190565b90503415610fa5576000610f796108918660800151611549565b905034600760008381526020019081526020016000206000828254610f9e9190612472565b9091555050505b61ffff86166000908152600660209081526040808320875184529091528082209190915551632012290360e11b81526001600160a01b03821690634024520690610ff790879033908890600401612554565b600060405180830381600087803b15801561101157600080fd5b505af1925050508015611022575060015b6110bb573d808015611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b5061ffff871660009081526006602090815260408083208851845290915290819020849055855190517f3039d5af0081a469a39f52484d41ac7fa514dc1f16ad930d0aaeefcbc5ef6efd906110ad908a908590612588565b60405180910390a2506110f6565b835160405161ffff881681527f4f28c9a567c5ea3b668eaaba0d17734a00cb090bf92f72580936e2e8d31d8268906020015b60405180910390a25b505050505050565b805151600090819061110f9061149d565b604051630b69500360e41b81529091506001600160a01b0382169063b69500309061113e908690600401612378565b602060405180830381865afa15801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190612443565b9392505050565b600254600090600160d01b900465ffffffffffff1680151580156111b157504265ffffffffffff8216105b6111cc57600154600160d01b900465ffffffffffff166111df565b600254600160a01b900465ffffffffffff165b91505090565b60006111ef6112a1565b509050336001600160a01b0382161461121d57604051636116401160e11b8152336004820152602401610804565b61078161181b565b7faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c61124f81611532565b600061125a8361149d565b61ffff909316600090815260036020908152604080832080546001600160a01b03191690556001600160a01b0390951682526004905292909220805461ffff191690555050565b6001546001600160a01b03811691600160a01b90910465ffffffffffff1690565b816112e057604051631fe1e13d60e11b815260040160405180910390fd5b61098f82826118b4565b60006112f581611532565b6107816118d9565b600061130a858585611769565b90506000611319846060015190565b9050341561135f5760006113336108918660800151611549565b9050346007600083815260200190815260200160002060008282546113589190612472565b9091555050505b61ffff86166000908152600660209081526040808320875184529091528082209190915551634ef8863360e11b81526001600160a01b03821690639df10c66906113b190879033908890600401612554565b600060405180830381600087803b1580156113cb57600080fd5b505af19250505080156113dc575060015b611467573d80801561140a576040519150601f19603f3d011682016040523d82523d6000602084013e61140f565b606091505b5061ffff871660009081526006602090815260408083208851845290915290819020849055855190517f010133539f41b191d9cfa7d7ca11a7ed3f638b68c8a480c99a1a4513ea16f461906110ad908a908590612588565b835160405161ffff881681527f1bedd8e62ac100711a8b4e75892db75b248d01b054db7c9acf5ba17525b5d481906020016110ed565b61ffff81166000908152600360205260408120546001600160a01b03166114dd57604051639ac7975160e01b815261ffff83166004820152602401610804565b5061ffff166000908152600360205260409020546001600160a01b031690565b60006001600160e01b03198216637965db0b60e01b148061076857506301ffc9a760e01b6001600160e01b0319831614610768565b61078181336118e4565b61154760008061191d565b565b61157360408051608081019091528060008152600060208201819052604082015260609081015290565b600061157f83826119dd565b61ffff16603f811115611594576115946125a5565b8290603f8111156115a7576115a76125a5565b9081603f8111156115ba576115ba6125a5565b9052506115c8600282612472565b90506115d48382611a3a565b6020808401919091526115e79082612472565b90506115f38382611a3a565b6040830152611603602082612472565b905061161e818285516116169190612485565b859190611a98565b606083015250919050565b60008281526020819052604090206001015461164481611532565b610de38383611ba5565b6001600160a01b03811633146116775760405163334bd91960e11b815260040160405180910390fd5b6116818282611c0d565b505050565b6000611690611186565b61169942611c4a565b6116a391906125bb565b90506116af8282611c81565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b600061170482611d00565b61170d42611c4a565b61171791906125bb565b9050611723828261191d565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b61ffff8316600090815260066020908152604080832085845282528083205490519091829161179a91869101612500565b604051602081830303815290604052805190602001201415806117dc575061ffff8516600090815260056020908152604080832087845290915290205460ff16155b806117e8575082518414155b156118135760405163696200d560e11b815261ffff8616600482015260248101859052604401610804565b949350505050565b6000806118266112a1565b9150915061183b8165ffffffffffff16151590565b158061184f57504265ffffffffffff821610155b15611877576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610804565b611893600061188e6002546001600160a01b031690565b611c0d565b5061189f600083611ba5565b5050600180546001600160d01b031916905550565b6000828152602081905260409020600101546118cf81611532565b610de38383611c0d565b611547600080611c81565b6118ee8282610b47565b61098f5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610804565b600254600160d01b900465ffffffffffff1680156119a0574265ffffffffffff8216101561197657600254600180546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b029190911790556119a0565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b50600280546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b60006119ea826002612472565b83511015611a315760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606401610804565b50016002015190565b6000611a47826020612472565b83511015611a8f5760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610804565b50016020015190565b606081611aa681601f612472565b1015611ae55760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610804565b611aef8284612472565b84511015611b335760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610804565b606082158015611b525760405191506000825260208201604052611b9c565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611b8b578051835260209283019201611b73565b5050858452601f01601f1916604052505b50949350505050565b600082611c03576000611bc06002546001600160a01b031690565b6001600160a01b031614611be757604051631fe1e13d60e11b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0384161790555b61117f8383611d48565b600082158015611c2a57506002546001600160a01b038381169116145b15611c4057600280546001600160a01b03191690555b61117f8383611dda565b600065ffffffffffff821115611c7d576040516306dfcc6560e41b81526030600482015260248101839052604401610804565b5090565b6000611c8b6112a1565b6001805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b038816171790559150611ccd90508165ffffffffffff16151590565b15611681576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a1505050565b600080611d0b611186565b90508065ffffffffffff168365ffffffffffff1611611d3357611d2e83826125e1565b61117f565b61117f65ffffffffffff841662069780611e45565b6000611d548383610b47565b611dd2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611d8a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610768565b506000610768565b6000611de68383610b47565b15611dd2576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610768565b6000818310611e54578161117f565b5090919050565b600060208284031215611e6d57600080fd5b81356001600160e01b03198116811461117f57600080fd5b803561ffff81168114611e9757600080fd5b919050565b60008060408385031215611eaf57600080fd5b611eb883611e85565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715611eff57611eff611ec6565b60405290565b600060a08284031215611f1757600080fd5b60405160a0810181811067ffffffffffffffff82111715611f3a57611f3a611ec6565b604052905080611f4983611e85565b8152611f5760208401611e85565b60208201526040830135604082015260608301356060820152608083013560808201525092915050565b600082601f830112611f9257600080fd5b813567ffffffffffffffff80821115611fad57611fad611ec6565b604051601f8301601f19908116603f01168101908282118183101715611fd557611fd5611ec6565b81604052838152866020858801011115611fee57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803567ffffffffffffffff81168114611e9757600080fd5b60006020828403121561203857600080fd5b813567ffffffffffffffff8082111561205057600080fd5b90830190610160828603121561206557600080fd5b61206d611edc565b6120778684611f05565b815260a0830135602082015261208f60c08401611e85565b604082015260e08301356060820152610100830135828111156120b157600080fd5b6120bd87828601611f81565b6080830152506120d0610120840161200e565b60a0820152610140830135828111156120e857600080fd5b6120f487828601611f81565b60c08301525095945050505050565b60006020828403121561211557600080fd5b5035919050565b6001600160a01b038116811461078157600080fd5b60006020828403121561214357600080fd5b813561117f8161211c565b6000806040838503121561216157600080fd5b8235915060208301356121738161211c565b809150509250929050565b60006020828403121561219057600080fd5b813565ffffffffffff8116811461117f57600080fd5b600060e082840312156121b857600080fd5b6121c0611edc565b9050813581526121d260208301611e85565b60208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561220557600080fd5b61221184828501611f81565b60808301525061222360a08301611e85565b60a082015260c082013560c082015292915050565b60006020828403121561224a57600080fd5b813567ffffffffffffffff81111561226157600080fd5b611813848285016121a6565b6000806040838503121561228057600080fd5b61228983611e85565b915060208301356121738161211c565b600080600080608085870312156122af57600080fd5b6122b885611e85565b935060208501359250604085013567ffffffffffffffff808211156122dc57600080fd5b6122e8888389016121a6565b935060608701359150808211156122fe57600080fd5b5061230b87828801611f81565b91505092959194509250565b60006020828403121561232957600080fd5b61117f82611e85565b6000815180845260005b818110156123585760208185018101518683018201520161233c565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825161ffff808251166020850152806020830151166040850152506040810151606084015260608101516080840152608081015160a084015250602083015160c083015260408301516123d760e084018261ffff169052565b506060830151610100830152608083015161016080610120850152612400610180850183612332565b915060a085015161241e61014086018267ffffffffffffffff169052565b5060c0850151848303601f1901828601526124398382612332565b9695505050505050565b60006020828403121561245557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107685761076861245c565b818103818111156107685761076861245c565b805182526000602082015161ffff808216602086015260408401516040860152606084015160608601526080840151915060e060808601526124dd60e0860183612332565b91508060a08501511660a08601525060c083015160c08501528091505092915050565b60208152600061117f6020830184612498565b61ffff851681526080602082015260006125306080830186612332565b82810360408401526125428186612498565b91505082606083015295945050505050565b6060815260006125676060830186612498565b6001600160a01b038516602084015282810360408401526124398185612332565b61ffff831681526040602082015260006118136040830184612332565b634e487b7160e01b600052602160045260246000fd5b65ffffffffffff8181168382160190808211156125da576125da61245c565b5092915050565b65ffffffffffff8281168282160390808211156125da576125da61245c56fea26469706673582212206a65a144817ddb8a28b46ad47c1b97251287c446aba20dc632e2290b8150112c64736f6c634300081700330000000000000000000000004095f3c4bf6d6505bd32cffe0918863ebb6b2df2