0 txs
5 calls
constructor
constructor(address _proofSigner, address _LPTokenAddress, address _BioFiTokenAddress)
functions
BioFiTokenAddress
viewfunction BioFiTokenAddress() view returns (address)
emergencyWithdrawalActive
viewfunction emergencyWithdrawalActive() view returns (bool)
getStakerCount
viewfunction getStakerCount() view returns (uint256 count)
getTierCount
viewfunction getTierCount() view returns (uint256 count)
getTiers
viewfunction getTiers() view returns (tuple[] stakeTiers)
isOwner
viewfunction isOwner() view returns (bool)
LPOracleAddress
viewfunction LPOracleAddress() view returns (address)
LPTokenAddress
viewfunction LPTokenAddress() view returns (address)
owner
viewfunction owner() view returns (address)
readPrincipalInterest
viewfunction readPrincipalInterest(address staker, uint256 activityCount) view returns (uint256 principal, uint256 interest)
readStake
viewfunction readStake(address staker, uint256 _stakeId) view returns (tuple stake)
readStakes
viewfunction readStakes(address staker, uint256 activityCount) view returns (tuple[] stakes, uint256[] interest)
stakerIds
viewfunction stakerIds(address) view returns (bool exists, uint256 id)
stakers
viewfunction stakers(uint256) view returns (address)
tiers
viewfunction tiers(uint256) view returns (bool isActive, string name, uint256 requiredActivities, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 stakeDuration)
totalInvestment
viewfunction totalInvestment(uint256) view returns (uint256)
verifyMessage
purefunction verifyMessage(string message, bytes signature) pure returns (address signer)
closeAll
nonpayablefunction closeAll(uint256 points, uint256 expiresAt, bytes activityProof)
closeStake
nonpayablefunction closeStake(uint256 points, uint256 expiresAt, uint256 stakeId, bytes activityProof)
createStake
nonpayablefunction createStake(uint256 tierId, uint256 LPTokenAmount) returns (uint256 completionTimestamp)
createStakeTier
nonpayablefunction createStakeTier(string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 stakeDuration) returns (uint256 index)
disableEmergencyTokenWithdrawals
nonpayablefunction disableEmergencyTokenWithdrawals()
importStakes
nonpayablefunction importStakes(address[] _stakers, uint256[] _tierIds, uint256[] _LPTokenAmounts, uint256[] _customTimestamps, uint256[] _customStartTimestamps) returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
setActive
nonpayablefunction setActive(uint256 tierIndex, bool newState)
setLPOracle
nonpayablefunction setLPOracle(address _LPOracle)
setProofSigner
nonpayablefunction setProofSigner(address _proofSigner)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawTokens
nonpayablefunction withdrawTokens(address token, address to, uint256 amount)
events
CloseStake
event CloseStake(address staker, uint256 principal, uint256 interest)
CreateStake
event CreateStake(address staker, uint256 stakeAmount, uint256 tierId, uint256 completionDate)
CreateStakeTier
event CreateStakeTier(uint256 tierId, string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 stakeDuration)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetActive
event SetActive(uint256 tierId, bool isActive)
SetLPOracle
event SetLPOracle(address LPOracle)
SetProofSigner
event SetProofSigner(address proofSigner)
errors
No errors.
creation bytecode
0x608060405234801561000f575f80fd5b5060405161630d38038061630d83398181016040528101906100319190610299565b5f61004061023460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361014a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014190610343565b60405180910390fd5b6001600b8190555082600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f6101000a81548160ff0219169083151502179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610361565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102688261023f565b9050919050565b6102788161025e565b8114610282575f80fd5b50565b5f815190506102938161026f565b92915050565b5f805f606084860312156102b0576102af61023b565b5b5f6102bd86828701610285565b93505060206102ce86828701610285565b92505060406102df86828701610285565b9150509250925092565b5f82825260208201905092915050565b7f496e76616c69642070726f6f66207369676e65720000000000000000000000005f82015250565b5f61032d6014836102e9565b9150610338826102f9565b602082019050919050565b5f6020820190508181035f83015261035a81610321565b9050919050565b615f9f8061036e5f395ff3fe608060405234801561000f575f80fd5b50600436106101cd575f3560e01c806391c6c0fe11610102578063d7fa023d116100a0578063f2fde38b1161006f578063f2fde38b14610524578063f962a22a14610540578063fd5e6dd114610570578063ff6ed9bb146105a0576101cd565b8063d7fa023d1461049c578063de170570146104cc578063e60a955d146104ea578063ec7f982814610506576101cd565b8063a23789bd116100dc578063a23789bd146103ff578063a2c0074a1461041d578063c3828bf01461044d578063c8ae0d7d1461046b576101cd565b806391c6c0fe146103a857806392b6a078146103c457806394d856e5146103ce576101cd565b80635e35359e1161016f578063715018a611610149578063715018a61461034657806383b49138146103505780638da5cb5b1461036c5780638f32d59b1461038a576101cd565b80635e35359e146102f057806364bf4b121461030c57806367184e2814610328576101cd565b806317d7f795116101ab57806317d7f7951461025657806332a6437014610274578063352379e9146102a457806349fbf4ea146102d4576101cd565b8063039af9eb146101d15780630ebe0e18146102075780631319649d14610238575b5f80fd5b6101eb60048036038101906101e69190613c65565b6105d0565b6040516101fe9796959493929190613d29565b60405180910390f35b610221600480360381019061021c9190613df7565b6106af565b60405161022f929190613e35565b60405180910390f35b6102406107f2565b60405161024d9190613e5c565b60405180910390f35b61025e6107fe565b60405161026b9190613e84565b60405180910390f35b61028e60048036038101906102899190613c65565b610823565b60405161029b9190613e5c565b60405180910390f35b6102be60048036038101906102b9919061409d565b610838565b6040516102cb91906141a0565b60405180910390f35b6102ee60048036038101906102e99190614269565b610a57565b005b61030a600480360381019061030591906142e9565b610d80565b005b61032660048036038101906103219190614339565b610f4b565b005b61033061131c565b60405161033d9190613e5c565b60405180910390f35b61034e611328565b005b61036a600480360381019061036591906143a5565b611429565b005b610374611579565b6040516103819190613e84565b60405180910390f35b6103926115a0565b60405161039f91906141a0565b60405180910390f35b6103c260048036038101906103bd91906143a5565b6115fc565b005b6103cc61174c565b005b6103e860048036038101906103e39190613df7565b6117c5565b6040516103f69291906145df565b60405180910390f35b610407611a10565b6040516104149190613e84565b60405180910390f35b6104376004803603810190610432919061466d565b611a35565b6040516104449190613e5c565b60405180910390f35b610455611cc0565b6040516104629190613e84565b60405180910390f35b610485600480360381019061048091906143a5565b611ce5565b604051610493929190614717565b60405180910390f35b6104b660048036038101906104b1919061473e565b611d11565b6040516104c39190613e5c565b60405180910390f35b6104d4611fb1565b6040516104e19190614918565b60405180910390f35b61050460048036038101906104ff9190614962565b612157565b005b61050e612260565b60405161051b91906141a0565b60405180910390f35b61053e600480360381019061053991906143a5565b612272565b005b61055a60048036038101906105559190614a3e565b6122c5565b6040516105679190613e84565b60405180910390f35b61058a60048036038101906105859190613c65565b6122ef565b6040516105979190613e84565b60405180910390f35b6105ba60048036038101906105b59190613df7565b61232a565b6040516105c79190614b54565b60405180910390f35b600481815481106105df575f80fd5b905f5260205f2090600702015f91509050805f015f9054906101000a900460ff169080600101805461061090614b9b565b80601f016020809104026020016040519081016040528092919081815260200182805461063c90614b9b565b80156106875780601f1061065e57610100808354040283529160200191610687565b820191905f5260205f20905b81548152906001019060200180831161066a57829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154905087565b5f805f5b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548110156107ea575f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090508060600151846107c29190614bf8565b93506107cf8683876123f1565b836107da9190614bf8565b92505080806001019150506106b3565b509250929050565b5f600980549050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052805f5260405f205f915090505481565b5f6108416115a0565b610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790614c75565b60405180910390fd5b5f5b8651811015610a49575f600a5f8984815181106108a2576108a1614c93565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff166109a957600988838151811061090e5761090d614c93565b5b6020026020010151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016009805490506109859190614cc0565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b610a3a8883815181106109bf576109be614c93565b5b60200260200101518884815181106109da576109d9614c93565b5b60200260200101518885815181106109f5576109f4614c93565b5b6020026020010151888681518110610a1057610a0f614c93565b5b60200260200101516001898881518110610a2d57610a2c614c93565b5b60200260200101516126fa565b50508080600101915050610882565b506001905095945050505050565b6001600b5f828254610a699190614bf8565b925050819055505f600b5490505f610a82868685612d7b565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8881526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090508060a00151421015610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690614d3d565b60405180910390fd5b5f80610bdc338a88612e83565b915091505f821115610ca3578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610c23929190614d5b565b6020604051808303815f875af1158015610c3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c639190614d96565b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990614e0b565b60405180910390fd5b5b5f811115610d66578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ce6929190614d5b565b6020604051808303815f875af1158015610d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d269190614d96565b610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90614e0b565b60405180910390fd5b5b505050505050600b548114610d79575f80fd5b5050505050565b610d886115a0565b610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90614c75565b60405180910390fd5b60085f9054906101000a900460ff16610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90614e73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90614edb565b60405180910390fd5b5f8111610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90614f43565b60405180910390fd5b5f8390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610f04929190614d5b565b6020604051808303815f875af1158015610f20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f449190614d96565b5050505050565b6001600b5f828254610f5d9190614bf8565b925050819055505f600b5490505f610f76858585612d7b565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f805f805b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481101561113a575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050805f015180156110da5750428160a0015111155b80156110e957505f8160e00151145b1561112c575f806110fb33858c612e83565b91509150818661110b9190614bf8565b955080856111199190614bf8565b9450868061112690614f61565b97505050505b508080600101915050610fc7565b505f831161117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614ff2565b60405180910390fd5b5f821115611240578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016111c0929190614d5b565b6020604051808303815f875af11580156111dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112009190614d96565b61123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690614e0b565b60405180910390fd5b5b5f811115611303578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611283929190614d5b565b6020604051808303815f875af115801561129f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c39190614d96565b611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990614e0b565b60405180910390fd5b5b505050505050600b548114611316575f80fd5b50505050565b5f600480549050905090565b6113306115a0565b61136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690614c75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114316115a0565b611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790614c75565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f69061505a565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f387745e2e36a22bf96f545b5203906c8af975d318aa04cef413f699e7811aedc8160405161156e9190613e84565b60405180910390a150565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115e0613034565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6116046115a0565b611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90614c75565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c99061505a565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f944bcc95fa327acc87ec57ceaf15c73ecc170d87f40de1f822c14570285f78e9816040516117419190613e84565b60405180910390a150565b6117546115a0565b611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90614c75565b60405180910390fd5b60085f9054906101000a900460ff166117aa575f80fd5b5f60085f6101000a81548160ff021916908315150217905550565b6060805f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8167ffffffffffffffff81111561182457611823613ea1565b5b60405190808252806020026020018201604052801561185d57816020015b61184a613ba9565b8152602001906001900390816118425790505b5090505f8267ffffffffffffffff81111561187b5761187a613ea1565b5b6040519080825280602002602001820160405280156118a95781602001602082028036833780820191505090505b5090505f5b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548110156119ff5760065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250508382815181106119bd576119bc614c93565b5b60200260200101819052506119d38882896123f1565b8282815181106119e6576119e5614c93565b5b60200260200101818152505080806001019150506118ae565b508181945094505050509250929050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a3e6115a0565b611a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7490614c75565b60405180910390fd5b5f8411611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab6906150c2565b60405180910390fd5b83861015611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af99061512a565b60405180910390fd5b83851015611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c9061512a565b60405180910390fd5b5f6040518060e001604052806001151581526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050815260200185815260200188815260200187815260200186815260200184815250905060048054905091505f60055f8481526020019081526020015f2081905550600481908060018154018082558091505060019003905f5260205f2090600702015f909190919091505f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001019081611c3a91906152e5565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015550507f431a018ee4fc0b7b5a7d5e3bbf7c4da4045dfd7e52b33502c8c52e67b3044455828a8a8a8a8a8a8a604051611cac9897969594939291906153e0565b60405180910390a150979650505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f91509050805f015f9054906101000a900460ff16908060010154905082565b5f8060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611d719190613e84565b602060405180830381865afa158015611d8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db0919061546a565b905083811015611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906154df565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611e32939291906154fd565b6020604051808303815f875af1158015611e4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e729190614d96565b611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890614e0b565b60405180910390fd5b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff16611f9b57600933908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050611f779190614cc0565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b611fa633878761303b565b935050505092915050565b60605f60048054905090505f8167ffffffffffffffff811115611fd757611fd6613ea1565b5b60405190808252806020026020018201604052801561201057816020015b611ffd613be8565b815260200190600190039081611ff55790505b5090505f5b8281101561214e576004818154811061203157612030614c93565b5b905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201805461207190614b9b565b80601f016020809104026020016040519081016040528092919081815260200182805461209d90614b9b565b80156120e85780601f106120bf576101008083540402835291602001916120e8565b820191905f5260205f20905b8154815290600101906020018083116120cb57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505082828151811061213657612135614c93565b5b60200260200101819052508080600101915050612015565b50809250505090565b61215f6115a0565b61219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614c75565b60405180910390fd5b60048054905082106121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc9061557c565b60405180910390fd5b5f600483815481106121fa576121f9614c93565b5b905f5260205f209060070201905081815f015f6101000a81548160ff0219169083151502179055507fb43464c32a3cc15ea31c3e13db7db00e57c742ba81008d107550cc22b2f53d30838360405161225392919061559a565b60405180910390a1505050565b60085f9054906101000a900460ff1681565b61227a6115a0565b6122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b090614c75565b60405180910390fd5b6122c281613053565b50565b5f805f806122d28561317c565b9250925092506122e4868285856131e1565b935050505092915050565b600981815481106122fe575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612332613ba9565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050905092915050565b5f8060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090505f60048260200151815481106124c5576124c4614c93565b5b905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201805461250590614b9b565b80601f016020809104026020016040519081016040528092919081815260200182805461253190614b9b565b801561257c5780601f106125535761010080835404028352916020019161257c565b820191905f5260205f20905b81548152906001019060200180831161255f57829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050815f01516125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f39061560b565b60405180910390fd5b5f8260a00151421161260e5742612614565b8260a001515b90505f6301e1338090505f83604001518710612636578360800151905061263e565b836060015190505b8360a00151811015612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90615673565b60405180910390fd5b5f828560a001518660a001518461269c9190614cc0565b88606001518960800151886126b19190614cc0565b6126bb9190615691565b6126c59190615691565b6126cf91906156ff565b6126d991906156ff565b90508560c00151816126eb9190614cc0565b96505050505050509392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361278a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278190615779565b60405180910390fd5b60048054905086106127d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c8906157e1565b60405180910390fd5b5f600487815481106127e6576127e5614c93565b5b905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201805461282690614b9b565b80601f016020809104026020016040519081016040528092919081815260200182805461285290614b9b565b801561289d5780601f106128745761010080835404028352916020019161289d565b820191905f5260205f20905b81548152906001019060200180831161288057829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050805f015161291d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291490615849565b60405180910390fd5b5f60075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050805f015115612a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a53906158b1565b60405180910390fd5b60075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190612aa990614f61565b91905055505f871115612b085742871180612ac15750855b612b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af790615919565b60405180910390fd5b869350612b62565b5f8360c0015190505f8111612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4990615981565b60405180910390fd5b8042612b5e9190614bf8565b9450505b5f4290508615612bb2575f8611612bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba5906159e9565b60405180910390fd5b8590505b5f612bbc8a613380565b90505f8111612c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf790615a51565b60405180910390fd5b5f6040518061010001604052806001151581526020018d81526020018c81526020018381526020018481526020018881526020015f81526020015f81525090508060065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8781526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701559050508160055f8e81526020019081526020015f2054612d109190614bf8565b60055f8e81526020019081526020015f20819055507f7cc860bef2fa56b3d46227731e60b3b6ce0af9627bfdfbeca273f9ea5dae8a188d838e8a604051612d5a9493929190615a6f565b60405180910390a1612d6a613614565b505050505050509695505050505050565b5f824210612dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db590615afc565b60405180910390fd5b5f90505f841480612dce57505f83145b80612dd957505f8251145b612e7c575f612de78561372c565b90505f612df3336137f6565b8286604051602001612e0793929190615bbe565b6040516020818303038152906040529050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e5a82866122c5565b73ffffffffffffffffffffffffffffffffffffffff1603612e79578592505b50505b9392505050565b5f805f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f209050805f015f9054906101000a900460ff16612f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1a90615c52565b60405180910390fd5b5f816007015414612f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6090615cba565b60405180910390fd5b5f612f758787876123f1565b905042826007018190555080826006015f828254612f939190614bf8565b92505081905550816003015460055f846001015481526020019081526020015f2054612fbf9190614cc0565b60055f846001015481526020019081526020015f20819055507f7712eab9bace2a6db4db50e391a24280d3a83952dfa3067d0f5894a1acead3728783600201548360405161300f93929190615cd8565b60405180910390a161301f613614565b50816002015481935093505050935093915050565b5f33905090565b5f61304a8484845f805f6126fa565b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036130c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b890615d7d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f60418451146131c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ba90615de5565b60405180910390fd5b602084015192506040840151915060608401515f1a90509193909250565b5f806040518060400160405280602081526020017f19457468657265756d205369676e6564204d6573736167653a0a30303030303081525090505f8087519050603983019150620f423f811115613236575f80fd5b5f80620186a090505b5f81146132d5575f818461325391906156ff565b90505f8103613279575f830361327857600a8261327091906156ff565b91505061323f565b5b828061328490614f61565b93505081816132939190615691565b8461329e9190614cc0565b9350600a826132ad91906156ff565b91506030816132bc9190614bf8565b905084806132c990614f61565b9550508085535061323f565b5f82036132e557601b91506132f5565b601a826132f29190614bf8565b91505b8185525f858b60405160200161330c929190615e03565b6040516020818303038152906040528051906020012090506001818b8b8b6040515f81526020016040526040516133469493929190615e59565b6020604051602081039080840390855afa158015613366573d5f803e3d5ffd5b505050602060405103519650505050505050949350505050565b5f805f73ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613550575f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016134529190613e84565b602060405180830381865afa15801561346d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613491919061546a565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613522919061546a565b905080856002846135339190615691565b61353d9190615691565b61354791906156ff565b9250505061360b565b5f8060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637eeda7036040518163ffffffff1660e01b81526004016040805180830381865afa1580156135bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135df9190615e9c565b9150915080856002846135f29190615691565b6135fc9190615691565b61360691906156ff565b925050505b80915050919050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b7365176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136a39190614d96565b156137255760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2e620456040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561370e575f80fd5b505af1158015613720573d5f803e3d5ffd5b505050505b6001905090565b60605f600161373a84613823565b0190505f8167ffffffffffffffff81111561375857613757613ea1565b5b6040519080825280601f01601f19166020018201604052801561378a5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156137eb578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816137e0576137df6156d2565b5b0494505f8503613797575b819350505050919050565b606061381c8273ffffffffffffffffffffffffffffffffffffffff16601460ff16613974565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061387f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613875576138746156d2565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106138bc576d04ee2d6d415b85acef810000000083816138b2576138b16156d2565b5b0492506020810190505b662386f26fc1000083106138eb57662386f26fc1000083816138e1576138e06156d2565b5b0492506010810190505b6305f5e1008310613914576305f5e100838161390a576139096156d2565b5b0492506008810190505b612710831061393957612710838161392f5761392e6156d2565b5b0492506004810190505b6064831061395c5760648381613952576139516156d2565b5b0492506002810190505b600a831061396b576001810190505b80915050919050565b60605f60028360026139869190615691565b6139909190614bf8565b67ffffffffffffffff8111156139a9576139a8613ea1565b5b6040519080825280601f01601f1916602001820160405280156139db5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110613a1257613a11614c93565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613a7557613a74614c93565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001846002613ab39190615691565b613abd9190614bf8565b90505b6001811115613b5c577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110613aff57613afe614c93565b5b1a60f81b828281518110613b1657613b15614c93565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c945080613b5590615eda565b9050613ac0565b505f8414613b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9690615f4b565b60405180910390fd5b8091505092915050565b6040518061010001604052805f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060e001604052805f15158152602001606081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b613c4481613c32565b8114613c4e575f80fd5b50565b5f81359050613c5f81613c3b565b92915050565b5f60208284031215613c7a57613c79613c2a565b5b5f613c8784828501613c51565b91505092915050565b5f8115159050919050565b613ca481613c90565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613cec82613caa565b613cf68185613cb4565b9350613d06818560208601613cc4565b613d0f81613cd2565b840191505092915050565b613d2381613c32565b82525050565b5f60e082019050613d3c5f83018a613c9b565b8181036020830152613d4e8189613ce2565b9050613d5d6040830188613d1a565b613d6a6060830187613d1a565b613d776080830186613d1a565b613d8460a0830185613d1a565b613d9160c0830184613d1a565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613dc682613d9d565b9050919050565b613dd681613dbc565b8114613de0575f80fd5b50565b5f81359050613df181613dcd565b92915050565b5f8060408385031215613e0d57613e0c613c2a565b5b5f613e1a85828601613de3565b9250506020613e2b85828601613c51565b9150509250929050565b5f604082019050613e485f830185613d1a565b613e556020830184613d1a565b9392505050565b5f602082019050613e6f5f830184613d1a565b92915050565b613e7e81613dbc565b82525050565b5f602082019050613e975f830184613e75565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ed782613cd2565b810181811067ffffffffffffffff82111715613ef657613ef5613ea1565b5b80604052505050565b5f613f08613c21565b9050613f148282613ece565b919050565b5f67ffffffffffffffff821115613f3357613f32613ea1565b5b602082029050602081019050919050565b5f80fd5b5f613f5a613f5584613f19565b613eff565b90508083825260208201905060208402830185811115613f7d57613f7c613f44565b5b835b81811015613fa65780613f928882613de3565b845260208401935050602081019050613f7f565b5050509392505050565b5f82601f830112613fc457613fc3613e9d565b5b8135613fd4848260208601613f48565b91505092915050565b5f67ffffffffffffffff821115613ff757613ff6613ea1565b5b602082029050602081019050919050565b5f61401a61401584613fdd565b613eff565b9050808382526020820190506020840283018581111561403d5761403c613f44565b5b835b8181101561406657806140528882613c51565b84526020840193505060208101905061403f565b5050509392505050565b5f82601f83011261408457614083613e9d565b5b8135614094848260208601614008565b91505092915050565b5f805f805f60a086880312156140b6576140b5613c2a565b5b5f86013567ffffffffffffffff8111156140d3576140d2613c2e565b5b6140df88828901613fb0565b955050602086013567ffffffffffffffff811115614100576140ff613c2e565b5b61410c88828901614070565b945050604086013567ffffffffffffffff81111561412d5761412c613c2e565b5b61413988828901614070565b935050606086013567ffffffffffffffff81111561415a57614159613c2e565b5b61416688828901614070565b925050608086013567ffffffffffffffff81111561418757614186613c2e565b5b61419388828901614070565b9150509295509295909350565b5f6020820190506141b35f830184613c9b565b92915050565b5f80fd5b5f67ffffffffffffffff8211156141d7576141d6613ea1565b5b6141e082613cd2565b9050602081019050919050565b828183375f83830152505050565b5f61420d614208846141bd565b613eff565b905082815260208101848484011115614229576142286141b9565b5b6142348482856141ed565b509392505050565b5f82601f8301126142505761424f613e9d565b5b81356142608482602086016141fb565b91505092915050565b5f805f806080858703121561428157614280613c2a565b5b5f61428e87828801613c51565b945050602061429f87828801613c51565b93505060406142b087828801613c51565b925050606085013567ffffffffffffffff8111156142d1576142d0613c2e565b5b6142dd8782880161423c565b91505092959194509250565b5f805f60608486031215614300576142ff613c2a565b5b5f61430d86828701613de3565b935050602061431e86828701613de3565b925050604061432f86828701613c51565b9150509250925092565b5f805f606084860312156143505761434f613c2a565b5b5f61435d86828701613c51565b935050602061436e86828701613c51565b925050604084013567ffffffffffffffff81111561438f5761438e613c2e565b5b61439b8682870161423c565b9150509250925092565b5f602082840312156143ba576143b9613c2a565b5b5f6143c784828501613de3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61440281613c90565b82525050565b61441181613c32565b82525050565b61010082015f82015161442c5f8501826143f9565b50602082015161443f6020850182614408565b5060408201516144526040850182614408565b5060608201516144656060850182614408565b5060808201516144786080850182614408565b5060a082015161448b60a0850182614408565b5060c082015161449e60c0850182614408565b5060e08201516144b160e0850182614408565b50505050565b5f6144c28383614417565b6101008301905092915050565b5f602082019050919050565b5f6144e5826143d0565b6144ef81856143da565b93506144fa836143ea565b805f5b8381101561452a57815161451188826144b7565b975061451c836144cf565b9250506001810190506144fd565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61456b8383614408565b60208301905092915050565b5f602082019050919050565b5f61458d82614537565b6145978185614541565b93506145a283614551565b805f5b838110156145d25781516145b98882614560565b97506145c483614577565b9250506001810190506145a5565b5085935050505092915050565b5f6040820190508181035f8301526145f781856144db565b9050818103602083015261460b8184614583565b90509392505050565b5f80fd5b5f8083601f84011261462d5761462c613e9d565b5b8235905067ffffffffffffffff81111561464a57614649614614565b5b60208301915083600182028301111561466657614665613f44565b5b9250929050565b5f805f805f805f60c0888a03121561468857614687613c2a565b5b5f88013567ffffffffffffffff8111156146a5576146a4613c2e565b5b6146b18a828b01614618565b975097505060206146c48a828b01613c51565b95505060406146d58a828b01613c51565b94505060606146e68a828b01613c51565b93505060806146f78a828b01613c51565b92505060a06147088a828b01613c51565b91505092959891949750929550565b5f60408201905061472a5f830185613c9b565b6147376020830184613d1a565b9392505050565b5f806040838503121561475457614753613c2a565b5b5f61476185828601613c51565b925050602061477285828601613c51565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6147bf82613caa565b6147c981856147a5565b93506147d9818560208601613cc4565b6147e281613cd2565b840191505092915050565b5f60e083015f8301516148025f8601826143f9565b506020830151848203602086015261481a82826147b5565b915050604083015161482f6040860182614408565b5060608301516148426060860182614408565b5060808301516148556080860182614408565b5060a083015161486860a0860182614408565b5060c083015161487b60c0860182614408565b508091505092915050565b5f61489183836147ed565b905092915050565b5f602082019050919050565b5f6148af8261477c565b6148b98185614786565b9350836020820285016148cb85614796565b805f5b8581101561490657848403895281516148e78582614886565b94506148f283614899565b925060208a019950506001810190506148ce565b50829750879550505050505092915050565b5f6020820190508181035f83015261493081846148a5565b905092915050565b61494181613c90565b811461494b575f80fd5b50565b5f8135905061495c81614938565b92915050565b5f806040838503121561497857614977613c2a565b5b5f61498585828601613c51565b92505060206149968582860161494e565b9150509250929050565b5f67ffffffffffffffff8211156149ba576149b9613ea1565b5b6149c382613cd2565b9050602081019050919050565b5f6149e26149dd846149a0565b613eff565b9050828152602081018484840111156149fe576149fd6141b9565b5b614a098482856141ed565b509392505050565b5f82601f830112614a2557614a24613e9d565b5b8135614a358482602086016149d0565b91505092915050565b5f8060408385031215614a5457614a53613c2a565b5b5f83013567ffffffffffffffff811115614a7157614a70613c2e565b5b614a7d85828601614a11565b925050602083013567ffffffffffffffff811115614a9e57614a9d613c2e565b5b614aaa8582860161423c565b9150509250929050565b61010082015f820151614ac95f8501826143f9565b506020820151614adc6020850182614408565b506040820151614aef6040850182614408565b506060820151614b026060850182614408565b506080820151614b156080850182614408565b5060a0820151614b2860a0850182614408565b5060c0820151614b3b60c0850182614408565b5060e0820151614b4e60e0850182614408565b50505050565b5f61010082019050614b685f830184614ab4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614bb257607f821691505b602082108103614bc557614bc4614b6e565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c0282613c32565b9150614c0d83613c32565b9250828201905080821115614c2557614c24614bcb565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614c5f602083613cb4565b9150614c6a82614c2b565b602082019050919050565b5f6020820190508181035f830152614c8c81614c53565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614cca82613c32565b9150614cd583613c32565b9250828203905081811115614ced57614cec614bcb565b5b92915050565b7f436f6e7472616374206973206e6f74206f7665722079657400000000000000005f82015250565b5f614d27601883613cb4565b9150614d3282614cf3565b602082019050919050565b5f6020820190508181035f830152614d5481614d1b565b9050919050565b5f604082019050614d6e5f830185613e75565b614d7b6020830184613d1a565b9392505050565b5f81519050614d9081614938565b92915050565b5f60208284031215614dab57614daa613c2a565b5b5f614db884828501614d82565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f614df5601583613cb4565b9150614e0082614dc1565b602082019050919050565b5f6020820190508181035f830152614e2281614de9565b9050919050565b7f456d657267656e6379207769746864726177616c732064697361626c656400005f82015250565b5f614e5d601e83613cb4565b9150614e6882614e29565b602082019050919050565b5f6020820190508181035f830152614e8a81614e51565b9050919050565b7f4275726e2061646472657373206973206e6f7420616c6c6f77656400000000005f82015250565b5f614ec5601b83613cb4565b9150614ed082614e91565b602082019050919050565b5f6020820190508181035f830152614ef281614eb9565b9050919050565b7f416d6f756e742063616e6e6f74206265203000000000000000000000000000005f82015250565b5f614f2d601283613cb4565b9150614f3882614ef9565b602082019050919050565b5f6020820190508181035f830152614f5a81614f21565b9050919050565b5f614f6b82613c32565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f9d57614f9c614bcb565b5b600182019050919050565b7f4e6f20636f6e74726163747320726561647920746f20636c6f7365206e6f77005f82015250565b5f614fdc601f83613cb4565b9150614fe782614fa8565b602082019050919050565b5f6020820190508181035f83015261500981614fd0565b9050919050565b7f4e6f206368616e676500000000000000000000000000000000000000000000005f82015250565b5f615044600983613cb4565b915061504f82615010565b602082019050919050565b5f6020820190508181035f83015261507181615038565b9050919050565b7f61707244656e6f6d696e61746f72206973206e6f74203e2030000000000000005f82015250565b5f6150ac601983613cb4565b91506150b782615078565b602082019050919050565b5f6020820190508181035f8301526150d9816150a0565b9050919050565b7f6e756d657261746f72203c2064656e6f6d696e61746f720000000000000000005f82015250565b5f615114601783613cb4565b915061511f826150e0565b602082019050919050565b5f6020820190508181035f83015261514181615108565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026151a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615169565b6151ae8683615169565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6151e96151e46151df84613c32565b6151c6565b613c32565b9050919050565b5f819050919050565b615202836151cf565b61521661520e826151f0565b848454615175565b825550505050565b5f90565b61522a61521e565b6152358184846151f9565b505050565b5b818110156152585761524d5f82615222565b60018101905061523b565b5050565b601f82111561529d5761526e81615148565b6152778461515a565b81016020851015615286578190505b61529a6152928561515a565b83018261523a565b50505b505050565b5f82821c905092915050565b5f6152bd5f19846008026152a2565b1980831691505092915050565b5f6152d583836152ae565b9150826002028217905092915050565b6152ee82613caa565b67ffffffffffffffff81111561530757615306613ea1565b5b6153118254614b9b565b61531c82828561525c565b5f60209050601f83116001811461534d575f841561533b578287015190505b61534585826152ca565b8655506153ac565b601f19841661535b86615148565b5f5b828110156153825784890151825560018201915060208501945060208101905061535d565b8683101561539f578489015161539b601f8916826152ae565b8355505b6001600288020188555050505b505050505050565b5f6153bf8385613cb4565b93506153cc8385846141ed565b6153d583613cd2565b840190509392505050565b5f60e0820190506153f35f83018b613d1a565b818103602083015261540681898b6153b4565b90506154156040830188613d1a565b6154226060830187613d1a565b61542f6080830186613d1a565b61543c60a0830185613d1a565b61544960c0830184613d1a565b9998505050505050505050565b5f8151905061546481613c3b565b92915050565b5f6020828403121561547f5761547e613c2a565b5b5f61548c84828501615456565b91505092915050565b7f496e73756666696369656e7420546f6b656e2042616c616e63650000000000005f82015250565b5f6154c9601a83613cb4565b91506154d482615495565b602082019050919050565b5f6020820190508181035f8301526154f6816154bd565b9050919050565b5f6060820190506155105f830186613e75565b61551d6020830185613e75565b61552a6040830184613d1a565b949350505050565b7f74696572496e646578206f7574206f662072616e6765000000000000000000005f82015250565b5f615566601683613cb4565b915061557182615532565b602082019050919050565b5f6020820190508181035f8301526155938161555a565b9050919050565b5f6040820190506155ad5f830185613d1a565b6155ba6020830184613c9b565b9392505050565b7f4e6f207374616b657220636f6e747261637420666f756e6400000000000000005f82015250565b5f6155f5601883613cb4565b9150615600826155c1565b602082019050919050565b5f6020820190508181035f830152615622816155e9565b9050919050565b7f496e636f727265637420415052000000000000000000000000000000000000005f82015250565b5f61565d600d83613cb4565b915061566882615629565b602082019050919050565b5f6020820190508181035f83015261568a81615651565b9050919050565b5f61569b82613c32565b91506156a683613c32565b92508282026156b481613c32565b915082820484148315176156cb576156ca614bcb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61570982613c32565b915061571483613c32565b925082615724576157236156d2565b5b828204905092915050565b7f5374616b696e6720546f6b656e206973204e6f7420446566696e6564000000005f82015250565b5f615763601c83613cb4565b915061576e8261572f565b602082019050919050565b5f6020820190508181035f83015261579081615757565b9050919050565b7f496c6c6567616c207469657249640000000000000000000000000000000000005f82015250565b5f6157cb600e83613cb4565b91506157d682615797565b602082019050919050565b5f6020820190508181035f8301526157f8816157bf565b9050919050565b7f54696572206973206e6f742061637469766500000000000000000000000000005f82015250565b5f615833601283613cb4565b915061583e826157ff565b602082019050919050565b5f6020820190508181035f83015261586081615827565b9050919050565b7f43616e6e6f74206f76657277726974652061207374616b6500000000000000005f82015250565b5f61589b601883613cb4565b91506158a682615867565b602082019050919050565b5f6020820190508181035f8301526158c88161588f565b9050919050565b7f54696d657374616d70206d75737420626520696e2074686520667574757265005f82015250565b5f615903601f83613cb4565b915061590e826158cf565b602082019050919050565b5f6020820190508181035f830152615930816158f7565b9050919050565b7f4475726174696f6e2063616e6e6f7420626520300000000000000000000000005f82015250565b5f61596b601483613cb4565b915061597682615937565b602082019050919050565b5f6020820190508181035f8301526159988161595f565b9050919050565b7f53746172742074696d657374616d702063616e6e6f74206265203000000000005f82015250565b5f6159d3601b83613cb4565b91506159de8261599f565b602082019050919050565b5f6020820190508181035f830152615a00816159c7565b9050919050565b7f43616e6e6f74207374616b65207a65726f2d76616c756520616d6f756e7400005f82015250565b5f615a3b601e83613cb4565b9150615a4682615a07565b602082019050919050565b5f6020820190508181035f830152615a6881615a2f565b9050919050565b5f608082019050615a825f830187613e75565b615a8f6020830186613d1a565b615a9c6040830185613d1a565b615aa96060830184613d1a565b95945050505050565b7f41637469766974792070726f6f662065787069726564000000000000000000005f82015250565b5f615ae6601683613cb4565b9150615af182615ab2565b602082019050919050565b5f6020820190508181035f830152615b1381615ada565b9050919050565b5f81905092915050565b5f615b2e82613caa565b615b388185615b1a565b9350615b48818560208601613cc4565b80840191505092915050565b7f2c000000000000000000000000000000000000000000000000000000000000005f82015250565b5f615b88600183615b1a565b9150615b9382615b54565b600182019050919050565b5f819050919050565b615bb8615bb382613c32565b615b9e565b82525050565b5f615bc98286615b24565b9150615bd482615b7c565b9150615be08285615b24565b9150615beb82615b7c565b9150615bf78284615ba7565b602082019150819050949350505050565b7f54686973207374616b6520646f6573206e6f74206578697374000000000000005f82015250565b5f615c3c601983613cb4565b9150615c4782615c08565b602082019050919050565b5f6020820190508181035f830152615c6981615c30565b9050919050565b7f436f6e747261637420697320616c726561647920636c6f7365640000000000005f82015250565b5f615ca4601a83613cb4565b9150615caf82615c70565b602082019050919050565b5f6020820190508181035f830152615cd181615c98565b9050919050565b5f606082019050615ceb5f830186613e75565b615cf86020830185613d1a565b615d056040830184613d1a565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615d67602683613cb4565b9150615d7282615d0d565b604082019050919050565b5f6020820190508181035f830152615d9481615d5b565b9050919050565b7f696e76616c6964207369676e6174757265206c656e67746800000000000000005f82015250565b5f615dcf601883613cb4565b9150615dda82615d9b565b602082019050919050565b5f6020820190508181035f830152615dfc81615dc3565b9050919050565b5f615e0e8285615b24565b9150615e1a8284615b24565b91508190509392505050565b5f819050919050565b615e3881615e26565b82525050565b5f60ff82169050919050565b615e5381615e3e565b82525050565b5f608082019050615e6c5f830187615e2f565b615e796020830186615e4a565b615e866040830185615e2f565b615e936060830184615e2f565b95945050505050565b5f8060408385031215615eb257615eb1613c2a565b5b5f615ebf85828601615456565b9250506020615ed085828601615456565b9150509250929050565b5f615ee482613c32565b91505f8203615ef657615ef5614bcb565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f615f35602083613cb4565b9150615f4082615f01565b602082019050919050565b5f6020820190508181035f830152615f6281615f29565b905091905056fea26469706673582212206a7854c1de09354ff18ecc392a0c091ec0f210625d54ed76b767d0ca5700bae664736f6c634300081a00330000000000000000000000001e824b4fc5d96c9f16583cbd7eb3e208a6905aef00000000000000000000000058a50fc3bc271ccd5a078fab8222b2e021b9f4df00000000000000000000000011a31b833d43853f8869c9eec17f60e3b4d2a753