354 txs
361 calls
constructor
constructor(address _proofSigner)
functions
activityIDs
viewfunction activityIDs(uint256) view returns (uint256)
BioFiTokenAddress
viewfunction BioFiTokenAddress() view returns (address)
emergencyWithdrawalActive
viewfunction emergencyWithdrawalActive() view returns (bool)
getStakerCount
viewfunction getStakerCount() view returns (uint256 count)
getTemplateCount
viewfunction getTemplateCount() view returns (uint256 count)
isOwner
viewfunction isOwner() view returns (bool)
owner
viewfunction owner() view returns (address)
readPrincipalInterest
viewfunction readPrincipalInterest(address staker, uint256 activityCount) view returns (uint256 principal, uint256 interest, uint256 storedInterest)
readStake
viewfunction readStake(address staker) view returns (tuple stake)
rewardsStorage
viewfunction rewardsStorage(address) view returns (uint256)
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 minStake, uint256 maxStake, uint256 stakeDuration)
totalInvestment
viewfunction totalInvestment(uint256) view returns (uint256)
verifyMessage
purefunction verifyMessage(string message, bytes signature) pure returns (address signer)
closeStake
nonpayablefunction closeStake(bytes[] activityProofs)
createStake
nonpayablefunction createStake(uint256 tierId, uint256 BioFiTokenAmount) returns (uint256 completionTimestamp)
createStakeTier
nonpayablefunction createStakeTier(string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 minStake, uint256 maxStake, uint256 stakeDuration) returns (uint256 index)
disableEmergencyTokenWithdrawals
nonpayablefunction disableEmergencyTokenWithdrawals()
importStakes
nonpayablefunction importStakes(address[] _stakers, uint256[] _tierIds, uint256[] _BioFiTokenAmounts, uint256[] _customTimestamps, uint256[] _customStartTimestamps, uint256[] _rewardsStorageAmounts) returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
setActive
nonpayablefunction setActive(uint256 tierIndex, bool newState)
setActivityIDs
nonpayablefunction setActivityIDs(uint256[] newActivities)
setBioFiTokenAddress
nonpayablefunction setBioFiTokenAddress(address token)
setProofSigner
nonpayablefunction setProofSigner(address _proofSigner)
topUpStake
nonpayablefunction topUpStake(uint256 BioFiTokenAmount, bytes[] activityProofs) returns (uint256 completionTimestamp)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeStake
nonpayablefunction upgradeStake(uint256 newTier, bytes[] activityProofs) returns (uint256 completionTimestamp)
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)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TopUpStake
event TopUpStake(address staker, uint256 topUpAmount)
UpgradeStake
event UpgradeStake(address staker, uint256 oldTier, uint256 newTier)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b5060405162005f5538038062005f55833981810160405281019062000037919062000337565b6000620000496200024f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015090620003ca565b60405180910390fd5b6001600981905550604051806101600160405280600060ff168152602001600160ff168152602001600260ff168152602001600360ff168152602001600460ff168152602001600560ff168152602001600660ff168152602001600760ff168152602001600860ff168152602001600960ff168152602001600a60ff16815250600a90600b620001eb92919062000257565b5080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006101000a81548160ff02191690831515021790555050620003ec565b600033905090565b8280548282559060005260206000209081019282156200029b579160200282015b828111156200029a578251829060ff1690559160200191906001019062000278565b5b509050620002aa9190620002ae565b5090565b5b80821115620002c9576000816000905550600101620002af565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002ff82620002d2565b9050919050565b6200031181620002f2565b81146200031d57600080fd5b50565b600081519050620003318162000306565b92915050565b60006020828403121562000350576200034f620002cd565b5b6000620003608482850162000320565b91505092915050565b600082825260208201905092915050565b7f496e76616c69642070726f6f66207369676e6572000000000000000000000000600082015250565b6000620003b260148362000369565b9150620003bf826200037a565b602082019050919050565b60006020820190508181036000830152620003e581620003a3565b9050919050565b615b5980620003fc6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063c8ae0d7d116100a2578063ec7f982811610071578063ec7f982814610571578063f2fde38b1461058f578063f962a22a146105ab578063fd5e6dd1146105db576101cf565b8063c8ae0d7d146104d8578063d7fa023d14610509578063e60a955d14610539578063e6e2220414610555576101cf565b806392b6a078116100de57806392b6a0781461045257806394e395781461045c5780639feccc871461048c578063c1aa54d6146104a8576101cf565b80638da5cb5b146103fa5780638f32d59b1461041857806391c6c0fe14610436576101cf565b806347d5780a116101715780635349688d1161014b5780635349688d146103885780635e35359e146103a4578063715018a6146103c057806378631f35146103ca576101cf565b806347d5780a1461030a5780634f21e2df1461033a5780635016959a1461036a576101cf565b806317d7f795116101ad57806317d7f7951461025c57806328716cca1461027a57806332a64370146102aa57806341f89cfe146102da576101cf565b8063039af9eb146101d45780630ebe0e181461020c5780631319649d1461023e575b600080fd5b6101ee60048036038101906101e99190613899565b61060b565b60405161020399989796959493929190613980565b60405180910390f35b61022660048036038101906102219190613a72565b6106fe565b60405161023593929190613ab2565b60405180910390f35b610246610804565b6040516102539190613ae9565b60405180910390f35b610264610811565b6040516102719190613b13565b60405180910390f35b610294600480360381019061028f9190613899565b610837565b6040516102a19190613ae9565b60405180910390f35b6102c460048036038101906102bf9190613899565b61085b565b6040516102d19190613ae9565b60405180910390f35b6102f460048036038101906102ef9190613b2e565b610873565b6040516103019190613ae9565b60405180910390f35b610324600480360381019061031f9190613d76565b61088b565b6040516103319190613ae9565b60405180910390f35b610354600480360381019061034f9190613f58565b610c7b565b604051610361919061408d565b60405180910390f35b610372610f25565b60405161037f9190613ae9565b60405180910390f35b6103a2600480360381019061039d91906140a8565b610f32565b005b6103be60048036038101906103b991906140f1565b6111c4565b005b6103c8611396565b005b6103e460048036038101906103df9190613b2e565b61149b565b6040516103f191906141f0565b60405180910390f35b61040261154b565b60405161040f9190613b13565b60405180910390f35b610420611574565b60405161042d919061408d565b60405180910390f35b610450600480360381019061044b9190613b2e565b6115d2565b005b61045a6116ed565b005b61047660048036038101906104719190614266565b6117a0565b6040516104839190613ae9565b60405180910390f35b6104a660048036038101906104a19190613b2e565b611991565b005b6104c260048036038101906104bd9190613d76565b611aad565b6040516104cf9190613ae9565b60405180910390f35b6104f260048036038101906104ed9190613b2e565b611e5a565b60405161050092919061433c565b60405180910390f35b610523600480360381019061051e9190614365565b611e8b565b6040516105309190613ae9565b60405180910390f35b610553600480360381019061054e91906143d1565b61213d565b005b61056f600480360381019061056a9190614411565b612212565b005b610579612273565b604051610586919061408d565b60405180910390f35b6105a960048036038101906105a49190613b2e565b612286565b005b6105c560048036038101906105c091906144fb565b6122d9565b6040516105d29190613b13565b60405180910390f35b6105f560048036038101906105f09190613899565b612305565b6040516106029190613b13565b60405180910390f35b6002818154811061061b57600080fd5b90600052602060002090600902016000915090508060000160009054906101000a900460ff1690806001018054610651906145a2565b80601f016020809104026020016040519081016040528092919081815260200182805461067d906145a2565b80156106ca5780601f1061069f576101008083540402835291602001916106ca565b820191906000526020600020905b8154815290600101906020018083116106ad57829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600080600080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050806040015193506107b88686612344565b9250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150509250925092565b6000600780549050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a818154811061084757600080fd5b906000526020600020016000915090505481565b60036020528060005260406000206000915090505481565b60066020528060005260406000206000915090505481565b60006001600960008282546108a09190614602565b925050819055506000600954905060028054905084106108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90614682565b60405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090506000600286815481106109b0576109af6146a2565b5b9060005260206000209060090201604051806101200160405290816000820160009054906101000a900460ff161515151581526020016001820180546109f5906145a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a21906145a2565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481525050905060008260200151905086836020015110610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b059061471d565b60405180910390fd5b8160c0015183604001511015610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b50906147af565b60405180910390fd5b8160e0015183604001511115610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9b90614841565b60405180910390fd5b6000610baf87612611565b9050600080610bbe33846127d8565b91509150610bcd338b84612999565b975080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c1e9190614602565b925050819055507f8ef88319c897c85db21d2cf717d2b2fe331fa9ee56df3d74e41d63230e5127df33858c604051610c5893929190614861565b60405180910390a15050505050506009548114610c7457600080fd5b5092915050565b6000610c85611574565b610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb906148e4565b60405180910390fd5b60005b8751811015610f16576000600860008a8481518110610ce957610ce86146a2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff16610df8576007898381518110610d5857610d576146a2565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600780549050610dd29190614904565b816001018190555060018160000160006101000a81548160ff0219169083151502179055505b610e89898381518110610e0e57610e0d6146a2565b5b6020026020010151898481518110610e2957610e286146a2565b5b6020026020010151898581518110610e4457610e436146a2565b5b6020026020010151898681518110610e5f57610e5e6146a2565b5b602002602001015160018a8881518110610e7c57610e7b6146a2565b5b60200260200101516129b4565b50838281518110610e9d57610e9c6146a2565b5b6020026020010151600660008b8581518110610ebc57610ebb6146a2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508080610f0e90614938565b915050610cc7565b50600190509695505050505050565b6000600280549050905090565b600160096000828254610f459190614602565b92505081905550600060095490506000610f5e83612611565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090508060800151421015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906149cc565b60405180910390fd5b60008061108033866127d8565b915091506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482846110d29190614602565b6110dc9190614602565b90506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008311156111ac578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111679291906149ec565b6020604051808303816000875af1158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190614a2a565b505b50505050505060095481146111c057600080fd5b5050565b6111cc611574565b61120b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611202906148e4565b60405180910390fd5b600560009054906101000a900460ff1661125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190614ac9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090614b5b565b60405180910390fd5b6000811161130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390614bed565b60405180910390fd5b60008390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161134c9291906149ec565b6020604051808303816000875af115801561136b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138f9190614a2a565b5050505050565b61139e611574565b6113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d4906148e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114a36137a6565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115b6612fd4565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6115da611574565b611619576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611610906148e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090614c59565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116f5611574565b611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b906148e4565b60405180910390fd5b600560009054906101000a900460ff16611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90614ac9565b60405180910390fd5b6000600560006101000a81548160ff021916908315150217905550565b60006117aa611574565b6117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e0906148e4565b60405180910390fd5b6000861161182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182390614cc5565b60405180910390fd5b60006040518061012001604052806001151581526020018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018781526020018a8152602001898152602001888152602001868152602001858152602001848152509050600280549050915060006003600084815260200190815260200160002081905550600281908060018154018082558091505060019003906000526020600020906009020160009091909190915060008201518160000160006101000a81548160ff02191690831515021790555060208201518160010190816119399190614e91565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801555050509998505050505050505050565b611999611574565b6119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf906148e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090614faf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160096000828254611ac29190614602565b92505081905550600060095490506000611adb84612611565b90506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090506000816080015190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611bed9190613b13565b602060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190614fe4565b905083608001514210611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90615083565b60405180910390fd5b88811015611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb0906150ef565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd33308c6040518463ffffffff1660e01b8152600401611cf69392919061510f565b6020604051808303816000875af1158015611d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d399190614a2a565b611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f90615192565b60405180910390fd5b600080611d8533886127d8565b9150915060008b83611d979190614602565b9050611dac33886020015183896000806129b4565b995081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dfd9190614602565b925050819055507f7f89f244e1ba6f246c289a29ad1d0de7c4c58d32e4b2d80f0f4f385f0edf1490338d604051611e359291906149ec565b60405180910390a150505050505050506009548114611e5357600080fd5b5092915050565b60086020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611eee9190613b13565b602060405180830381865afa158015611f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2f9190614fe4565b905083811015611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b906150ef565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611fb19392919061510f565b6020604051808303816000875af1158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190614a2a565b612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90615192565b60405180910390fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff16612127576007339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007805490506121019190614904565b816001018190555060018160000160006101000a81548160ff0219169083151502179055505b612132338787612999565b935050505092915050565b612145611574565b612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b906148e4565b60405180910390fd5b60028054905082106121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c2906151fe565b60405180910390fd5b6000600283815481106121e1576121e06146a2565b5b90600052602060002090600902019050818160000160006101000a81548160ff021916908315150217905550505050565b61221a611574565b612259576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612250906148e4565b60405180910390fd5b80600a908051906020019061226f9291906137e5565b5050565b600560009054906101000a900460ff1681565b61228e611574565b6122cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c4906148e4565b60405180910390fd5b6122d681612fdc565b50565b6000806000806122e885613108565b9250925092506122fa86828585613170565b935050505092915050565b6007818154811061231557600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481525050905060006002826020015181548110612404576124036146a2565b5b9060005260206000209060090201604051806101200160405290816000820160009054906101000a900460ff16151515158152602001600182018054612449906145a2565b80601f0160208091040260200160405190810160405280929190818152602001828054612475906145a2565b80156124c25780601f10612497576101008083540402835291602001916124c2565b820191906000526020600020905b8154815290600101906020018083116124a557829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090508160000151612557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254e9061526a565b60405180910390fd5b60008260800151421161256a5742612570565b82608001515b905060006301e133809050600083604001518710612594578360800151905061259c565b836060015190505b6000828560a001518660a00151846125b49190614904565b88604001518960600151886125c99190614904565b6125d3919061528a565b6125dd919061528a565b6125e791906152fb565b6125f191906152fb565b90508560a00151816126039190614904565b965050505050505092915050565b600080600a80548060200260200160405190810160405280929190818152602001828054801561266057602002820191906000526020600020905b81548152602001906001019080831161264c575b5050505050905060005b83518110156127d15760005b82518110156127bd5760006126a4848381518110612697576126966146a2565b5b602002602001015161331c565b905060006126b1336133ea565b826040516020016126c39291906153b4565b6040516020818303038152906040529050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661273182898781518110612724576127236146a2565b5b60200260200101516122d9565b73ffffffffffffffffffffffffffffffffffffffff16036127a857846001865161275b9190614904565b8151811061276c5761276b6146a2565b5b6020026020010151858481518110612787576127866146a2565b5b602002602001018181525050858061279e90614938565b96505050506127bd565b505080806127b590614938565b915050612676565b5080806127c990614938565b91505061266a565b5050919050565b6000806000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff1661286f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128669061542f565b60405180910390fd5b60008160060154146128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ad9061549b565b60405180910390fd5b60006128c28686612344565b9050428260060181905550808260050160008282546128e19190614602565b9250508190555060008260000160006101000a81548160ff021916908315150217905550816002015460036000846001015481526020019081526020016000205461292c9190614904565b6003600084600101548152602001908152602001600020819055507f7712eab9bace2a6db4db50e391a24280d3a83952dfa3067d0f5894a1acead3728683600201548360405161297e93929190614861565b60405180910390a18160020154819350935050509250929050565b60006129ab84848460008060006129b4565b90509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3d90615507565b60405180910390fd5b6002805490508610612a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8490615573565b60405180910390fd5b600060028781548110612aa357612aa26146a2565b5b9060005260206000209060090201604051806101200160405290816000820160009054906101000a900460ff16151515158152602001600182018054612ae8906145a2565b80601f0160208091040260200160405190810160405280929190818152602001828054612b14906145a2565b8015612b615780601f10612b3657610100808354040283529160200191612b61565b820191906000526020600020905b815481529060010190602001808311612b4457829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090508060000151612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed906155df565b60405180910390fd5b6000600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050806000015115612ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd79061564b565b60405180910390fd5b8160c00151871015612d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1e906156b7565b60405180910390fd5b8160e00151871115612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6590615723565b60405180910390fd5b6000861115612dc95742861180612d825750845b612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db8906157b5565b60405180910390fd5b859250612e26565b6000826101000151905060008111612e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0d90615821565b60405180910390fd5b8042612e229190614602565b9350505b60004290508515612e785760008511612e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6b9061588d565b60405180910390fd5b8490505b60006040518060e001604052806001151581526020018b81526020018a8152602001838152602001868152602001600081526020016000815250905080600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015590505088600360008c815260200190815260200160002054612f729190614602565b600360008c8152602001908152602001600020819055507f7cc860bef2fa56b3d46227731e60b3b6ce0af9627bfdfbeca273f9ea5dae8a188b8a8c88604051612fbe94939291906158ad565b60405180910390a1505050509695505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361304b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304290615964565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060006041845114613151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613148906159d0565b60405180910390fd5b6020840151925060408401519150606084015160001a90509193909250565b6000806040518060400160405280602081526020017f19457468657265756d205369676e6564204d6573736167653a0a303030303030815250905060008087519050603983019150620f423f8111156131c857600080fd5b600080620186a090505b6000811461326c57600081846131e891906152fb565b905060008103613210576000830361320f57600a8261320791906152fb565b9150506131d2565b5b828061321b90614938565b935050818161322a919061528a565b846132359190614904565b9350600a8261324491906152fb565b91506030816132539190614602565b9050848061326090614938565b955050808553506131d2565b6000820361327d57601b915061328d565b601a8261328a9190614602565b91505b8185526000858b6040516020016132a59291906159f0565b6040516020818303038152906040528051906020012090506001818b8b8b604051600081526020016040526040516132e09493929190615a49565b6020604051602081039080840390855afa158015613302573d6000803e3d6000fd5b505050602060405103519650505050505050949350505050565b60606000600161332b84613417565b01905060008167ffffffffffffffff81111561334a57613349613b60565b5b6040519080825280601f01601f19166020018201604052801561337c5781602001600182028036833780820191505090505b509050600082602001820190505b6001156133df578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816133d3576133d26152cc565b5b0494506000850361338a575b819350505050919050565b60606134108273ffffffffffffffffffffffffffffffffffffffff16601460ff1661356a565b9050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613475577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161346b5761346a6152cc565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106134b2576d04ee2d6d415b85acef810000000083816134a8576134a76152cc565b5b0492506020810190505b662386f26fc1000083106134e157662386f26fc1000083816134d7576134d66152cc565b5b0492506010810190505b6305f5e100831061350a576305f5e1008381613500576134ff6152cc565b5b0492506008810190505b612710831061352f576127108381613525576135246152cc565b5b0492506004810190505b606483106135525760648381613548576135476152cc565b5b0492506002810190505b600a8310613561576001810190505b80915050919050565b60606000600283600261357d919061528a565b6135879190614602565b67ffffffffffffffff8111156135a05761359f613b60565b5b6040519080825280601f01601f1916602001820160405280156135d25781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061360a576136096146a2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061366e5761366d6146a2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026136ae919061528a565b6136b89190614602565b90505b6001811115613758577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106136fa576136f96146a2565b5b1a60f81b828281518110613711576137106146a2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061375190615a8e565b90506136bb565b506000841461379c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379390615b03565b60405180910390fd5b8091505092915050565b6040518060e001604052806000151581526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613821579160200282015b82811115613820578251825591602001919060010190613805565b5b50905061382e9190613832565b5090565b5b8082111561384b576000816000905550600101613833565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61387681613863565b811461388157600080fd5b50565b6000813590506138938161386d565b92915050565b6000602082840312156138af576138ae613859565b5b60006138bd84828501613884565b91505092915050565b60008115159050919050565b6138db816138c6565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561391b578082015181840152602081019050613900565b60008484015250505050565b6000601f19601f8301169050919050565b6000613943826138e1565b61394d81856138ec565b935061395d8185602086016138fd565b61396681613927565b840191505092915050565b61397a81613863565b82525050565b600061012082019050613996600083018c6138d2565b81810360208301526139a8818b613938565b90506139b7604083018a613971565b6139c46060830189613971565b6139d16080830188613971565b6139de60a0830187613971565b6139eb60c0830186613971565b6139f860e0830185613971565b613a06610100830184613971565b9a9950505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a3f82613a14565b9050919050565b613a4f81613a34565b8114613a5a57600080fd5b50565b600081359050613a6c81613a46565b92915050565b60008060408385031215613a8957613a88613859565b5b6000613a9785828601613a5d565b9250506020613aa885828601613884565b9150509250929050565b6000606082019050613ac76000830186613971565b613ad46020830185613971565b613ae16040830184613971565b949350505050565b6000602082019050613afe6000830184613971565b92915050565b613b0d81613a34565b82525050565b6000602082019050613b286000830184613b04565b92915050565b600060208284031215613b4457613b43613859565b5b6000613b5284828501613a5d565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b9882613927565b810181811067ffffffffffffffff82111715613bb757613bb6613b60565b5b80604052505050565b6000613bca61384f565b9050613bd68282613b8f565b919050565b600067ffffffffffffffff821115613bf657613bf5613b60565b5b602082029050602081019050919050565b600080fd5b600080fd5b600067ffffffffffffffff821115613c2c57613c2b613b60565b5b613c3582613927565b9050602081019050919050565b82818337600083830152505050565b6000613c64613c5f84613c11565b613bc0565b905082815260208101848484011115613c8057613c7f613c0c565b5b613c8b848285613c42565b509392505050565b600082601f830112613ca857613ca7613b5b565b5b8135613cb8848260208601613c51565b91505092915050565b6000613cd4613ccf84613bdb565b613bc0565b90508083825260208201905060208402830185811115613cf757613cf6613c07565b5b835b81811015613d3e57803567ffffffffffffffff811115613d1c57613d1b613b5b565b5b808601613d298982613c93565b85526020850194505050602081019050613cf9565b5050509392505050565b600082601f830112613d5d57613d5c613b5b565b5b8135613d6d848260208601613cc1565b91505092915050565b60008060408385031215613d8d57613d8c613859565b5b6000613d9b85828601613884565b925050602083013567ffffffffffffffff811115613dbc57613dbb61385e565b5b613dc885828601613d48565b9150509250929050565b600067ffffffffffffffff821115613ded57613dec613b60565b5b602082029050602081019050919050565b6000613e11613e0c84613dd2565b613bc0565b90508083825260208201905060208402830185811115613e3457613e33613c07565b5b835b81811015613e5d5780613e498882613a5d565b845260208401935050602081019050613e36565b5050509392505050565b600082601f830112613e7c57613e7b613b5b565b5b8135613e8c848260208601613dfe565b91505092915050565b600067ffffffffffffffff821115613eb057613eaf613b60565b5b602082029050602081019050919050565b6000613ed4613ecf84613e95565b613bc0565b90508083825260208201905060208402830185811115613ef757613ef6613c07565b5b835b81811015613f205780613f0c8882613884565b845260208401935050602081019050613ef9565b5050509392505050565b600082601f830112613f3f57613f3e613b5b565b5b8135613f4f848260208601613ec1565b91505092915050565b60008060008060008060c08789031215613f7557613f74613859565b5b600087013567ffffffffffffffff811115613f9357613f9261385e565b5b613f9f89828a01613e67565b965050602087013567ffffffffffffffff811115613fc057613fbf61385e565b5b613fcc89828a01613f2a565b955050604087013567ffffffffffffffff811115613fed57613fec61385e565b5b613ff989828a01613f2a565b945050606087013567ffffffffffffffff81111561401a5761401961385e565b5b61402689828a01613f2a565b935050608087013567ffffffffffffffff8111156140475761404661385e565b5b61405389828a01613f2a565b92505060a087013567ffffffffffffffff8111156140745761407361385e565b5b61408089828a01613f2a565b9150509295509295509295565b60006020820190506140a260008301846138d2565b92915050565b6000602082840312156140be576140bd613859565b5b600082013567ffffffffffffffff8111156140dc576140db61385e565b5b6140e884828501613d48565b91505092915050565b60008060006060848603121561410a57614109613859565b5b600061411886828701613a5d565b935050602061412986828701613a5d565b925050604061413a86828701613884565b9150509250925092565b61414d816138c6565b82525050565b61415c81613863565b82525050565b60e0820160008201516141786000850182614144565b50602082015161418b6020850182614153565b50604082015161419e6040850182614153565b5060608201516141b16060850182614153565b5060808201516141c46080850182614153565b5060a08201516141d760a0850182614153565b5060c08201516141ea60c0850182614153565b50505050565b600060e0820190506142056000830184614162565b92915050565b600080fd5b60008083601f84011261422657614225613b5b565b5b8235905067ffffffffffffffff8111156142435761424261420b565b5b60208301915083600182028301111561425f5761425e613c07565b5b9250929050565b60008060008060008060008060006101008a8c03121561428957614288613859565b5b60008a013567ffffffffffffffff8111156142a7576142a661385e565b5b6142b38c828d01614210565b995099505060206142c68c828d01613884565b97505060406142d78c828d01613884565b96505060606142e88c828d01613884565b95505060806142f98c828d01613884565b94505060a061430a8c828d01613884565b93505060c061431b8c828d01613884565b92505060e061432c8c828d01613884565b9150509295985092959850929598565b600060408201905061435160008301856138d2565b61435e6020830184613971565b9392505050565b6000806040838503121561437c5761437b613859565b5b600061438a85828601613884565b925050602061439b85828601613884565b9150509250929050565b6143ae816138c6565b81146143b957600080fd5b50565b6000813590506143cb816143a5565b92915050565b600080604083850312156143e8576143e7613859565b5b60006143f685828601613884565b9250506020614407858286016143bc565b9150509250929050565b60006020828403121561442757614426613859565b5b600082013567ffffffffffffffff8111156144455761444461385e565b5b61445184828501613f2a565b91505092915050565b600067ffffffffffffffff82111561447557614474613b60565b5b61447e82613927565b9050602081019050919050565b600061449e6144998461445a565b613bc0565b9050828152602081018484840111156144ba576144b9613c0c565b5b6144c5848285613c42565b509392505050565b600082601f8301126144e2576144e1613b5b565b5b81356144f284826020860161448b565b91505092915050565b6000806040838503121561451257614511613859565b5b600083013567ffffffffffffffff8111156145305761452f61385e565b5b61453c858286016144cd565b925050602083013567ffffffffffffffff81111561455d5761455c61385e565b5b61456985828601613c93565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145ba57607f821691505b6020821081036145cd576145cc614573565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061460d82613863565b915061461883613863565b92508282019050808211156146305761462f6145d3565b5b92915050565b7f496e636f72726563742074696572496400000000000000000000000000000000600082015250565b600061466c6010836138ec565b915061467782614636565b602082019050919050565b6000602082019050818103600083015261469b8161465f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f43616e6e6f74207570677261646520746f206c6f776572207469657249640000600082015250565b6000614707601e836138ec565b9150614712826146d1565b602082019050919050565b60006020820190508181036000830152614736816146fa565b9050919050565b7f5374616b6520616d6f756e74206973206c657373207468616e206d696e206c6960008201527f6d697420666f7220746869732074696572000000000000000000000000000000602082015250565b60006147996031836138ec565b91506147a48261473d565b604082019050919050565b600060208201905081810360008301526147c88161478c565b9050919050565b7f5374616b6520616d6f756e74206973206d6f7265207468616e206d696e206c6960008201527f6d697420666f7220746869732074696572000000000000000000000000000000602082015250565b600061482b6031836138ec565b9150614836826147cf565b604082019050919050565b6000602082019050818103600083015261485a8161481e565b9050919050565b60006060820190506148766000830186613b04565b6148836020830185613971565b6148906040830184613971565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148ce6020836138ec565b91506148d982614898565b602082019050919050565b600060208201905081810360008301526148fd816148c1565b9050919050565b600061490f82613863565b915061491a83613863565b9250828203905081811115614932576149316145d3565b5b92915050565b600061494382613863565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614975576149746145d3565b5b600182019050919050565b7f436f6e7472616374206973206e6f74206f766572207965740000000000000000600082015250565b60006149b66018836138ec565b91506149c182614980565b602082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b6000604082019050614a016000830185613b04565b614a0e6020830184613971565b9392505050565b600081519050614a24816143a5565b92915050565b600060208284031215614a4057614a3f613859565b5b6000614a4e84828501614a15565b91505092915050565b7f456d657267656e637920746f6b656e207769746864726177616c73206861766560008201527f206265656e2064697361626c6564000000000000000000000000000000000000602082015250565b6000614ab3602e836138ec565b9150614abe82614a57565b604082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b7f5769746864726177616c20616464726573732063616e6e6f742062652074686560008201527f206275726e206164647265737300000000000000000000000000000000000000602082015250565b6000614b45602d836138ec565b9150614b5082614ae9565b604082019050919050565b60006020820190508181036000830152614b7481614b38565b9050919050565b7f5769746864726177616c20616d6f756e74206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b6000614bd76028836138ec565b9150614be282614b7b565b604082019050919050565b60006020820190508181036000830152614c0681614bca565b9050919050565b7f4e6f206368616e67650000000000000000000000000000000000000000000000600082015250565b6000614c436009836138ec565b9150614c4e82614c0d565b602082019050919050565b60006020820190508181036000830152614c7281614c36565b9050919050565b7f61707244656e6f6d696e61746f72206973206e6f74203e203000000000000000600082015250565b6000614caf6019836138ec565b9150614cba82614c79565b602082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302614d477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614d0a565b614d518683614d0a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000614d8e614d89614d8484613863565b614d69565b613863565b9050919050565b6000819050919050565b614da883614d73565b614dbc614db482614d95565b848454614d17565b825550505050565b600090565b614dd1614dc4565b614ddc818484614d9f565b505050565b5b81811015614e0057614df5600082614dc9565b600181019050614de2565b5050565b601f821115614e4557614e1681614ce5565b614e1f84614cfa565b81016020851015614e2e578190505b614e42614e3a85614cfa565b830182614de1565b50505b505050565b600082821c905092915050565b6000614e6860001984600802614e4a565b1980831691505092915050565b6000614e818383614e57565b9150826002028217905092915050565b614e9a826138e1565b67ffffffffffffffff811115614eb357614eb2613b60565b5b614ebd82546145a2565b614ec8828285614e04565b600060209050601f831160018114614efb5760008415614ee9578287015190505b614ef38582614e75565b865550614f5b565b601f198416614f0986614ce5565b60005b82811015614f3157848901518255600182019150602085019450602081019050614f0c565b86831015614f4e5784890151614f4a601f891682614e57565b8355505b6001600288020188555050505b505050505050565b7f5574696c69747920546f6b656e20536574000000000000000000000000000000600082015250565b6000614f996011836138ec565b9150614fa482614f63565b602082019050919050565b60006020820190508181036000830152614fc881614f8c565b9050919050565b600081519050614fde8161386d565b92915050565b600060208284031215614ffa57614ff9613859565b5b600061500884828501614fcf565b91505092915050565b7f43616e6e6f742061646420746f6b656e7320746f206120636f6d706c6574656460008201527f207374616b650000000000000000000000000000000000000000000000000000602082015250565b600061506d6026836138ec565b915061507882615011565b604082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b7f496e73756666696369656e7420546f6b656e2042616c616e6365000000000000600082015250565b60006150d9601a836138ec565b91506150e4826150a3565b602082019050919050565b60006020820190508181036000830152615108816150cc565b9050919050565b60006060820190506151246000830186613b04565b6151316020830185613b04565b61513e6040830184613971565b949350505050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b600061517c6015836138ec565b915061518782615146565b602082019050919050565b600060208201905081810360008301526151ab8161516f565b9050919050565b7f74656d706c617465496e646578206f7574206f662072616e6765000000000000600082015250565b60006151e8601a836138ec565b91506151f3826151b2565b602082019050919050565b60006020820190508181036000830152615217816151db565b9050919050565b7f4e6f207374616b657220636f6e747261637420666f756e640000000000000000600082015250565b60006152546018836138ec565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b600061529582613863565b91506152a083613863565b92508282026152ae81613863565b915082820484148315176152c5576152c46145d3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061530682613863565b915061531183613863565b925082615321576153206152cc565b5b828204905092915050565b600081905092915050565b6000615342826138e1565b61534c818561532c565b935061535c8185602086016138fd565b80840191505092915050565b7f2c00000000000000000000000000000000000000000000000000000000000000600082015250565b600061539e60018361532c565b91506153a982615368565b600182019050919050565b60006153c08285615337565b91506153cb82615391565b91506153d78284615337565b91508190509392505050565b7f4e6f206f70656e207374616b6520666f72207468697320757365720000000000600082015250565b6000615419601b836138ec565b9150615424826153e3565b602082019050919050565b600060208201905081810360008301526154488161540c565b9050919050565b7f436f6e747261637420697320616c726561647920636c6f736564000000000000600082015250565b6000615485601a836138ec565b91506154908261544f565b602082019050919050565b600060208201905081810360008301526154b481615478565b9050919050565b7f5374616b696e6720546f6b656e206973204e6f7420446566696e656400000000600082015250565b60006154f1601c836138ec565b91506154fc826154bb565b602082019050919050565b60006020820190508181036000830152615520816154e4565b9050919050565b7f496c6c6567616c20746965724964000000000000000000000000000000000000600082015250565b600061555d600e836138ec565b915061556882615527565b602082019050919050565b6000602082019050818103600083015261558c81615550565b9050919050565b7f54696572206973206e6f74206163746976650000000000000000000000000000600082015250565b60006155c96012836138ec565b91506155d482615593565b602082019050919050565b600060208201905081810360008301526155f8816155bc565b9050919050565b7f5573657220616c7265616479206861732061207374616b650000000000000000600082015250565b60006156356018836138ec565b9150615640826155ff565b602082019050919050565b6000602082019050818103600083015261566481615628565b9050919050565b7f43616e6e6f74207374616b652062656c6f77206d696e206c696d697400000000600082015250565b60006156a1601c836138ec565b91506156ac8261566b565b602082019050919050565b600060208201905081810360008301526156d081615694565b9050919050565b7f43616e6e6f74207374616b652061626f7665206d6178206c696d697400000000600082015250565b600061570d601c836138ec565b9150615718826156d7565b602082019050919050565b6000602082019050818103600083015261573c81615700565b9050919050565b7f437573746f6d2074696d657374616d702063616e6e6f7420626520696e20746860008201527f6520706173740000000000000000000000000000000000000000000000000000602082015250565b600061579f6026836138ec565b91506157aa82615743565b604082019050919050565b600060208201905081810360008301526157ce81615792565b9050919050565b7f4475726174696f6e2063616e6e6f742062652030000000000000000000000000600082015250565b600061580b6014836138ec565b9150615816826157d5565b602082019050919050565b6000602082019050818103600083015261583a816157fe565b9050919050565b7f53746172742074696d657374616d702063616e6e6f7420626520300000000000600082015250565b6000615877601b836138ec565b915061588282615841565b602082019050919050565b600060208201905081810360008301526158a68161586a565b9050919050565b60006080820190506158c26000830187613b04565b6158cf6020830186613971565b6158dc6040830185613971565b6158e96060830184613971565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061594e6026836138ec565b9150615959826158f2565b604082019050919050565b6000602082019050818103600083015261597d81615941565b9050919050565b7f696e76616c6964207369676e6174757265206c656e6774680000000000000000600082015250565b60006159ba6018836138ec565b91506159c582615984565b602082019050919050565b600060208201905081810360008301526159e9816159ad565b9050919050565b60006159fc8285615337565b9150615a088284615337565b91508190509392505050565b6000819050919050565b615a2781615a14565b82525050565b600060ff82169050919050565b615a4381615a2d565b82525050565b6000608082019050615a5e6000830187615a1e565b615a6b6020830186615a3a565b615a786040830185615a1e565b615a856060830184615a1e565b95945050505050565b6000615a9982613863565b915060008203615aac57615aab6145d3565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615aed6020836138ec565b9150615af882615ab7565b602082019050919050565b60006020820190508181036000830152615b1c81615ae0565b905091905056fea2646970667358221220c7b84b827173140343d44afc5ad8e3385c53a5f2f6b12ac4de3add0165e6cb9b64736f6c634300081100330000000000000000000000001e824b4fc5d96c9f16583cbd7eb3e208a6905aef