0 txs
18.9k calls
constructor
constructor()
functions
allocatedETHForDeposits
viewfunction allocatedETHForDeposits() view returns (uint256)
ALLOCATOR_SERVICE_ROLE
viewfunction ALLOCATOR_SERVICE_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositContract
viewfunction depositContract() view returns (address)
ethToMETH
viewfunction ethToMETH(uint256 ethAmount) view returns (uint256)
exchangeAdjustmentRate
viewfunction exchangeAdjustmentRate() view returns (uint16)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
initializationBlockNumber
viewfunction initializationBlockNumber() view returns (uint256)
INITIATOR_SERVICE_ROLE
viewfunction INITIATOR_SERVICE_ROLE() view returns (bytes32)
isStakingAllowlist
viewfunction isStakingAllowlist() view returns (bool)
maximumDepositAmount
viewfunction maximumDepositAmount() view returns (uint256)
maximumMETHSupply
viewfunction maximumMETHSupply() view returns (uint256)
mETH
viewfunction mETH() view returns (address)
mETHToETH
viewfunction mETHToETH(uint256 mETHAmount) view returns (uint256)
minimumDepositAmount
viewfunction minimumDepositAmount() view returns (uint256)
minimumStakeBound
viewfunction minimumStakeBound() view returns (uint256)
minimumUnstakeBound
viewfunction minimumUnstakeBound() view returns (uint256)
numInitiatedValidators
viewfunction numInitiatedValidators() view returns (uint256)
oracle
viewfunction oracle() view returns (address)
pauser
viewfunction pauser() view returns (address)
returnsAggregator
viewfunction returnsAggregator() view returns (address)
STAKING_ALLOWLIST_MANAGER_ROLE
viewfunction STAKING_ALLOWLIST_MANAGER_ROLE() view returns (bytes32)
STAKING_ALLOWLIST_ROLE
viewfunction STAKING_ALLOWLIST_ROLE() view returns (bytes32)
STAKING_MANAGER_ROLE
viewfunction STAKING_MANAGER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TOP_UP_ROLE
viewfunction TOP_UP_ROLE() view returns (bytes32)
totalControlled
viewfunction totalControlled() view returns (uint256)
totalDepositedInValidators
viewfunction totalDepositedInValidators() view returns (uint256)
unallocatedETH
viewfunction unallocatedETH() view returns (uint256)
unstakeRequestInfo
viewfunction unstakeRequestInfo(uint256 unstakeRequestID) view returns (bool, uint256)
unstakeRequestsManager
viewfunction unstakeRequestsManager() view returns (address)
usedValidators
viewfunction usedValidators(bytes pubkey) view returns (bool exists)
withdrawalWallet
viewfunction withdrawalWallet() view returns (address)
allocateETH
nonpayablefunction allocateETH(uint256 allocateToUnstakeRequestsManager, uint256 allocateToDeposits)
claimUnstakeRequest
nonpayablefunction claimUnstakeRequest(uint256 unstakeRequestID)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(tuple init)
initiateValidatorsWithDeposits
nonpayablefunction initiateValidatorsWithDeposits(tuple[] validators, bytes32 expectedDepositRoot)
receiveFromUnstakeRequestsManager
payablefunction receiveFromUnstakeRequestsManager() payable
receiveReturns
payablefunction receiveReturns() payable
reclaimAllocatedETHSurplus
nonpayablefunction reclaimAllocatedETHSurplus()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setExchangeAdjustmentRate
nonpayablefunction setExchangeAdjustmentRate(uint16 exchangeAdjustmentRate_)
setMaximumDepositAmount
nonpayablefunction setMaximumDepositAmount(uint256 maximumDepositAmount_)
setMaximumMETHSupply
nonpayablefunction setMaximumMETHSupply(uint256 maximumMETHSupply_)
setMinimumDepositAmount
nonpayablefunction setMinimumDepositAmount(uint256 minimumDepositAmount_)
setMinimumStakeBound
nonpayablefunction setMinimumStakeBound(uint256 minimumStakeBound_)
setMinimumUnstakeBound
nonpayablefunction setMinimumUnstakeBound(uint256 minimumUnstakeBound_)
setStakingAllowlist
nonpayablefunction setStakingAllowlist(bool isStakingAllowlist_)
setWithdrawalWallet
nonpayablefunction setWithdrawalWallet(address withdrawalWallet_)
stake
payablefunction stake(uint256 minMETHAmount) payable
topUp
payablefunction topUp() payable
unstakeRequest
nonpayablefunction unstakeRequest(uint128 methAmount, uint128 minETHAmount) returns (uint256)
unstakeRequestWithPermit
nonpayablefunction unstakeRequestWithPermit(uint128 methAmount, uint128 minETHAmount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns (uint256)
events
AllocatedETHToDeposits
event AllocatedETHToDeposits(uint256 amount)
AllocatedETHToUnstakeRequestsManager
event AllocatedETHToUnstakeRequestsManager(uint256 amount)
Initialized
event Initialized(uint8 version)
ProtocolConfigChanged
event ProtocolConfigChanged(bytes4 indexed setterSelector, string setterSignature, bytes value)
ReturnsReceived
event ReturnsReceived(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)
Staked
event Staked(address indexed staker, uint256 ethAmount, uint256 mETHAmount)
UnstakeRequestClaimed
event UnstakeRequestClaimed(uint256 indexed id, address indexed staker)
UnstakeRequested
event UnstakeRequested(uint256 indexed id, address indexed staker, uint256 ethAmount, uint256 mETHLocked)
ValidatorInitiated
event ValidatorInitiated(bytes32 indexed id, uint256 indexed operatorID, bytes pubkey, uint256 amountDeposited)
errors
DoesNotReceiveETH
error DoesNotReceiveETH()
InvalidConfiguration
error InvalidConfiguration()
InvalidDepositRoot
error InvalidDepositRoot(bytes32)
InvalidWithdrawalCredentialsNotETH1
error InvalidWithdrawalCredentialsNotETH1(bytes12)
InvalidWithdrawalCredentialsWrongAddress
error InvalidWithdrawalCredentialsWrongAddress(address)
InvalidWithdrawalCredentialsWrongLength
error InvalidWithdrawalCredentialsWrongLength(uint256)
MaximumMETHSupplyExceeded
error MaximumMETHSupplyExceeded()
MaximumValidatorDepositExceeded
error MaximumValidatorDepositExceeded()
MinimumStakeBoundNotSatisfied
error MinimumStakeBoundNotSatisfied()
MinimumUnstakeBoundNotSatisfied
error MinimumUnstakeBoundNotSatisfied()
MinimumValidatorDepositNotSatisfied
error MinimumValidatorDepositNotSatisfied()
NotEnoughDepositETH
error NotEnoughDepositETH()
NotEnoughUnallocatedETH
error NotEnoughUnallocatedETH()
NotReturnsAggregator
error NotReturnsAggregator()
NotUnstakeRequestsManager
error NotUnstakeRequestsManager()
Paused
error Paused()
PreviouslyUsedValidator
error PreviouslyUsedValidator()
StakeBelowMinimumMETHAmount
error StakeBelowMinimumMETHAmount(uint256 methAmount, uint256 expectedMinimum)
UnstakeBelowMinimumETHAmount
error UnstakeBelowMinimumETHAmount(uint256 ethAmount, uint256 expectedMinimum)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614dce80620000f36000396000f3fe6080604052600436106103845760003560e01c806375796f76116101d1578063aab483d611610102578063ca15c873116100a0578063e55d6cc01161006f578063e55d6cc014610b57578063e94ad65b14610b8b578063ea452b6d14610bb8578063f1ec1e9714610bce576103bb565b8063ca15c87314610aef578063d547741f14610b0f578063d70a6f3114610b2f578063dc29f1de14610b4f576103bb565b8063b91590b2116100dc578063b91590b214610a9b578063bb635c6514610ab1578063bc3950c514610ac7578063c151aa7214610ae7576103bb565b8063aab483d614610a45578063b064d46114610a65578063b12de58614610a85576103bb565b806389e80ed31161016f57806399dd1deb1161014957806399dd1deb146109d05780639fd0506d146109f0578063a217fddf14610a1d578063a694fc3a14610a32576103bb565b806389e80ed3146109295780639010d07c1461095d57806391d148541461097d576103bb565b80637dfcdd29116101ab5780637dfcdd29146108be578063808d663f146108d4578063854a63f6146108dc578063891ef43e14610909576103bb565b806375796f761461085b57806378abb49b1461087b5780637dc0d1d014610891576103bb565b806335ead2a4116102b657806353e105fc1161025457806360a0f6281161022357806360a0f628146107d15780636daa01a2146107e75780636fce8ab214610807578063729d53341461083b576103bb565b806353e105fc1461074b5780635890c11c146107615780635915ded1146107815780635940d90b146107bc576103bb565b80633f550b3a116102905780633f550b3a1461069f57806342d3915d146106cc5780634461ff05146106fe5780634a7d80b31461071e576103bb565b806335ead2a41461063557806336568abe1461064b5780633937c0b31461066b576103bb565b806319efd5c71161032357806329e84867116102fd57806329e848671461056f5780632bf67650146105c15780632f2ff15d146105e15780633101d91014610601576103bb565b806319efd5c7146104eb578063248a9ca31461051f57806329d487041461054f576103bb565b806304f36cc21161035f57806304f36cc2146104645780630633af7614610484578063080c279a146104b25780631943190d146104d6576103bb565b80628db05b146103ed57806301ffc9a71461040f5780630208e4b514610444576103bb565b366103bb576040517f34352c7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f34352c7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156103f957600080fd5b5061040d61040836600461402e565b610c05565b005b34801561041b57600080fd5b5061042f61042a366004614047565b610cc7565b60405190151581526020015b60405180910390f35b34801561045057600080fd5b5061040d61045f366004614089565b610d23565b34801561047057600080fd5b5061040d61047f366004614112565b61128a565b34801561049057600080fd5b5060d05461049f9061ffff1681565b60405161ffff909116815260200161043b565b3480156104be57600080fd5b506104c860d15481565b60405190815260200161043b565b3480156104e257600080fd5b5061040d61138c565b3480156104f757600080fd5b506104c87fe30bb2df90b65284acd0e8b5ebe3483bb2bbe65a08e43f0f9e8300fd8607ee1181565b34801561052b57600080fd5b506104c861053a36600461402e565b60009081526065602052604090206001015490565b34801561055b57600080fd5b5061040d61056a36600461412f565b61143b565b34801561057b57600080fd5b5060d45461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161043b565b3480156105cd57600080fd5b5061040d6105dc36600461402e565b611583565b3480156105ed57600080fd5b5061040d6105fc366004614185565b6116ea565b34801561060d57600080fd5b506104c87fe6ef7125bfa79685f3bd2e4c4cea243c1e988ebbc0801ab7641ae36b9e2c529181565b34801561064157600080fd5b506104c860cf5481565b34801561065757600080fd5b5061040d610666366004614185565b611714565b34801561067757600080fd5b506104c87fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b81565b3480156106ab57600080fd5b5060d95461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106d857600080fd5b5060d95461042f9074010000000000000000000000000000000000000000900460ff1681565b34801561070a57600080fd5b506104c861071936600461402e565b6117c7565b34801561072a57600080fd5b5060d85461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075757600080fd5b506104c860db5481565b34801561076d57600080fd5b506104c861077c36600461402e565b611938565b34801561078d57600080fd5b5061042f61079c36600461420e565b805160208183018101805160c98252928201919093012091525460ff1681565b3480156107c857600080fd5b506104c8611a74565b3480156107dd57600080fd5b506104c860ca5481565b3480156107f357600080fd5b5061040d6108023660046142dd565b611c23565b34801561081357600080fd5b506104c87f5e4bd437d29fad01c10cdcfff414f0d6b0e84b96d2dade88d780d45b5630696b81565b34801561084757600080fd5b5061040d61085636600461402e565b611e8c565b34801561086757600080fd5b5061040d6108763660046142ff565b611f43565b34801561088757600080fd5b506104c860d25481565b34801561089d57600080fd5b5060d55461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108ca57600080fd5b506104c860cc5481565b61040d612094565b3480156108e857600080fd5b5060d75461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561091557600080fd5b506104c861092436600461433a565b612131565b34801561093557600080fd5b506104c87fdec9d30de0821ad67aa5b141b13a539f584a19f99319e6041698a892b0e7955981565b34801561096957600080fd5b5061059c6109783660046142dd565b61213d565b34801561098957600080fd5b5061042f610998366004614185565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156109dc57600080fd5b5061040d6109eb36600461402e565b612155565b3480156109fc57600080fd5b5060d65461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a2957600080fd5b506104c8600081565b61040d610a4036600461402e565b61220c565b348015610a5157600080fd5b5061040d610a6036600461402e565b612563565b348015610a7157600080fd5b506104c8610a80366004614368565b61261a565b348015610a9157600080fd5b506104c860ce5481565b348015610aa757600080fd5b506104c860da5481565b348015610abd57600080fd5b506104c860cb5481565b348015610ad357600080fd5b5061040d610ae23660046143d3565b61266d565b61040d612a62565b348015610afb57600080fd5b506104c8610b0a36600461402e565b612ac5565b348015610b1b57600080fd5b5061040d610b2a366004614185565b612adc565b348015610b3b57600080fd5b5061040d610b4a36600461402e565b612b01565b61040d612bb8565b348015610b6357600080fd5b506104c87f8ea5b4dbd68db0bf23bf4cda958b61a749f8c5aec6f2912d75a03246753ddd1681565b348015610b9757600080fd5b5060d35461059c9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610bc457600080fd5b506104c860cd5481565b348015610bda57600080fd5b50610bee610be936600461402e565b612bfc565b60408051921515835260208301919091520161043b565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b610c2f81612c9c565b60ce82905560408051602081018490527e8db05b00000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb9161451b565b60405180910390a25050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610d1d5750610d1d82612ca9565b92915050565b7fe30bb2df90b65284acd0e8b5ebe3483bb2bbe65a08e43f0f9e8300fd8607ee11610d4d81612c9c565b60d660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eea12ab66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190614562565b15610e15576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82156112845760d354604080517fc5f2892f000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163c5f2892f9160048083019260209291908290030181865afa158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf919061457f565b9050808314610ef2576040517f1497ae93000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b6000805b858110156111105736878783818110610f1157610f11614598565b9050602002810190610f2391906145c7565b905060c9610f346040830183614605565b604051610f42929190614671565b9081526040519081900360200190205460ff1615610f8c576040517f932c5b0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d15481602001351015610fcc576040517f172b315400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d2548160200135111561100c576040517f184a72de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102161101c6060830183614605565b612d40565b600160c96110326040840184614605565b604051611040929190614671565b9081526040516020918190038201902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169215159290921790915561108b90820135846146b0565b9250803561109c6040830183614605565b6040516110aa929190614671565b60405180910390207f15f16c2e13e50235799a97b981bf4a66c8cd86051f06aca745c5ff26f39b330e8380604001906110e39190614605565b85602001356040516110f79392919061470c565b60405180910390a35061110981614730565b9050610ef6565b5060cd5481111561114d576040517f1eecaf5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060cd600082825461115f9190614768565b925050819055508060ca600082825461117891906146b0565b909155505060cb80548691906000906111929084906146b0565b90915550600090505b8581101561128057368787838181106111b6576111b6614598565b90506020028101906111c891906145c7565b60d35490915073ffffffffffffffffffffffffffffffffffffffff16632289511860208301356111fb6040850185614605565b6112086060870187614605565b6112156080890189614605565b8960a001356040518963ffffffff1660e01b815260040161123c979695949392919061477b565b6000604051808303818588803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b5050505050508061127990614730565b905061119b565b5050505b50505050565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b6112b481612c9c565b60d9805483151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f04f36cc200000000000000000000000000000000000000000000000000000000907f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e7490611354908590602001901515815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb916147cc565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b6113b681612c9c565b60d760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2d42b466040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b5050505050565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b61146581612c9c565b611472600a612710614842565b61ffff168261ffff1611156114b3576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff831611156114c9576114c961488a565b60d080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff84169081179091556040805160208101929092527f29d4870400000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb916148b9565b60d660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b61391a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116149190614562565b1561164b576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051339082907fbac6b2cb68f9205537fb1489571de5d98c9492cd5e1c7581b81cbb5932753aa890600090a360d7546040517fddd5e1b20000000000000000000000000000000000000000000000000000000081526004810183905233602482015273ffffffffffffffffffffffffffffffffffffffff9091169063ddd5e1b290604401600060405180830381600087803b15801561142057600080fd5b60008281526065602052604090206001015461170581612c9c565b61170f8383612ec0565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146117b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610ee9565b6117c38282612ee2565b5050565b60d454604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916318160ddd9160048083019260209291908290030181865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b919061457f565b600003611866575090565b60d054610d1d90839061187f9061ffff16612710614926565b61ffff1660d460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611914919061457f565b61191e9190614941565b612710611929611a74565b6119339190614941565b612f04565b60d454604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916318160ddd9160048083019260209291908290030181865afa1580156119a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cc919061457f565b6000036119d7575090565b610d1d826119e3611a74565b60d460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611933919061457f565b60008060d560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3a009a06040518163ffffffff1660e01b815260040161010060405180830381865afa158015611ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b09919061497b565b9050600060cc5481611b1b91906146b0565b905060cd5481611b2b91906146b0565b90508160e001516fffffffffffffffffffffffffffffffff1660ca54611b519190614768565b611b5b90826146b0565b90508160c001516fffffffffffffffffffffffffffffffff1681611b7f91906146b0565b905060d760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c12919061457f565b611c1c90826146b0565b9392505050565b7fe6ef7125bfa79685f3bd2e4c4cea243c1e988ebbc0801ab7641ae36b9e2c5291611c4d81612c9c565b60d660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdcada5e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde9190614562565b15611d15576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cc54611d2283856146b0565b1115611d5a576040517f96b0c75100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d6482846146b0565b60cc6000828254611d759190614768565b90915550508115611dcb578160cd6000828254611d9291906146b0565b90915550506040518281527f9d04ecb465d2c8754acb798a22293dd26215a1c2f7a2a56607afa215c1aadc779060200160405180910390a15b821561170f576040518381527ffe89805cf5299ef9fbd1d1ddefb8dcc3fa9408064d2ea31e3fca6565768f52179060200160405180910390a160d760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d13bfa6846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e6e57600080fd5b505af1158015611e82573d6000803e3d6000fd5b5050505050505050565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b611eb681612c9c565b60db82905560408051602081018490527f729d533400000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb91614a45565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b611f6d81612c9c565b8173ffffffffffffffffffffffffffffffffffffffff8116611fbb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040805160208101929092527f75796f7600000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261208791614a8c565b60405180910390a2505050565b60d95473ffffffffffffffffffffffffffffffffffffffff1633146120e5576040517f031886f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040513481527f4cbb9d73b003a252cee3f2ee51d8d65a562af35eebb23730dd4a76d68127b3709060200160405180910390a13460cc600082825461212a91906146b0565b9091555050565b6000611c1c838361302d565b6000828152609760205260408120611c1c908361332d565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b61217f81612c9c565b60cf82905560408051602081018490527f99dd1deb00000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb91614ad3565b60d660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ea7ca896040518163ffffffff1660e01b8152600401602060405180830381865afa158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d9190614562565b156122d4576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d95474010000000000000000000000000000000000000000900460ff1615612320576123207fdec9d30de0821ad67aa5b141b13a539f584a19f99319e6041698a892b0e79559612c9c565b60ce5434101561235c576040517f2c2843b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612367346117c7565b905060db5460d460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fd919061457f565b61240790836146b0565b111561243f576040517f273ad0e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811015612483576040517fb5903eca0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610ee9565b3460cc600082825461249591906146b0565b9091555050604080513481526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a260d4546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561254757600080fd5b505af115801561255b573d6000803e3d6000fd5b505050505050565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b61258d81612c9c565b60d182905560408051602081018490527faab483d600000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb91614b1a565b60d4546000906126589073ffffffffffffffffffffffffffffffffffffffff1633306fffffffffffffffffffffffffffffffff8b1689898989613339565b612662878761302d565b979650505050505050565b600054610100900460ff161580801561268d5750600054600160ff909116105b806126a75750303b1580156126a7575060005460ff166001145b612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610ee9565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561279157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6127996135b9565b81516127a790600090612ec0565b6127d57fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b8360200151612ec0565b6128037fe6ef7125bfa79685f3bd2e4c4cea243c1e988ebbc0801ab7641ae36b9e2c52918360400151612ec0565b6128317fe30bb2df90b65284acd0e8b5ebe3483bb2bbe65a08e43f0f9e8300fd8607ee118360600151612ec0565b61287b7f8ea5b4dbd68db0bf23bf4cda958b61a749f8c5aec6f2912d75a03246753ddd167fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b613652565b6128c57fdec9d30de0821ad67aa5b141b13a539f584a19f99319e6041698a892b0e795597f8ea5b4dbd68db0bf23bf4cda958b61a749f8c5aec6f2912d75a03246753ddd16613652565b60c082015160d480547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161790915560e084015160d38054831691841691909117905561010084015160d58054831691841691909117905561012084015160d680548316918416919091179055608084015160d9805461014087015160d78054861691871691909117905560a087015160d880549095169086161790935567016345785d8a000060ce55662386f26fc1000060cf556801bc16d674ec80000060d181905560d25574010000000000000000000000000000000000000000919093167fffffffffffffffffffffff000000000000000000000000000000000000000000909216919091171790554360da55683782dace9d9000000060db5580156117c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60d75473ffffffffffffffffffffffffffffffffffffffff163314612ab3576040517f7154fc4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3460cc600082825461212a91906146b0565b6000818152609760205260408120610d1d9061369d565b600082815260656020526040902060010154612af781612c9c565b61170f8383612ee2565b7fa6b5d83d32632203555cb9b2c2f68a8d94da48cadd9266ac0d17babedb52ea5b612b2b81612c9c565b60d282905560408051602081018490527fd70a6f3100000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610cbb91614b61565b7f5e4bd437d29fad01c10cdcfff414f0d6b0e84b96d2dade88d780d45b5630696b612be281612c9c565b3460cc6000828254612bf491906146b0565b909155505050565b60d7546040517f4f588bf100000000000000000000000000000000000000000000000000000000815260048101839052600091829173ffffffffffffffffffffffffffffffffffffffff90911690634f588bf1906024016040805180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c939190614ba8565b91509150915091565b612ca681336136a7565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610d1d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610d1d565b60208114612d7d576040517f9b0ec52700000000000000000000000000000000000000000000000000000000815260048101829052602401610ee9565b6000612d8c600c828486614bd6565b612d9591614c00565b90507f01000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffff0000000000000000000000000000000000000000821614612e36576040517f08ebf5650000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffff000000000000000000000000000000000000000082166004820152602401610ee9565b6000612e466020600c8587614bd6565b612e4f91614c48565b60d85460609190911c915073ffffffffffffffffffffffffffffffffffffffff168114611284576040517f1b4d561900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610ee9565b612eca8282613761565b600082815260976020526040902061170f9082613855565b612eec8282613877565b600082815260976020526040902061170f9082613932565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612f5c57838281612f5257612f52614813565b0492505050611c1c565b808411612fc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401610ee9565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60d654604080517f8b61391a000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638b61391a9160048083019260209291908290030181865afa15801561309d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c19190614562565b156130f8576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf54836fffffffffffffffffffffffffffffffff161015613146576040517f3b8dd38000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613163846fffffffffffffffffffffffffffffffff16611938565b9050826fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610156131df576040517f3aff96a90000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff808316600483015284166024820152604401610ee9565b60d7546040517fb5475cf60000000000000000000000000000000000000000000000000000000081523360048201526fffffffffffffffffffffffffffffffff80871660248301528316604482015260009173ffffffffffffffffffffffffffffffffffffffff169063b5475cf6906064016020604051808303816000875af1158015613270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613294919061457f565b604080516fffffffffffffffffffffffffffffffff808616825288166020820152919250339183917fcbb10a3603d92dc1f9db6996b88539fbd521bb4144891e34c75b05c341c18379910160405180910390a360d45460d7546133259173ffffffffffffffffffffffffffffffffffffffff908116913391166fffffffffffffffffffffffffffffffff8916613954565b949350505050565b6000611c1c83836139e9565b6040517f7ecebe0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152600091908a1690637ecebe0090602401602060405180830381865afa1580156133a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cd919061457f565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528981166024830152604482018990526064820188905260ff8716608483015260a4820186905260c48201859052919250908a169063d505accf9060e401600060405180830381600087803b15801561346757600080fd5b505af115801561347b573d6000803e3d6000fd5b50506040517f7ecebe0000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152600093508c169150637ecebe0090602401602060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613512919061457f565b905061351f8260016146b0565b81146135ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5361666545524332303a207065726d697420646964206e6f742073756363656560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610ee9565b50505050505050505050565b600054610100900460ff16613650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ee9565b565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6000610d1d825490565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117c3576136e781613a13565b6136f2836020613a32565b604051602001613703929190614c8e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610ee991600401614d0f565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117c357600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556137f73390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611c1c8373ffffffffffffffffffffffffffffffffffffffff8416613c75565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156117c357600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611c1c8373ffffffffffffffffffffffffffffffffffffffff8416613cc4565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611284908590613dbe565b6000826000018281548110613a0057613a00614598565b9060005260206000200154905092915050565b6060610d1d73ffffffffffffffffffffffffffffffffffffffff831660145b60606000613a41836002614941565b613a4c9060026146b0565b67ffffffffffffffff811115613a6457613a646141b5565b6040519080825280601f01601f191660200182016040528015613a8e576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613ac557613ac5614598565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613b2857613b28614598565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613b64846002614941565b613b6f9060016146b0565b90505b6001811115613c0c577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613bb057613bb0614598565b1a60f81b828281518110613bc657613bc6614598565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93613c0581614d22565b9050613b72565b508315611c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ee9565b6000818152600183016020526040812054613cbc57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d1d565b506000610d1d565b60008181526001830160205260408120548015613dad576000613ce8600183614768565b8554909150600090613cfc90600190614768565b9050818114613d61576000866000018281548110613d1c57613d1c614598565b9060005260206000200154905080876000018481548110613d3f57613d3f614598565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613d7257613d72614d57565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d1d565b6000915050610d1d565b5092915050565b6000613e20826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ecd9092919063ffffffff16565b9050805160001480613e41575080806020019051810190613e419190614562565b61170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ee9565b60606133258484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613f019190614d86565b60006040518083038185875af1925050503d8060008114613f3e576040519150601f19603f3d011682016040523d82523d6000602084013e613f43565b606091505b50915091506126628783838760608315613fe5578251600003613fde5773ffffffffffffffffffffffffffffffffffffffff85163b613fde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ee9565b5081613325565b6133258383815115613ffa5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee99190614d0f565b60006020828403121561404057600080fd5b5035919050565b60006020828403121561405957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c1c57600080fd5b60008060006040848603121561409e57600080fd5b833567ffffffffffffffff808211156140b657600080fd5b818601915086601f8301126140ca57600080fd5b8135818111156140d957600080fd5b8760208260051b85010111156140ee57600080fd5b6020928301989097509590910135949350505050565b8015158114612ca657600080fd5b60006020828403121561412457600080fd5b8135611c1c81614104565b60006020828403121561414157600080fd5b813561ffff81168114611c1c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114612ca657600080fd5b803561418081614153565b919050565b6000806040838503121561419857600080fd5b8235915060208301356141aa81614153565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614208576142086141b5565b60405290565b60006020828403121561422057600080fd5b813567ffffffffffffffff8082111561423857600080fd5b818401915084601f83011261424c57600080fd5b81358181111561425e5761425e6141b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156142a4576142a46141b5565b816040528281528760208487010111156142bd57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080604083850312156142f057600080fd5b50508035926020909101359150565b60006020828403121561431157600080fd5b8135611c1c81614153565b6fffffffffffffffffffffffffffffffff81168114612ca657600080fd5b6000806040838503121561434d57600080fd5b82356143588161431c565b915060208301356141aa8161431c565b60008060008060008060c0878903121561438157600080fd5b863561438c8161431c565b9550602087013561439c8161431c565b945060408701359350606087013560ff811681146143b957600080fd5b9598949750929560808101359460a0909101359350915050565b600061016082840312156143e657600080fd5b6143ee6141e4565b6143f783614175565b815261440560208401614175565b602082015261441660408401614175565b604082015261442760608401614175565b606082015261443860808401614175565b608082015261444960a08401614175565b60a082015261445a60c08401614175565b60c082015261446b60e08401614175565b60e082015261010061447e818501614175565b90820152610120614490848201614175565b908201526101406144a2848201614175565b908201529392505050565b60005b838110156144c85781810151838201526020016144b0565b50506000910152565b600081518084526144e98160208601602086016144ad565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152601d60408201527f7365744d696e696d756d5374616b65426f756e642875696e74323536290000006060820152608060208201526000611c1c60808301846144d1565b60006020828403121561457457600080fd5b8151611c1c81614104565b60006020828403121561459157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126145fb57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261463a57600080fd5b83018035915067ffffffffffffffff82111561465557600080fd5b60200191503681900382131561466a57600080fd5b9250929050565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d1d57610d1d614681565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006147206040830185876146c3565b9050826020830152949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361476157614761614681565b5060010190565b81810381811115610d1d57610d1d614681565b60808152600061478f60808301898b6146c3565b82810360208401526147a281888a6146c3565b905082810360408401526147b78186886146c3565b91505082606083015298975050505050505050565b60408152601960408201527f7365745374616b696e67416c6c6f776c69737428626f6f6c29000000000000006060820152608060208201526000611c1c60808301846144d1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061ffff8084168061487e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60408152602160408201527f73657445786368616e676541646a7573746d656e74526174652875696e74313660608201527f2900000000000000000000000000000000000000000000000000000000000000608082015260a060208201526000611c1c60a08301846144d1565b61ffff828116828216039080821115613db757613db7614681565b8082028115828204841417610d1d57610d1d614681565b805167ffffffffffffffff8116811461418057600080fd5b80516141808161431c565b600061010080838503121561498f57600080fd5b6040519081019067ffffffffffffffff821181831017156149b2576149b26141b5565b816040526149bf84614958565b81526149cd60208501614958565b60208201526149de60408501614958565b60408201526149ef60608501614958565b606082015260808401519150614a048261431c565b816080820152614a1660a08501614970565b60a0820152614a2760c08501614970565b60c0820152614a3860e08501614970565b60e0820152949350505050565b60408152601d60408201527f7365744d6178696d756d4d455448537570706c792875696e74323536290000006060820152608060208201526000611c1c60808301846144d1565b60408152601c60408201527f7365745769746864726177616c57616c6c6574286164647265737329000000006060820152608060208201526000611c1c60808301846144d1565b60408152601f60408201527f7365744d696e696d756d556e7374616b65426f756e642875696e7432353629006060820152608060208201526000611c1c60808301846144d1565b60408152602060408201527f7365744d696e696d756d4465706f736974416d6f756e742875696e74323536296060820152608060208201526000611c1c60808301846144d1565b60408152602060408201527f7365744d6178696d756d4465706f736974416d6f756e742875696e74323536296060820152608060208201526000611c1c60808301846144d1565b60008060408385031215614bbb57600080fd5b8251614bc681614104565b6020939093015192949293505050565b60008085851115614be657600080fd5b83861115614bf357600080fd5b5050820193919092039150565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000813581811691600c851015614c4057808186600c0360031b1b83161692505b505092915050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015614c405760149490940360031b84901b1690921692915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614cc68160178501602088016144ad565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614d038160288401602088016144ad565b01602801949350505050565b602081526000611c1c60208301846144d1565b600081614d3157614d31614681565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600082516145fb8184602087016144ad56fea2646970667358221220f4b835c80b0aa35d656bd65254e8b76ad80656e16868f7a6f1728135968b11a264736f6c63430008140033