0 txs
1.5k calls
constructor
No constructor.
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
adminUnlocked
viewfunction adminUnlocked() view returns (bool)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
balanceOfAt
viewfunction balanceOfAt(address account, uint256 timestamp) view returns (uint256)
balanceOfLock
viewfunction balanceOfLock(address account, uint256 index) view returns (uint256)
baseToken
viewfunction baseToken() view returns (address)
CLOCK_MODE
viewfunction CLOCK_MODE() view returns (string)
clock
viewfunction clock() view returns (uint48)
decimals
purefunction decimals() pure returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
delegates
viewfunction delegates(address account) view returns (address)
DENOM
viewfunction DENOM() view returns (uint16)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getMaturity
viewfunction getMaturity(address account, uint256 id) view returns (uint256)
getPastTotalSupply
viewfunction getPastTotalSupply(uint256 timepoint) view returns (uint256)
getPastVotes
viewfunction getPastVotes(address account, uint256 timepoint) view returns (uint256)
getPositions
viewfunction getPositions(address account, uint256 start, uint256 count) view returns (tuple[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getVotes
viewfunction getVotes(address account) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
locks
viewfunction locks(address, uint256) view returns (uint256 amount, uint256 start, uint256 end, uint8 numWeeks, bool autoRenew, uint256 id)
MAX_POSITIONS
viewfunction MAX_POSITIONS() view returns (uint256)
maxWeeks
viewfunction maxWeeks() view returns (uint8)
name
purefunction name() pure returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
numPositions
viewfunction numPositions(address account) view returns (uint256)
stakedAmountOf
viewfunction stakedAmountOf(address account) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
purefunction symbol() pure returns (string)
delegate
nonpayablefunction delegate(address delegatee)
delegateBySig
nonpayablefunction delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s)
extend
nonpayablefunction extend(uint256 id, uint8 numWeeks)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address baseToken_, uint8 maxWeeks_)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAdminUnlocked
nonpayablefunction setAdminUnlocked(bool adminUnlocked_)
setMaxWeeks
nonpayablefunction setMaxWeeks(uint8 maxWeeks_)
stake
nonpayablefunction stake(uint256 amount, uint8 numWeeks, bool autoRenew)
toggleAutoRenew
nonpayablefunction toggleAutoRenew(uint256 id)
withdraw
nonpayablefunction withdraw(uint256 id)
events
AdminUnlocked
event AdminUnlocked(bool adminUnlocked)
AutoRenew
event AutoRenew(address indexed user, uint256 id, bool autoRenew)
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)
DelegateVotesChanged
event DelegateVotesChanged(address indexed delegate, uint256 previousVotes, uint256 newVotes)
EIP712DomainChanged
event EIP712DomainChanged()
Extend
event Extend(address indexed user, uint256 id, uint8 numWeeks)
Initialized
event Initialized(uint64 version)
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)
Stake
event Stake(address indexed user, uint256 id, uint256 amount, uint8 numWeeks)
Withdraw
event Withdraw(address indexed user, uint256 id, uint256 amount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
CheckpointUnorderedInsertion
error CheckpointUnorderedInsertion()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC5805FutureLookup
error ERC5805FutureLookup(uint256 timepoint, uint48 clock)
ERC6372InconsistentClock
error ERC6372InconsistentClock()
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
VotesExpiredSignature
error VotesExpiredSignature(uint256 expiry)
creation bytecode
0x6080604052348015600f57600080fd5b50615d2f8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806375b238fc11610146578063a217fddf116100c3578063c55dae6311610087578063c55dae6314610779578063d547741f14610797578063de6e659c146107b3578063e49dbb4f146107e3578063f48355b9146107ff578063f7b24e081461081b57610253565b8063a217fddf146106be578063b425f802146106dc578063b7d7702c14610711578063be3956bf14610741578063c3cda5201461075d57610253565b806391d148541161010a57806391d148541461060657806391ddadf414610636578063943b24b21461065457806395d89b41146106705780639ab24eb01461068e57610253565b806375b238fc146105465780637e530d2f146105645780637ecebe001461058257806384b0196e146105b25780638e539e8c146105d657610253565b80633a46b1a8116101d45780635c19a95c116101985780635c19a95c1461047e5780635fcdad911461049a578063605830ef146104ca5780636e7ed07b146104fa57806370a082311461051657610253565b80633a46b1a8146103b45780634bf5d7e9146103e45780634ee2cd7e1461040257806355168c9314610432578063587cde1e1461044e57610253565b80632b4bce311161021b5780632b4bce31146103245780632e1a7d4d146103425780632f2ff15d1461035e578063313ce5671461037a57806336568abe1461039857610253565b806301ffc9a71461025857806306fdde031461028857806316343da4146102a6578063248a9ca3146102c4578063288b1c68146102f4575b600080fd5b610272600480360381019061026d919061450e565b610839565b60405161027f9190614556565b60405180910390f35b6102906108b3565b60405161029d9190614601565b60405180910390f35b6102ae6108f0565b6040516102bb9190614640565b60405180910390f35b6102de60048036038101906102d99190614691565b6108f6565b6040516102eb91906146cd565b60405180910390f35b61030e6004803603810190610309919061477c565b610924565b60405161031b9190614933565b60405180910390f35b61032c610afb565b6040516103399190614964565b60405180910390f35b61035c6004803603810190610357919061497f565b610b0e565b005b610378600480360381019061037391906149ac565b610fb5565b005b610382610fd7565b60405161038f9190614964565b60405180910390f35b6103b260048036038101906103ad91906149ac565b610fe0565b005b6103ce60048036038101906103c991906149ec565b61105b565b6040516103db9190614a3b565b60405180910390f35b6103ec6110e8565b6040516103f99190614601565b60405180910390f35b61041c600480360381019061041791906149ec565b61117c565b6040516104299190614a3b565b60405180910390f35b61044c60048036038101906104479190614a82565b6112c8565b005b61046860048036038101906104639190614ac2565b611525565b6040516104759190614afe565b60405180910390f35b61049860048036038101906104939190614ac2565b61159c565b005b6104b460048036038101906104af9190614ac2565b6115b6565b6040516104c19190614a3b565b60405180910390f35b6104e460048036038101906104df91906149ec565b611691565b6040516104f19190614a3b565b60405180910390f35b610514600480360381019061050f9190614b19565b61181f565b005b610530600480360381019061052b9190614ac2565b611868565b60405161053d9190614a3b565b60405180910390f35b61054e61187b565b60405161055b91906146cd565b60405180910390f35b61056c61189f565b6040516105799190614556565b60405180910390f35b61059c60048036038101906105979190614ac2565b6118b2565b6040516105a99190614a3b565b60405180910390f35b6105ba611909565b6040516105cd9796959493929190614c30565b60405180910390f35b6105f060048036038101906105eb919061497f565b611a1b565b6040516105fd9190614a3b565b60405180910390f35b610620600480360381019061061b91906149ac565b611a6a565b60405161062d9190614556565b60405180910390f35b61063e611ae3565b60405161064b9190614cd5565b60405180910390f35b61066e60048036038101906106699190614cf0565b611af2565b005b610678611e1e565b6040516106859190614601565b60405180910390f35b6106a860048036038101906106a39190614ac2565b611e5b565b6040516106b59190614a3b565b60405180910390f35b6106c6611ed5565b6040516106d391906146cd565b60405180910390f35b6106f660048036038101906106f191906149ec565b611edc565b60405161070896959493929190614d30565b60405180910390f35b61072b60048036038101906107269190614ac2565b611f4f565b6040516107389190614a3b565b60405180910390f35b61075b60048036038101906107569190614dbd565b611f9b565b005b61077760048036038101906107729190614dea565b612029565b005b6107816120ef565b60405161078e9190614afe565b60405180910390f35b6107b160048036038101906107ac91906149ac565b612113565b005b6107cd60048036038101906107c891906149ec565b612135565b6040516107da9190614a3b565b60405180910390f35b6107fd60048036038101906107f89190614e77565b612211565b005b6108196004803603810190610814919061497f565b6125c0565b005b61082361274d565b6040516108309190614a3b565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108ac57506108ab82612752565b5b9050919050565b60606040518060400160405280600881526020017f766556454c564554000000000000000000000000000000000000000000000000815250905090565b61271081565b6000806109016127bc565b905080600001600084815260200190815260200160002060010154915050919050565b606060008267ffffffffffffffff81111561094257610941614eca565b5b60405190808252806020026020018201604052801561097b57816020015b610968614476565b8152602001906001900390816109605790505b5090506000808590505b84866109919190614f28565b811080156109e05750600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081105b15610aee57600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610a3657610a35614f5c565b5b90600052602060002090600502016040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681526020016003820160019054906101000a900460ff16151515158152602001600482015481525050838381518110610ac257610ac1614f5c565b5b60200260200101819052508180610ad890614f8b565b9250508080610ae690614f8b565b915050610985565b5081925050509392505050565b600360009054906101000a900460ff1681565b610b166127e4565b6000610b2061283b565b90506000610b2e8284612843565b90506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610b8357610b82614f5c565b5b90600052602060002090600502016040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681526020016003820160019054906101000a900460ff161515151581526020016004820154815250509050806040015142101580610c1d5750600360019054906101000a900460ff165b610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c539061501f565b60405180910390fd5b600015158160800151151514610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e9061508b565b60405180910390fd5b600081600001519050600060018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610d0091906150ab565b9050808414610e4e57600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610d5a57610d59614f5c565b5b9060005260206000209060050201600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110610db957610db8614f5c565b5b90600052602060002090600502016000820154816000015560018201548160010155600282015481600201556003820160009054906101000a900460ff168160030160006101000a81548160ff021916908360ff1602179055506003820160019054906101000a900460ff168160030160016101000a81548160ff021916908315150217905550600482015481600401559050505b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610e9d57610e9c6150df565b5b6001900381819060005260206000209060050201600080820160009055600182016000905560028201600090556003820160006101000a81549060ff02191690556003820160016101000a81549060ff0219169055600482016000905550509055610f0a85600084612956565b610f55858360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a219092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688784604051610f9d92919061510e565b60405180910390a25050505050610fb2612aa0565b50565b610fbe826108f6565b610fc781612ab9565b610fd18383612acd565b50505050565b60006012905090565b610fe861283b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461104c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110568282612bce565b505050565b600080611066612cd0565b90506110c361107484612cf8565b8260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612d6490919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff1691505092915050565b60606110f2612e5e565b65ffffffffffff16611102611ae3565b65ffffffffffff1614611141576040517f6ff0714000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280601d81526020017f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000815250905090565b6000806000905060005b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156112bd576112a3600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061122457611223614f5c565b5b90600052602060002090600502016040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681526020016003820160019054906101000a900460ff1615151515815260200160048201548152505085612e6e565b826112ae9190614f28565b91508080600101915050611186565b508091505092915050565b6112d06127e4565b60006112da61283b565b905060006112e88285612843565b90506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061133d5761133c614f5c565b5b90600052602060002090600502019050600015158160030160019054906101000a900460ff161515146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c9061508b565b60405180910390fd5b806002015442106113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290615183565b60405180910390fd5b600360009054906101000a900460ff1660ff16848260030160009054906101000a900460ff1661141b91906151a3565b60ff16111561145f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114569061524a565b60405180910390fd5b600062093a808560ff16611473919061526a565b82600201546114829190614f28565b9050848260030160008282829054906101000a900460ff166114a491906151a3565b92506101000a81548160ff021916908360ff1602179055508082600201819055508373ffffffffffffffffffffffffffffffffffffffff167f2b1bad57ed45c0298a4d6a14dc8850fb68015d5bd10457c2ec5ff8b587230173878760405161150d9291906152ac565b60405180910390a250505050611521612aa0565b5050565b600080611530612cd0565b90508060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b60006115a661283b565b90506115b28183612f74565b5050565b6000806000905060005b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561168757600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061165b5761165a614f5c565b5b906000526020600020906005020160000154826116789190614f28565b915080806001019150506115c0565b5080915050919050565b60008061169e8484612843565b90506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116f3576116f2614f5c565b5b90600052602060002090600502016040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681526020016003820160019054906101000a900460ff16151515158152602001600482015481525050905080608001516117e357600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106117c8576117c7614f5c565b5b90600052602060002090600502016002015492505050611819565b62093a80600360009054906101000a900460ff1660ff1661180491906152e4565b62ffffff16426118149190614f28565b925050505b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561184981612ab9565b81600360006101000a81548160ff021916908360ff1602179055505050565b6000611874824261117c565b9050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b600360019054906101000a900460ff1681565b6000806118bd613097565b90508060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b600060608060008060006060600061191f6130bf565b90506000801b816000015414801561193d57506000801b8160010154145b61197c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119739061536d565b60405180910390fd5b6119846130e7565b61198c613188565b46306000801b600067ffffffffffffffff8111156119ad576119ac614eca565b5b6040519080825280602002602001820160405280156119db5781602001602082028036833780820191505090505b507f0f0000000000000000000000000000000000000000000000000000000000000095949392919097509750975097509750975097505090919293949596565b600080611a26612cd0565b9050611a46611a3484612cf8565b82600201612d6490919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b600080611a756127bc565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b6000611aed612e5e565b905090565b6000611afc613229565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015611b4a5750825b9050600060018367ffffffffffffffff16148015611b7f575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611b8d575080155b15611bc4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611c145760018560000160086101000a81548160ff0219169083151502179055505b611c1c61323d565b611c2461324f565b611c2c613259565b611ca06040518060400160405280600881526020017f766556454c5645540000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250613263565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d06906153d9565b60405180910390fd5b866000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548160ff021916908360ff1602179055506001600281905550611d866000801b611d8161283b565b612acd565b50611db87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611db361283b565b612acd565b508315611e155760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611e0c9190615452565b60405180910390a15b50505050505050565b60606040518060400160405280600881526020017f766556454c564554000000000000000000000000000000000000000000000000815250905090565b600080611e66612cd0565b9050611eb18160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613279565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b6000801b81565b60016020528160005260406000208181548110611ef857600080fd5b9060005260206000209060050201600091509150508060000154908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060040154905086565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611fc581612ab9565b81600360016101000a81548160ff0219169083151502179055507f1664fc9d2adc81edeb38788b177fdfe12c9c15bd10b40663e9744e1af1c56a86600360019054906101000a900460ff1660405161201d9190614556565b60405180910390a15050565b8342111561206e57836040517f4683af0e0000000000000000000000000000000000000000000000000000000081526004016120659190614a3b565b60405180910390fd5b60006120d06120c87fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8989896040516020016120ad949392919061546d565b604051602081830303815290604052805190602001206132e1565b8585856132fb565b90506120dc818761332b565b6120e68188612f74565b50505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61211c826108f6565b61212581612ab9565b61212f8383612bce565b50505050565b6000612209600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061218b5761218a614f5c565b5b90600052602060002090600502016040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681526020016003820160019054906101000a900460ff16151515158152602001600482015481525050613383565b905092915050565b6122196127e4565b6000831161225c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612253906154fe565b60405180910390fd5b600360009054906101000a900460ff1660ff168260ff1611156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab9061524a565b60405180910390fd5b60008260ff16116122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f19061556a565b60405180910390fd5b60c86001600061230861283b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905010612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d906155d6565b60405180910390fd5b6123da61239161283b565b308560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613396909392919063ffffffff16565b60011515811515036123f957600360009054906101000a900460ff1691505b600062093a808360ff1661240d919061526a565b426124189190614f28565b905060006040518060c001604052808681526020014281526020018381526020018560ff16815260200184151581526020016002600081548092919061245d90614f8b565b9190505581525090506001600061247261283b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908360ff16021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160040155505061254961283b565b73ffffffffffffffffffffffffffffffffffffffff167f6fa2f6021ee337436cdf2b2570285886da18bc06402ce284d296504a0fe8f8758260a001518787604051612596939291906155f6565b60405180910390a26125b160006125ab61283b565b87612956565b50506125bb612aa0565b505050565b6125c86127e4565b60006125d261283b565b905060006125e08284612843565b90506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061263557612634614f5c565b5b906000526020600020906005020190508060030160019054906101000a900460ff16158160030160016101000a81548160ff021916908315150217905550600360009054906101000a900460ff168160030160006101000a81548160ff021916908360ff16021790555042816001018190555062093a808160030160009054906101000a900460ff1660ff166126cb919061526a565b426126d69190614f28565b81600201819055508273ffffffffffffffffffffffffffffffffffffffff167f1d94e785ca79528225ae3b538b0fc686337b6c73da42dbfee64c8d01b0779913858360030160019054906101000a900460ff1660405161273792919061562d565b60405180910390a250505061274a612aa0565b50565b60c881565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b60006127ee613418565b9050600281600001540361282e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816000018190555050565b600033905090565b600080600090505b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156129145782600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106128e7576128e6614f5c565b5b906000526020600020906005020160040154036129075780915050612950565b808060010191505061284b565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612947906156a2565b60405180910390fd5b92915050565b6000612960612cd0565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036129b1576129ae816002016134406129a985613456565b6134c4565b50505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a00576129fd816002016135046129f885613456565b6134c4565b50505b612a1b612a0c85611525565b612a1585611525565b8461351a565b50505050565b612a9b838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612a549291906156c2565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506137a4565b505050565b6000612aaa613418565b90506001816000018190555050565b612aca81612ac561283b565b613846565b50565b600080612ad86127bc565b9050612ae48484611a6a565b612bc257600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612b5e61283b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050612bc8565b60009150505b92915050565b600080612bd96127bc565b9050612be58484611a6a565b15612cc457600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612c6061283b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050612cca565b60009150505b92915050565b60007fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d00905090565b600080612d03611ae3565b90508065ffffffffffff168310612d535782816040517fecd3f81e000000000000000000000000000000000000000000000000000000008152600401612d4a9291906156eb565b60405180910390fd5b612d5c83613897565b915050919050565b600080836000018054905090506000808290506005831115612dec576000612d8b846138f1565b84612d9691906150ab565b9050612da58760000182613a8e565b60000160009054906101000a900465ffffffffffff1665ffffffffffff168665ffffffffffff161015612dda57809150612dea565b600181612de79190614f28565b92505b505b6000612dfd87600001878585613aa3565b905060008114612e4f57612e2087600001600183612e1b91906150ab565b613a8e565b60000160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff16612e52565b60005b94505050505092915050565b6000612e6943613897565b905090565b600080612ea284600001518560800151612e8c578560600151612e9d565b600360009054906101000a900460ff165b613b1c565b9050836080015115612ecd578360200151831015612ec4576000915050612f6e565b80915050612f6e565b8360200151831080612ee3575083604001518310155b15612ef2576000915050612f6e565b600084602001518560400151612f0891906150ab565b90506000856020015185612f1c91906150ab565b905060008261271061ffff1685612f33919061526a565b612f3d9190615743565b905061271061ffff168183612f52919061526a565b612f5c9190615743565b84612f6791906150ab565b9450505050505b92915050565b6000612f7e612cd0565b90506000612f8b84611525565b9050828260000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4613091818461308c87613b9e565b61351a565b50505050565b60007f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00905090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100905090565b606060006130f36130bf565b9050806002018054613104906157a3565b80601f0160208091040260200160405190810160405280929190818152602001828054613130906157a3565b801561317d5780601f106131525761010080835404028352916020019161317d565b820191906000526020600020905b81548152906001019060200180831161316057829003601f168201915b505050505091505090565b606060006131946130bf565b90508060030180546131a5906157a3565b80601f01602080910402602001604051908101604052809291908181526020018280546131d1906157a3565b801561321e5780601f106131f35761010080835404028352916020019161321e565b820191906000526020600020905b81548152906001019060200180831161320157829003601f168201915b505050505091505090565b600080613234613bb0565b90508091505090565b613245613bdb565b61324d613c1b565b565b613257613bdb565b565b613261613bdb565b565b61326b613bdb565b6132758282613c3c565b5050565b60008082600001805490509050600081146132d6576132a7836000016001836132a291906150ab565b613a8e565b60000160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff166132d9565b60005b915050919050565b60006132f46132ee613c91565b83613ca0565b9050919050565b60008060008061330d88888888613ce1565b92509250925061331d8282613dd5565b829350505050949350505050565b600061333683613f39565b905080821461337e5782816040517f752d88c00000000000000000000000000000000000000000000000000000000081526004016133759291906156c2565b60405180910390fd5b505050565b600061338f8242612e6e565b9050919050565b613412848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016133cb939291906157d4565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506137a4565b50505050565b60007f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00905090565b6000818361344e9190615831565b905092915050565b600079ffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156134bc5760d0826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016134b39291906158ba565b60405180910390fd5b819050919050565b6000806134f86134d2611ae3565b6134e86134de88613279565b868863ffffffff16565b87613f9e9092919063ffffffff16565b91509150935093915050565b6000818361351291906158e3565b905092915050565b6000613524612cd0565b90508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156135625750600082115b1561379e57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614613682576000806135f38360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206135046135ee87613456565b6134c4565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508573ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161367792919061510e565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461379d5760008061370e8360010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061344061370987613456565b6134c4565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161379292919061510e565b60405180910390a250505b5b50505050565b600080602060008451602086016000885af1806137c7576040513d6000823e3d81fd5b3d9250600051915050600082146137e25760018114156137fe565b60008473ffffffffffffffffffffffffffffffffffffffff163b145b1561384057836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016138379190614afe565b60405180910390fd5b50505050565b6138508282611a6a565b6138935780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161388a929190615931565b60405180910390fd5b5050565b600065ffffffffffff80168211156138e9576030826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016138e0929190615995565b60405180910390fd5b819050919050565b60006001821161390357819050613a89565b6000829050600060019050700100000000000000000000000000000000821061393557608082901c9150604081901b90505b68010000000000000000821061395457604082901c9150602081901b90505b640100000000821061396f57602082901c9150601081901b90505b62010000821061398857601082901c9150600881901b90505b61010082106139a057600882901c9150600481901b90505b601082106139b757600482901c9150600281901b90505b600482106139c757600181901b90505b600181600302901c905060018185816139e3576139e2615714565b5b048201901c905060018185816139fc576139fb615714565b5b048201901c90506001818581613a1557613a14615714565b5b048201901c90506001818581613a2e57613a2d615714565b5b048201901c90506001818581613a4757613a46615714565b5b048201901c90506001818581613a6057613a5f615714565b5b048201901c9050613a82818581613a7a57613a79615714565b5b048211613fbb565b8103925050505b919050565b60008260005281602060002001905092915050565b60005b81831015613b11576000613aba8484613fc7565b90508465ffffffffffff16613acf8783613a8e565b60000160009054906101000a900465ffffffffffff1665ffffffffffff161115613afb57809250613b0b565b600181613b089190614f28565b93505b50613aa6565b819050949350505050565b600061271061ffff16600360009054906101000a900460ff1660ff168360ff161015613b7957600360009054906101000a900460ff1660ff1661271061ffff168460ff16613b6a919061526a565b613b749190615743565b613b81565b61271061ffff165b84613b8c919061526a565b613b969190615743565b905092915050565b6000613ba9826115b6565b9050919050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b613be3613fed565b613c19576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b613c23613bdb565b6000613c2d613418565b90506001816000018190555050565b613c44613bdb565b6000613c4e6130bf565b905082816002019081613c619190615b60565b5081816003019081613c739190615b60565b506000801b81600001819055506000801b8160010181905550505050565b6000613c9b61400d565b905090565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613d21576000600385925092509250613dcb565b600060018888888860405160008152602001604052604051613d469493929190615c32565b6020604051602081039080840390855afa158015613d68573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613dbc57600060016000801b93509350935050613dcb565b8060008060001b935093509350505b9450945094915050565b60006003811115613de957613de8615c77565b5b826003811115613dfc57613dfb615c77565b5b0315613f355760016003811115613e1657613e15615c77565b5b826003811115613e2957613e28615c77565b5b03613e60576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613e7457613e73615c77565b5b826003811115613e8757613e86615c77565b5b03613ecc578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613ec39190614a3b565b60405180910390fd5b600380811115613edf57613ede615c77565b5b826003811115613ef257613ef1615c77565b5b03613f3457806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613f2b91906146cd565b60405180910390fd5b5b5050565b600080613f44613097565b90508060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055915050919050565b600080613faf856000018585614071565b91509150935093915050565b60008115159050919050565b60006002828418613fd89190615743565b828416613fe59190614f28565b905092915050565b6000613ff7613229565b60000160089054906101000a900460ff16905090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61403861437e565b6140406143fa565b4630604051602001614056959493929190615ca6565b60405160208183030381529060405280519060200120905090565b600080600085805490509050600081111561428e57600061409e8760018461409991906150ab565b613a8e565b905060008160000160009054906101000a900465ffffffffffff16905060008260000160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1690508765ffffffffffff168265ffffffffffff161115614134576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361419f57868360000160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555061427f565b8860405180604001604052808a65ffffffffffff1681526020018979ffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b80879550955050505050614376565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550505060008492509250505b935093915050565b6000806143896130bf565b905060006143956130e7565b90506000815111156143b2578080519060200120925050506143f7565b6000826000015490506000801b81146143d0578093505050506143f7565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47093505050505b90565b6000806144056130bf565b90506000614411613188565b905060008151111561442e57808051906020012092505050614473565b6000826001015490506000801b811461444c57809350505050614473565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47093505050505b90565b6040518060c00160405280600081526020016000815260200160008152602001600060ff168152602001600015158152602001600081525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6144eb816144b6565b81146144f657600080fd5b50565b600081359050614508816144e2565b92915050565b600060208284031215614524576145236144b1565b5b6000614532848285016144f9565b91505092915050565b60008115159050919050565b6145508161453b565b82525050565b600060208201905061456b6000830184614547565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145ab578082015181840152602081019050614590565b60008484015250505050565b6000601f19601f8301169050919050565b60006145d382614571565b6145dd818561457c565b93506145ed81856020860161458d565b6145f6816145b7565b840191505092915050565b6000602082019050818103600083015261461b81846145c8565b905092915050565b600061ffff82169050919050565b61463a81614623565b82525050565b60006020820190506146556000830184614631565b92915050565b6000819050919050565b61466e8161465b565b811461467957600080fd5b50565b60008135905061468b81614665565b92915050565b6000602082840312156146a7576146a66144b1565b5b60006146b58482850161467c565b91505092915050565b6146c78161465b565b82525050565b60006020820190506146e260008301846146be565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614713826146e8565b9050919050565b61472381614708565b811461472e57600080fd5b50565b6000813590506147408161471a565b92915050565b6000819050919050565b61475981614746565b811461476457600080fd5b50565b60008135905061477681614750565b92915050565b600080600060608486031215614795576147946144b1565b5b60006147a386828701614731565b93505060206147b486828701614767565b92505060406147c586828701614767565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61480481614746565b82525050565b600060ff82169050919050565b6148208161480a565b82525050565b61482f8161453b565b82525050565b60c08201600082015161484b60008501826147fb565b50602082015161485e60208501826147fb565b50604082015161487160408501826147fb565b5060608201516148846060850182614817565b5060808201516148976080850182614826565b5060a08201516148aa60a08501826147fb565b50505050565b60006148bc8383614835565b60c08301905092915050565b6000602082019050919050565b60006148e0826147cf565b6148ea81856147da565b93506148f5836147eb565b8060005b8381101561492657815161490d88826148b0565b9750614918836148c8565b9250506001810190506148f9565b5085935050505092915050565b6000602082019050818103600083015261494d81846148d5565b905092915050565b61495e8161480a565b82525050565b60006020820190506149796000830184614955565b92915050565b600060208284031215614995576149946144b1565b5b60006149a384828501614767565b91505092915050565b600080604083850312156149c3576149c26144b1565b5b60006149d18582860161467c565b92505060206149e285828601614731565b9150509250929050565b60008060408385031215614a0357614a026144b1565b5b6000614a1185828601614731565b9250506020614a2285828601614767565b9150509250929050565b614a3581614746565b82525050565b6000602082019050614a506000830184614a2c565b92915050565b614a5f8161480a565b8114614a6a57600080fd5b50565b600081359050614a7c81614a56565b92915050565b60008060408385031215614a9957614a986144b1565b5b6000614aa785828601614767565b9250506020614ab885828601614a6d565b9150509250929050565b600060208284031215614ad857614ad76144b1565b5b6000614ae684828501614731565b91505092915050565b614af881614708565b82525050565b6000602082019050614b136000830184614aef565b92915050565b600060208284031215614b2f57614b2e6144b1565b5b6000614b3d84828501614a6d565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b614b7b81614b46565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000614bb983836147fb565b60208301905092915050565b6000602082019050919050565b6000614bdd82614b81565b614be78185614b8c565b9350614bf283614b9d565b8060005b83811015614c23578151614c0a8882614bad565b9750614c1583614bc5565b925050600181019050614bf6565b5085935050505092915050565b600060e082019050614c45600083018a614b72565b8181036020830152614c5781896145c8565b90508181036040830152614c6b81886145c8565b9050614c7a6060830187614a2c565b614c876080830186614aef565b614c9460a08301856146be565b81810360c0830152614ca68184614bd2565b905098975050505050505050565b600065ffffffffffff82169050919050565b614ccf81614cb4565b82525050565b6000602082019050614cea6000830184614cc6565b92915050565b60008060408385031215614d0757614d066144b1565b5b6000614d1585828601614731565b9250506020614d2685828601614a6d565b9150509250929050565b600060c082019050614d456000830189614a2c565b614d526020830188614a2c565b614d5f6040830187614a2c565b614d6c6060830186614955565b614d796080830185614547565b614d8660a0830184614a2c565b979650505050505050565b614d9a8161453b565b8114614da557600080fd5b50565b600081359050614db781614d91565b92915050565b600060208284031215614dd357614dd26144b1565b5b6000614de184828501614da8565b91505092915050565b60008060008060008060c08789031215614e0757614e066144b1565b5b6000614e1589828a01614731565b9650506020614e2689828a01614767565b9550506040614e3789828a01614767565b9450506060614e4889828a01614a6d565b9350506080614e5989828a0161467c565b92505060a0614e6a89828a0161467c565b9150509295509295509295565b600080600060608486031215614e9057614e8f6144b1565b5b6000614e9e86828701614767565b9350506020614eaf86828701614a6d565b9250506040614ec086828701614da8565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f3382614746565b9150614f3e83614746565b9250828201905080821115614f5657614f55614ef9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614f9682614746565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614fc857614fc7614ef9565b5b600182019050919050565b7f4c6f636b206973206e6f74206578706972656400000000000000000000000000600082015250565b600061500960138361457c565b915061501482614fd3565b602082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f4c6f636b206973206175746f2d72656e6577696e670000000000000000000000600082015250565b600061507560158361457c565b91506150808261503f565b602082019050919050565b600060208201905081810360008301526150a481615068565b9050919050565b60006150b682614746565b91506150c183614746565b92508282039050818111156150d9576150d8614ef9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006040820190506151236000830185614a2c565b6151306020830184614a2c565b9392505050565b7f4c6f636b20697320657870697265640000000000000000000000000000000000600082015250565b600061516d600f8361457c565b915061517882615137565b602082019050919050565b6000602082019050818103600083015261519c81615160565b9050919050565b60006151ae8261480a565b91506151b98361480a565b9250828201905060ff8111156151d2576151d1614ef9565b5b92915050565b7f4e756d207765656b73206d757374206265206c657373207468616e206d61782060008201527f7765656b73000000000000000000000000000000000000000000000000000000602082015250565b600061523460258361457c565b915061523f826151d8565b604082019050919050565b6000602082019050818103600083015261526381615227565b9050919050565b600061527582614746565b915061528083614746565b925082820261528e81614746565b915082820484148315176152a5576152a4614ef9565b5b5092915050565b60006040820190506152c16000830185614a2c565b6152ce6020830184614955565b9392505050565b600062ffffff82169050919050565b60006152ef826152d5565b91506152fa836152d5565b9250828202615308816152d5565b915080821461531a57615319614ef9565b5b5092915050565b7f4549503731323a20556e696e697469616c697a65640000000000000000000000600082015250565b600061535760158361457c565b915061536282615321565b602082019050919050565b600060208201905081810360008301526153868161534a565b9050919050565b7f496e76616c696420746f6b656e00000000000000000000000000000000000000600082015250565b60006153c3600d8361457c565b91506153ce8261538d565b602082019050919050565b600060208201905081810360008301526153f2816153b6565b9050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b600061543c615437615432846153f9565b615417565b615403565b9050919050565b61544c81615421565b82525050565b60006020820190506154676000830184615443565b92915050565b600060808201905061548260008301876146be565b61548f6020830186614aef565b61549c6040830185614a2c565b6154a96060830184614a2c565b95945050505050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006154e8601d8361457c565b91506154f3826154b2565b602082019050919050565b60006020820190508181036000830152615517816154db565b9050919050565b7f4e756d207765656b73206d7573742062652067726561746572207468616e2030600082015250565b600061555460208361457c565b915061555f8261551e565b602082019050919050565b6000602082019050818103600083015261558381615547565b9050919050565b7f4d6178696d756d20706f736974696f6e73207265616368656400000000000000600082015250565b60006155c060198361457c565b91506155cb8261558a565b602082019050919050565b600060208201905081810360008301526155ef816155b3565b9050919050565b600060608201905061560b6000830186614a2c565b6156186020830185614a2c565b6156256040830184614955565b949350505050565b60006040820190506156426000830185614a2c565b61564f6020830184614547565b9392505050565b7f4c6f636b206e6f7420666f756e64000000000000000000000000000000000000600082015250565b600061568c600e8361457c565b915061569782615656565b602082019050919050565b600060208201905081810360008301526156bb8161567f565b9050919050565b60006040820190506156d76000830185614aef565b6156e46020830184614a2c565b9392505050565b60006040820190506157006000830185614a2c565b61570d6020830184614cc6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061574e82614746565b915061575983614746565b92508261576957615768615714565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806157bb57607f821691505b6020821081036157ce576157cd615774565b5b50919050565b60006060820190506157e96000830186614aef565b6157f66020830185614aef565b6158036040830184614a2c565b949350505050565b600079ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b600061583c8261580b565b91506158478361580b565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff81111561587957615878614ef9565b5b92915050565b6000819050919050565b60006158a461589f61589a8461587f565b615417565b61480a565b9050919050565b6158b481615889565b82525050565b60006040820190506158cf60008301856158ab565b6158dc6020830184614a2c565b9392505050565b60006158ee8261580b565b91506158f98361580b565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff81111561592b5761592a614ef9565b5b92915050565b60006040820190506159466000830185614aef565b61595360208301846146be565b9392505050565b6000819050919050565b600061597f61597a6159758461595a565b615417565b61480a565b9050919050565b61598f81615964565b82525050565b60006040820190506159aa6000830185615986565b6159b76020830184614a2c565b9392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302615a207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826159e3565b615a2a86836159e3565b95508019841693508086168417925050509392505050565b6000615a5d615a58615a5384614746565b615417565b614746565b9050919050565b6000819050919050565b615a7783615a42565b615a8b615a8382615a64565b8484546159f0565b825550505050565b600090565b615aa0615a93565b615aab818484615a6e565b505050565b5b81811015615acf57615ac4600082615a98565b600181019050615ab1565b5050565b601f821115615b1457615ae5816159be565b615aee846159d3565b81016020851015615afd578190505b615b11615b09856159d3565b830182615ab0565b50505b505050565b600082821c905092915050565b6000615b3760001984600802615b19565b1980831691505092915050565b6000615b508383615b26565b9150826002028217905092915050565b615b6982614571565b67ffffffffffffffff811115615b8257615b81614eca565b5b615b8c82546157a3565b615b97828285615ad3565b600060209050601f831160018114615bca5760008415615bb8578287015190505b615bc28582615b44565b865550615c2a565b601f198416615bd8866159be565b60005b82811015615c0057848901518255600182019150602085019450602081019050615bdb565b86831015615c1d5784890151615c19601f891682615b26565b8355505b6001600288020188555050505b505050505050565b6000608082019050615c4760008301876146be565b615c546020830186614955565b615c6160408301856146be565b615c6e60608301846146be565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060a082019050615cbb60008301886146be565b615cc860208301876146be565b615cd560408301866146be565b615ce26060830185614a2c565b615cef6080830184614aef565b969550505050505056fea2646970667358221220d14e30b3bb2841f6334d7e64419042a100a7fd7161f35ec82f695eb05ecf9f1c64736f6c634300081e0033