379 txs
3.7k calls
constructor
constructor(address _rolesManager, address _nftContract, address _paymentSplitter, address _storageAdministrator, address _bonusAndReward, address _usdcContract, address _initialOwner, address _pauser)
functions
BONUS_AND_REWARD
viewfunction BONUS_AND_REWARD() view returns (address)
cancelLPFees
viewfunction cancelLPFees() view returns (uint256)
getAllPools
viewfunction getAllPools() view returns (tuple[])
getClosedSeason
viewfunction getClosedSeason() view returns (tuple)
getCurrentSeason
viewfunction getCurrentSeason() view returns (tuple)
getMyPurchases
viewfunction getMyPurchases(uint96 _nftId) view returns (tuple[])
getMyPurchasesIds
viewfunction getMyPurchasesIds(uint96 _nftId) view returns (uint96[])
getPoolById
viewfunction getPoolById(uint16 poolId) view returns (tuple)
getPurchaseById
viewfunction getPurchaseById(uint96 _nftId, uint96 _purchaseId) view returns (tuple)
getSeasonbyId
viewfunction getSeasonbyId(uint96 _id) view returns (tuple)
isPaused
viewfunction isPaused() view returns (bool)
isPurchaseActive
viewfunction isPurchaseActive(uint96 _nftId, uint96 _purchaseId) view
LP_TOTAL_AMOUNT_INVESTED
viewfunction LP_TOTAL_AMOUNT_INVESTED() view returns (uint256)
lpPurchasesCount
viewfunction lpPurchasesCount() view returns (uint96)
NFT
viewfunction NFT() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PAYMENT_SPLITTER
viewfunction PAYMENT_SPLITTER() view returns (address)
poolsCounter
viewfunction poolsCounter() view returns (uint16)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
seasonsClosedCount
viewfunction seasonsClosedCount() view returns (uint96)
seasonsCount
viewfunction seasonsCount() view returns (uint96)
STORAGE_ADMINISTRATOR
viewfunction STORAGE_ADMINISTRATOR() view returns (address)
USDC
viewfunction USDC() view returns (address)
autoBoostLP
nonpayablefunction autoBoostLP(uint96 _nftId, uint96 _purchaseId)
boostLP
nonpayablefunction boostLP(uint96 _nftId, uint96 _purchaseId)
buyLP
nonpayablefunction buyLP(uint96 _nftId, uint16 _poolId)
cancelSubscription
nonpayablefunction cancelSubscription(uint96 _nftId, uint96 _purchaseId)
closeSeason
nonpayablefunction closeSeason(uint256 _totalAmountCollected)
createPool
nonpayablefunction createPool(string _name, uint256 _price, uint256 _feePercentage)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
InitSeasons
nonpayablefunction InitSeasons()
migrateNftsLPpurchase
nonpayablefunction migrateNftsLPpurchase(uint96[] _nftIds, uint16[] _poolIds, uint96[] _purchaseIds, uint256[] _timeStamps, uint256[] _boostedAmounts)
migrateSeason
nonpayablefunction migrateSeason(tuple[] _data)
purchaseEnded
nonpayablefunction purchaseEnded(uint96 _nftId, uint96 _purchaseId)
renounceOwnership
nonpayablefunction renounceOwnership()
setCancelLPFees
nonpayablefunction setCancelLPFees(uint256 _cancelLPFees)
setContracts
nonpayablefunction setContracts(address _address, uint8 _contractOption)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePool
nonpayablefunction updatePool(uint16 _poolId, string _name, uint256 _price, uint256 _feePercentage, bool _isActive)
events
AutoBoostToggled
event AutoBoostToggled(uint96 indexed purchaseId, bool newState, uint256 timestamp)
LPBoosted
event LPBoosted(uint96 indexed _nftId, uint96 indexed _purchaseId, uint256 amountToBoost, uint256 timestamp)
MigrateLpPurchases
event MigrateLpPurchases(uint96 nftQuantity)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PoolCreated
event PoolCreated(uint96 indexed poolId, string name, uint256 price, uint256 feePercentage)
PoolPurchased
event PoolPurchased(address indexed buyer, uint96 nftId, uint96 nftSponsorId, uint96 purchaseId, uint16 poolId, uint96 seasonId, uint256 timestamp)
PoolPurchased
event PoolPurchased(address indexed signer, uint96 indexed nftId, uint96 nftSponsorId, uint96 indexed purchaseId, uint16 poolId)
SeasonClosed
event SeasonClosed(uint96 indexed seasonId, uint256 totalProfit)
SeasonOpened
event SeasonOpened(uint96 indexed seasonId, uint256 startTime, uint256 endTime)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
P2
error P2(uint96 _purchaseId)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
S2
error S2()
S4
error S4()
S5
error S5()
V1
error V1()
V2
error V2()
V3
error V3()
V5
error V5()
V6
error V6()
V8
error V8()
creation bytecode
0x608060405234801562000010575f80fd5b506040516200585b3803806200585b833981810160405281019062000036919062000251565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a1919062000326565b60405180910390fd5b620000bb816200012960201b60201c565b506001601081905550875f55866001558560025584600355836004558260055580600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000341565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200021b82620001f0565b9050919050565b6200022d816200020f565b811462000238575f80fd5b50565b5f815190506200024b8162000222565b92915050565b5f805f805f805f80610100898b031215620002715762000270620001ec565b5b5f620002808b828c016200023b565b9850506020620002938b828c016200023b565b9750506040620002a68b828c016200023b565b9650506060620002b98b828c016200023b565b9550506080620002cc8b828c016200023b565b94505060a0620002df8b828c016200023b565b93505060c0620002f28b828c016200023b565b92505060e0620003058b828c016200023b565b9150509295985092959890939650565b62000320816200020f565b82525050565b5f6020820190506200033b5f83018462000315565b92915050565b61550c806200034f5f395ff3fe608060405234801561000f575f80fd5b5060043610610251575f3560e01c806389a3027111610144578063b187bd26116100c1578063d3b30b7511610085578063d3b30b7514610661578063d88ff1f41461067f578063dbf80a031461069d578063df7049e6146106b9578063f1ad7055146106d7578063f2fde38b146106f557610251565b8063b187bd26146105bd578063b29a1575146105db578063c34a2987146105f9578063cc8dfc7914610629578063cf7e80371461064557610251565b80639e1f22e1116101085780639e1f22e11461051b578063a5f0292b14610537578063a99fc55914610555578063afcdcdb614610571578063b14feb621461058d57610251565b806389a30271146104775780638afbe183146104955780638da5cb5b146104c5578063969a56a0146104e35780639b6c5283146104ff57610251565b80634f60e6c1116101d2578063715018a611610196578063715018a6146103e35780637c0b8de2146103ed578063821ba66d1461040b5780638690e43b1461043b5780638999dd6a1461045957610251565b80634f60e6c11461036557806351858e27146103815780635c975abb1461038b5780635d0aeec1146103a95780635d0eb31a146103c557610251565b80631f9b054d116102195780631f9b054d146102d357806344443064146102f157806345cd36f9146103215780634a4e3bd51461033f5780634df931fb1461034957610251565b8063018950261461025557806301afd56e14610271578063074383a71461027b5780630a2dd68d1461029957806319d3da97146102b7575b5f80fd5b61026f600480360381019061026a91906139bd565b610711565b005b6102796107b9565b005b610283610889565b6040516102909190613a9d565b60405180910390f35b6102a16109c7565b6040516102ae9190613b30565b60405180910390f35b6102d160048036038101906102cc91906139bd565b6109ec565b005b6102db610c32565b6040516102e89190613b58565b60405180910390f35b61030b60048036038101906103069190613b9b565b610c4f565b6040516103189190613a9d565b60405180910390f35b610329610d0a565b6040516103369190613b58565b60405180910390f35b610347610d28565b005b610363600480360381019061035e9190613d63565b610dd0565b005b61037f600480360381019061037a9190613efd565b610f97565b005b6103896111e8565b005b610393611290565b6040516103a09190614023565b60405180910390f35b6103c360048036038101906103be919061403c565b6112a6565b005b6103cd611406565b6040516103da9190614089565b60405180910390f35b6103eb611419565b005b6103f561142c565b60405161040291906140c2565b60405180910390f35b61042560048036038101906104209190613b9b565b611451565b6040516104329190614248565b60405180910390f35b6104436115ce565b60405161045091906140c2565b60405180910390f35b6104616115f1565b60405161046e9190613b58565b60405180910390f35b61047f61160f565b60405161048c91906140c2565b60405180910390f35b6104af60048036038101906104aa9190613b9b565b611634565b6040516104bc9190614310565b60405180910390f35b6104cd6116f2565b6040516104da91906140c2565b60405180910390f35b6104fd60048036038101906104f89190614330565b61171a565b005b6105196004803603810190610514919061436e565b611ad1565b005b6105356004803603810190610530919061403c565b611cd5565b005b61053f611cff565b60405161054c91906143fa565b60405180910390f35b61056f600480360381019061056a919061403c565b611d24565b005b61058b6004803603810190610586919061403c565b611fc9565b005b6105a760048036038101906105a2919061403c565b612263565b6040516105b491906144c8565b60405180910390f35b6105c56123bb565b6040516105d29190614023565b60405180910390f35b6105e36123c9565b6040516105f091906144f1565b60405180910390f35b610613600480360381019061060e919061450a565b6123cf565b6040516106209190614622565b60405180910390f35b610643600480360381019061063e919061468f565b6124de565b005b61065f600480360381019061065a9190614722565b61284e565b005b610669612a84565b6040516106769190613a9d565b60405180910390f35b610687612b63565b604051610694919061489b565b60405180910390f35b6106b760048036038101906106b2919061403c565b612b85565b005b6106c1612c2f565b6040516106ce91906148db565b60405180910390f35b6106df612c54565b6040516106ec91906144f1565b60405180910390f35b61070f600480360381019061070a91906148f4565b612c5a565b005b336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506107725f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b60648311156107ad576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600d81905550505050565b336040518060400160405280600681526020017f53595354454d000000000000000000000000000000000000000000000000000081525061081a5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b5f600a600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16111561087c576040517f3a347c7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108855f612cee565b5050565b6108916138a9565b5f600b5f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036108f1576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095f6001600b5f9054906101000a90046bffffffffffffffffffffffff1661091a919061494c565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610a4d5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b610a55612e8b565b610a5d612ecc565b5f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f816bffffffffffffffffffffffff1603610ac2576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182610ad0919061494c565b90505f60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff1615610b4a576040517f6558179300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8581600301819055506001816004015f6101000a81548160ff021916908315150217905550600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190610b989061498b565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbd4185a09dd89c1703a5e891dcf85f1e0b7b0c1f32fad28b60570c0bb8d5948587604051610c0591906144f1565b60405180910390a2610c22600183610c1d91906149be565b612cee565b505050610c2d612f12565b505050565b600b5f9054906101000a90046bffffffffffffffffffffffff1681565b610c576138a9565b60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b600a60029054906101000a90046bffffffffffffffffffffffff1681565b610d30612f1c565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db6576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbe612ecc565b610dc6612f26565b610dce612f12565b565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250610e315f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b610e39612ecc565b610e41612e8b565b610e49612f1c565b600a5f9054906101000a900461ffff1661ffff168761ffff1610610e99576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064841115610ed4576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a001604052808861ffff16815260200187815260200186815260200185815260200184151581525060065f8961ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081610f4f9190614bee565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050610f8e612f12565b50505050505050565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610ff85f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b611000612e8b565b611008612f1c565b5f8c8c905090505f81148061101d5750603281115b15611054576040517fdb34179500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f90505b8e8e9050816bffffffffffffffffffffffff1610156111bf575f8f8f836bffffffffffffffffffffffff1681811061109557611094614cbd565b5b90506020020160208101906110aa9190613b9b565b90505f8e8e846bffffffffffffffffffffffff168181106110ce576110cd614cbd565b5b90506020020160208101906110e3919061450a565b90505f8b8b856bffffffffffffffffffffffff1681811061110757611106614cbd565b5b9050602002013590505f8a8a866bffffffffffffffffffffffff1681811061113257611131614cbd565b5b9050602002013590505f8f8f876bffffffffffffffffffffffff1681811061115d5761115c614cbd565b5b90506020020160208101906111729190613b9b565b90505f61118486868686866001612f88565b9150505f6002826111959190614d17565b905080896111a39190614d47565b98505050505050505080806111b79061498b565b91505061105a565b5080600c5f8282546111d19190614d47565b925050819055505050505050505050505050505050565b6111f0612f1c565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611276576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61127e612ecc565b611286613370565b61128e612f12565b565b5f600f60149054906101000a900460ff16905090565b336040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506113075f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b61130f612e8b565b611317612ecc565b61131f612f1c565b5f60075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff16158061139a57505f8160030154145b156113dc57836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016113d39190613b58565b60405180910390fd5b5f816004015f6101000a81548160ff02191690831515021790555050611400612f12565b50505050565b600a5f9054906101000a900461ffff1681565b6114216133d3565b61142a5f61345a565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f60085f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f818054905090505f81036114ef575f67ffffffffffffffff8111156114ac576114ab613c15565b5b6040519080825280602002602001820160405280156114e557816020015b6114d26138e3565b8152602001906001900390816114ca5790505b50925050506115c9565b5f8167ffffffffffffffff81111561150a57611509613c15565b5b60405190808252806020026020018201604052801561154357816020015b6115306138e3565b8152602001906001900390816115285790505b5090505f5b828110156115c1576115988685838154811061156757611566614cbd565b5b905f5260205f209060029182820401919006600c029054906101000a90046bffffffffffffffffffffffff16612263565b8282815181106115ab576115aa614cbd565b5b6020026020010181905250806001019050611548565b508093505050505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a600e9054906101000a90046bffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060085f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156116e657602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116116995790505b50505050509050919050565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161178c9190614daa565b602060405180830381865afa1580156117a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117cb9190614dd7565b73ffffffffffffffffffffffffffffffffffffffff1614611818576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611820612ecc565b611828612e8b565b611830612f1c565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ab1c188856040518263ffffffff1660e01b815260040161188b9190613b58565b602060405180830381865afa1580156118a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ca9190614e16565b90505f806118dc8686425f805f612f88565b915091508060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161193b91906140c2565b602060405180830381865afa158015611956573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197a9190614e55565b10156119b2576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356476851335f868560015f6040518763ffffffff1660e01b8152600401611a1796959493929190614f39565b5f604051808303815f87803b158015611a2e575f80fd5b505af1158015611a40573d5f803e3d5ffd5b5050505080600c5f8282540192505081905550816bffffffffffffffffffffffff16866bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27309e519004512d0fb9fbcdc060e3690e558c9bd68e064df57f1bfcee44f8ed8689604051611ab9929190614f98565b60405180910390a4505050611acc612f12565b505050565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250611b325f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b611b3a612ecc565b611b42612e8b565b611b4a612f1c565b6064831115611b85576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f9054906101000a900461ffff1690506040518060a001604052808261ffff1681526020018781526020018681526020018581526020016001151581525060065f8361ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081611c149190614bee565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a5f81819054906101000a900461ffff1680929190611c6a90614fbf565b91906101000a81548161ffff021916908361ffff160217905550508061ffff167f202127a3b621c057f83d5f6394c98a33490b6d93f38e17d6ef33cabe43d3d218878787604051611cbd93929190615030565b60405180910390a250611cce612f12565b5050505050565b611cfb82823073ffffffffffffffffffffffffffffffffffffffff1663b14feb6261351d565b5050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611d969190614daa565b602060405180830381865afa158015611db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd59190614dd7565b73ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2a612e8b565b611e32612ecc565b611e3c8383611cd5565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a99fc55985856040518363ffffffff1660e01b8152600401611e9992919061506c565b6020604051808303815f875af1158015611eb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed99190614e55565b90508060075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206005015f828254611f459190614d47565b9250508190555080600c5f828254611f5d9190614d47565b92505081905550826bffffffffffffffffffffffff16846bffffffffffffffffffffffff167fee345a8d877e3f266620b91711eaa4125404bcf2a352ca8369c0e4abc5be8f858342604051611fb3929190615093565b60405180910390a350611fc4612f12565b505050565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161203b9190614daa565b602060405180830381865afa158015612056573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207a9190614dd7565b73ffffffffffffffffffffffffffffffffffffffff16146120c7576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120cf612e8b565b6120d7612ecc565b6120e18383611cd5565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663163af7aa846040518263ffffffff1660e01b815260040161213c9190613b58565b6020604051808303815f875af1158015612158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061217c91906150ce565b90508061220d5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663438e0ce185856040518363ffffffff1660e01b81526004016121df92919061506c565b5f604051808303815f87803b1580156121f6575f80fd5b505af1158015612208573d5f803e3d5ffd5b505050505b826bffffffffffffffffffffffff167f2b11a5aeebe95d970d0d3a523b0f4d6bf3ae63cff2226c9aa50dc52292070176824260405161224d9291906150f9565b60405180910390a25061225e612f12565b505050565b61226b6138e3565b60075f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020015f8201600c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815260200160058201548152602001600682015481525050905092915050565b5f6123c4611290565b905090565b600c5481565b6123d7613948565b60065f8361ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff16815260200160018201805461242990614a2a565b80601f016020809104026020016040519081016040528092919081815260200182805461245590614a2a565b80156124a05780601f10612477576101008083540402835291602001916124a0565b820191905f5260205f20905b81548152906001019060200180831161248357829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b336040518060400160405280600a81526020017f535550455241444d494e0000000000000000000000000000000000000000000081525061253f5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036125a4576040517f96cd25ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60058111156125b7576125b6614e80565b5b8360058111156125ca576125c9614e80565b5b0361261357835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612848565b6001600581111561262757612626614e80565b5b83600581111561263a57612639614e80565b5b03612684578360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612847565b6002600581111561269857612697614e80565b5b8360058111156126ab576126aa614e80565b5b036126f5578360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612846565b6003600581111561270957612708614e80565b5b83600581111561271c5761271b614e80565b5b03612766578360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612845565b6004600581111561277a57612779614e80565b5b83600581111561278d5761278c614e80565b5b036127d7578360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612844565b6005808111156127ea576127e9614e80565b5b8360058111156127fd576127fc614e80565b5b03612843578360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b50505050565b336040518060400160405280600681526020017f53595354454d00000000000000000000000000000000000000000000000000008152506128af5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cde565b6128b7612e8b565b6128bf612ecc565b5f84849050036128fb576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015612a755784848281811061291b5761291a614cbd565b5b905060a0020160095f87878581811061293757612936614cbd565b5b905060a002015f01602081019061294e9190613b9b565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f208181612983919061534e565b905050600a600e81819054906101000a90046bffffffffffffffffffffffff16809291906129b09061498b565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550508484828181106129f2576129f1614cbd565b5b905060a002016080016020810190612a0a919061535c565b15612a6857600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190612a389061498b565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b80806001019150506128fd565b50612a7e612f12565b50505050565b612a8c6138a9565b60095f6001600a600e9054906101000a90046bffffffffffffffffffffffff16612ab6919061494c565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b6060612b80600a5f9054906101000a900461ffff166123cf6135de565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612bb081613697565b612bb8612e8b565b5f60075f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206004015f6101000a81548160ff021916908315150217905550505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b612c626133d3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612cd2575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612cc991906140c2565b60405180910390fd5b612cdb8161345a565b50565b612ce98383836136ff565b505050565b5f4290506040518060a00160405280836bffffffffffffffffffffffff16815260200182815260200162093a8083612d269190614d47565b81526020015f81526020015f151581525060095f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a600e81819054906101000a90046bffffffffffffffffffffffff1680929190612e029061498b565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbbc94c2557f1a2c3d21f45c50ef2d72721a9a84973f1d9d529f8edbc0cfdea838262093a8084612e719190614d47565b604051612e7f929190615093565b60405180910390a25050565b612e93611290565b15612eca576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600260105403612f08576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601081905550565b6001601081905550565b612f24613745565b565b612f2e6137dd565b5f600f60146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f7161381d565b604051612f7e91906140c2565b60405180910390a1565b5f805f60065f8961ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff168152602001600182018054612fdd90614a2a565b80601f016020809104026020016040519081016040528092919081815260200182805461300990614a2a565b80156130545780601f1061302b57610100808354040283529160200191613054565b820191905f5260205f20905b81548152906001019060200180831161303757829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff16151515158152505090505f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f856130d157600a60029054906101000a90046bffffffffffffffffffffffff166130d3565b865b9050604051806101200160405280826bffffffffffffffffffffffff168152602001845f015161ffff168152602001836bffffffffffffffffffffffff168152602001846040015181526020015f81526020018a81526020016001151581526020018981526020015f81525060075f8d6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151815f01600c6101000a81548161ffff021916908361ffff1602179055506040820151815f01600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a0820151816003015560c0820151816004015f6101000a81548160ff02191690831515021790555060e082015181600501556101008201518160060155905050600a600281819054906101000a90046bffffffffffffffffffffffff16809291906132a29061498b565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505060085f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080836040015194509450505050965096945050505050565b613378612e8b565b6001600f60146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586133bc61381d565b6040516133c991906140c2565b60405180910390a1565b6133db61381d565b73ffffffffffffffffffffffffffffffffffffffff166133f96116f2565b73ffffffffffffffffffffffffffffffffffffffff16146134585761341c61381d565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161344f91906140c2565b60405180910390fd5b565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f828286866040518363ffffffff1660e01b815260040161353f92919061506c565b61012060405180830381865afa15801561355b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061357f919061547c565b90508060c00151158061359557505f8160a00151145b156135d757836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016135ce9190613b58565b60405180910390fd5b5050505050565b60605f8361ffff1667ffffffffffffffff8111156135ff576135fe613c15565b5b60405190808252806020026020018201604052801561363857816020015b613625613948565b81526020019060019003908161361d5790505b5090505f5b81518161ffff16101561368c57613657818563ffffffff16565b828261ffff168151811061366e5761366d614cbd565b5b6020026020010181905250808061368490614fbf565b91505061363d565b508091505092915050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136fc576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b61370a838383613824565b613740576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f80339050803b91505f821115613788576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b11156137d9576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6137e5611290565b61381b576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016138609291906154a8565b6020604051808303815f875af115801561387c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138a091906150ce565b90509392505050565b6040518060a001604052805f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581525090565b6040518061012001604052805f6bffffffffffffffffffffffff1681526020015f61ffff1681526020015f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81525090565b6040518060a001604052805f61ffff168152602001606081526020015f81526020015f81526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61399c8161398a565b81146139a6575f80fd5b50565b5f813590506139b781613993565b92915050565b5f602082840312156139d2576139d1613982565b5b5f6139df848285016139a9565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b613a08816139e8565b82525050565b613a178161398a565b82525050565b5f8115159050919050565b613a3181613a1d565b82525050565b60a082015f820151613a4b5f8501826139ff565b506020820151613a5e6020850182613a0e565b506040820151613a716040850182613a0e565b506060820151613a846060850182613a0e565b506080820151613a976080850182613a28565b50505050565b5f60a082019050613ab05f830184613a37565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613af8613af3613aee84613ab6565b613ad5565b613ab6565b9050919050565b5f613b0982613ade565b9050919050565b5f613b1a82613aff565b9050919050565b613b2a81613b10565b82525050565b5f602082019050613b435f830184613b21565b92915050565b613b52816139e8565b82525050565b5f602082019050613b6b5f830184613b49565b92915050565b613b7a816139e8565b8114613b84575f80fd5b50565b5f81359050613b9581613b71565b92915050565b5f60208284031215613bb057613baf613982565b5b5f613bbd84828501613b87565b91505092915050565b5f61ffff82169050919050565b613bdc81613bc6565b8114613be6575f80fd5b50565b5f81359050613bf781613bd3565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c4b82613c05565b810181811067ffffffffffffffff82111715613c6a57613c69613c15565b5b80604052505050565b5f613c7c613979565b9050613c888282613c42565b919050565b5f67ffffffffffffffff821115613ca757613ca6613c15565b5b613cb082613c05565b9050602081019050919050565b828183375f83830152505050565b5f613cdd613cd884613c8d565b613c73565b905082815260208101848484011115613cf957613cf8613c01565b5b613d04848285613cbd565b509392505050565b5f82601f830112613d2057613d1f613bfd565b5b8135613d30848260208601613ccb565b91505092915050565b613d4281613a1d565b8114613d4c575f80fd5b50565b5f81359050613d5d81613d39565b92915050565b5f805f805f60a08688031215613d7c57613d7b613982565b5b5f613d8988828901613be9565b955050602086013567ffffffffffffffff811115613daa57613da9613986565b5b613db688828901613d0c565b9450506040613dc7888289016139a9565b9350506060613dd8888289016139a9565b9250506080613de988828901613d4f565b9150509295509295909350565b5f80fd5b5f80fd5b5f8083601f840112613e1357613e12613bfd565b5b8235905067ffffffffffffffff811115613e3057613e2f613df6565b5b602083019150836020820283011115613e4c57613e4b613dfa565b5b9250929050565b5f8083601f840112613e6857613e67613bfd565b5b8235905067ffffffffffffffff811115613e8557613e84613df6565b5b602083019150836020820283011115613ea157613ea0613dfa565b5b9250929050565b5f8083601f840112613ebd57613ebc613bfd565b5b8235905067ffffffffffffffff811115613eda57613ed9613df6565b5b602083019150836020820283011115613ef657613ef5613dfa565b5b9250929050565b5f805f805f805f805f8060a08b8d031215613f1b57613f1a613982565b5b5f8b013567ffffffffffffffff811115613f3857613f37613986565b5b613f448d828e01613dfe565b9a509a505060208b013567ffffffffffffffff811115613f6757613f66613986565b5b613f738d828e01613e53565b985098505060408b013567ffffffffffffffff811115613f9657613f95613986565b5b613fa28d828e01613dfe565b965096505060608b013567ffffffffffffffff811115613fc557613fc4613986565b5b613fd18d828e01613ea8565b945094505060808b013567ffffffffffffffff811115613ff457613ff3613986565b5b6140008d828e01613ea8565b92509250509295989b9194979a5092959850565b61401d81613a1d565b82525050565b5f6020820190506140365f830184614014565b92915050565b5f806040838503121561405257614051613982565b5b5f61405f85828601613b87565b925050602061407085828601613b87565b9150509250929050565b61408381613bc6565b82525050565b5f60208201905061409c5f83018461407a565b92915050565b5f6140ac82613ab6565b9050919050565b6140bc816140a2565b82525050565b5f6020820190506140d55f8301846140b3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61410d81613bc6565b82525050565b61012082015f8201516141285f8501826139ff565b50602082015161413b6020850182614104565b50604082015161414e60408501826139ff565b5060608201516141616060850182613a0e565b5060808201516141746080850182613a0e565b5060a082015161418760a0850182613a0e565b5060c082015161419a60c0850182613a28565b5060e08201516141ad60e0850182613a0e565b506101008201516141c2610100850182613a0e565b50505050565b5f6141d38383614113565b6101208301905092915050565b5f602082019050919050565b5f6141f6826140db565b61420081856140e5565b935061420b836140f5565b805f5b8381101561423b57815161422288826141c8565b975061422d836141e0565b92505060018101905061420e565b5085935050505092915050565b5f6020820190508181035f83015261426081846141ec565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61429c83836139ff565b60208301905092915050565b5f602082019050919050565b5f6142be82614268565b6142c88185614272565b93506142d383614282565b805f5b838110156143035781516142ea8882614291565b97506142f5836142a8565b9250506001810190506142d6565b5085935050505092915050565b5f6020820190508181035f83015261432881846142b4565b905092915050565b5f806040838503121561434657614345613982565b5b5f61435385828601613b87565b925050602061436485828601613be9565b9150509250929050565b5f805f6060848603121561438557614384613982565b5b5f84013567ffffffffffffffff8111156143a2576143a1613986565b5b6143ae86828701613d0c565b93505060206143bf868287016139a9565b92505060406143d0868287016139a9565b9150509250925092565b5f6143e482613aff565b9050919050565b6143f4816143da565b82525050565b5f60208201905061440d5f8301846143eb565b92915050565b61012082015f8201516144285f8501826139ff565b50602082015161443b6020850182614104565b50604082015161444e60408501826139ff565b5060608201516144616060850182613a0e565b5060808201516144746080850182613a0e565b5060a082015161448760a0850182613a0e565b5060c082015161449a60c0850182613a28565b5060e08201516144ad60e0850182613a0e565b506101008201516144c2610100850182613a0e565b50505050565b5f610120820190506144dc5f830184614413565b92915050565b6144eb8161398a565b82525050565b5f6020820190506145045f8301846144e2565b92915050565b5f6020828403121561451f5761451e613982565b5b5f61452c84828501613be9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561456c578082015181840152602081019050614551565b5f8484015250505050565b5f61458182614535565b61458b818561453f565b935061459b81856020860161454f565b6145a481613c05565b840191505092915050565b5f60a083015f8301516145c45f860182614104565b50602083015184820360208601526145dc8282614577565b91505060408301516145f16040860182613a0e565b5060608301516146046060860182613a0e565b5060808301516146176080860182613a28565b508091505092915050565b5f6020820190508181035f83015261463a81846145af565b905092915050565b61464b816140a2565b8114614655575f80fd5b50565b5f8135905061466681614642565b92915050565b60068110614678575f80fd5b50565b5f813590506146898161466c565b92915050565b5f80604083850312156146a5576146a4613982565b5b5f6146b285828601614658565b92505060206146c38582860161467b565b9150509250929050565b5f8083601f8401126146e2576146e1613bfd565b5b8235905067ffffffffffffffff8111156146ff576146fe613df6565b5b6020830191508360a082028301111561471b5761471a613dfa565b5b9250929050565b5f806020838503121561473857614737613982565b5b5f83013567ffffffffffffffff81111561475557614754613986565b5b614761858286016146cd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f60a083015f8301516147ab5f860182614104565b50602083015184820360208601526147c38282614577565b91505060408301516147d86040860182613a0e565b5060608301516147eb6060860182613a0e565b5060808301516147fe6080860182613a28565b508091505092915050565b5f6148148383614796565b905092915050565b5f602082019050919050565b5f6148328261476d565b61483c8185614777565b93508360208202850161484e85614787565b805f5b85811015614889578484038952815161486a8582614809565b94506148758361481c565b925060208a01995050600181019050614851565b50829750879550505050505092915050565b5f6020820190508181035f8301526148b38184614828565b905092915050565b5f6148c582613aff565b9050919050565b6148d5816148bb565b82525050565b5f6020820190506148ee5f8301846148cc565b92915050565b5f6020828403121561490957614908613982565b5b5f61491684828501614658565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614956826139e8565b9150614961836139e8565b925082820390506bffffffffffffffffffffffff8111156149855761498461491f565b5b92915050565b5f614995826139e8565b91506bffffffffffffffffffffffff82036149b3576149b261491f565b5b600182019050919050565b5f6149c8826139e8565b91506149d3836139e8565b925082820190506bffffffffffffffffffffffff8111156149f7576149f661491f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a4157607f821691505b602082108103614a5457614a536149fd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614ab67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a7b565b614ac08683614a7b565b95508019841693508086168417925050509392505050565b5f614af2614aed614ae88461398a565b613ad5565b61398a565b9050919050565b5f819050919050565b614b0b83614ad8565b614b1f614b1782614af9565b848454614a87565b825550505050565b5f90565b614b33614b27565b614b3e818484614b02565b505050565b5b81811015614b6157614b565f82614b2b565b600181019050614b44565b5050565b601f821115614ba657614b7781614a5a565b614b8084614a6c565b81016020851015614b8f578190505b614ba3614b9b85614a6c565b830182614b43565b50505b505050565b5f82821c905092915050565b5f614bc65f1984600802614bab565b1980831691505092915050565b5f614bde8383614bb7565b9150826002028217905092915050565b614bf782614535565b67ffffffffffffffff811115614c1057614c0f613c15565b5b614c1a8254614a2a565b614c25828285614b65565b5f60209050601f831160018114614c56575f8415614c44578287015190505b614c4e8582614bd3565b865550614cb5565b601f198416614c6486614a5a565b5f5b82811015614c8b57848901518255600182019150602085019450602081019050614c66565b86831015614ca85784890151614ca4601f891682614bb7565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614d218261398a565b9150614d2c8361398a565b925082614d3c57614d3b614cea565b5b828204905092915050565b5f614d518261398a565b9150614d5c8361398a565b9250828201905080821115614d7457614d7361491f565b5b92915050565b5f614d94614d8f614d8a846139e8565b613ad5565b61398a565b9050919050565b614da481614d7a565b82525050565b5f602082019050614dbd5f830184614d9b565b92915050565b5f81519050614dd181614642565b92915050565b5f60208284031215614dec57614deb613982565b5b5f614df984828501614dc3565b91505092915050565b5f81519050614e1081613b71565b92915050565b5f60208284031215614e2b57614e2a613982565b5b5f614e3884828501614e02565b91505092915050565b5f81519050614e4f81613993565b92915050565b5f60208284031215614e6a57614e69613982565b5b5f614e7784828501614e41565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110614ebe57614ebd614e80565b5b50565b5f819050614ece82614ead565b919050565b5f614edd82614ec1565b9050919050565b614eed81614ed3565b82525050565b60038110614f0457614f03614e80565b5b50565b5f819050614f1482614ef3565b919050565b5f614f2382614f07565b9050919050565b614f3381614f19565b82525050565b5f60c082019050614f4c5f8301896140b3565b614f5960208301886140b3565b614f666040830187613b49565b614f7360608301866144e2565b614f806080830185614ee4565b614f8d60a0830184614f2a565b979650505050505050565b5f604082019050614fab5f830185613b49565b614fb8602083018461407a565b9392505050565b5f614fc982613bc6565b915061ffff8203614fdd57614fdc61491f565b5b600182019050919050565b5f82825260208201905092915050565b5f61500282614535565b61500c8185614fe8565b935061501c81856020860161454f565b61502581613c05565b840191505092915050565b5f6060820190508181035f8301526150488186614ff8565b905061505760208301856144e2565b61506460408301846144e2565b949350505050565b5f60408201905061507f5f830185613b49565b61508c6020830184613b49565b9392505050565b5f6040820190506150a65f8301856144e2565b6150b360208301846144e2565b9392505050565b5f815190506150c881613d39565b92915050565b5f602082840312156150e3576150e2613982565b5b5f6150f0848285016150ba565b91505092915050565b5f60408201905061510c5f830185614014565b61511960208301846144e2565b9392505050565b5f813561512c81613b71565b80915050919050565b5f815f1b9050919050565b5f6bffffffffffffffffffffffff61515784615135565b9350801983169250808416831791505092915050565b5f61518761518261517d846139e8565b613ad5565b6139e8565b9050919050565b5f819050919050565b6151a08261516d565b6151b36151ac8261518e565b8354615140565b8255505050565b5f81356151c681613993565b80915050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6151fa84615135565b9350801983169250808416831791505092915050565b61521982614ad8565b61522c61522582614af9565b83546151cf565b8255505050565b5f813561523f81613d39565b80915050919050565b5f60ff61525484615135565b9350801983169250808416831791505092915050565b5f61527482613a1d565b9050919050565b5f819050919050565b61528d8261526a565b6152a06152998261527b565b8354615248565b8255505050565b5f81015f8301806152b781615120565b90506152c38184615197565b5050506001810160208301806152d8816151ba565b90506152e48184615210565b5050506002810160408301806152f9816151ba565b90506153058184615210565b50505060038101606083018061531a816151ba565b90506153268184615210565b50505060048101608083018061533b81615233565b90506153478184615284565b5050505050565b61535882826152a7565b5050565b5f6020828403121561537157615370613982565b5b5f61537e84828501613d4f565b91505092915050565b5f80fd5b5f8151905061539981613bd3565b92915050565b5f61012082840312156153b5576153b4615387565b5b6153c0610120613c73565b90505f6153cf84828501614e02565b5f8301525060206153e28482850161538b565b60208301525060406153f684828501614e02565b604083015250606061540a84828501614e41565b606083015250608061541e84828501614e41565b60808301525060a061543284828501614e41565b60a08301525060c0615446848285016150ba565b60c08301525060e061545a84828501614e41565b60e08301525061010061546f84828501614e41565b6101008301525092915050565b5f610120828403121561549257615491613982565b5b5f61549f8482850161539f565b91505092915050565b5f6040820190506154bb5f8301856140b3565b81810360208301526154cd8184614ff8565b9050939250505056fea2646970667358221220357d4313b066199667596457760ba7f2029bf0fa1cfcfa49dde061a8662cca9464736f6c63430008180033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb25394909000000000000000000000000a784aa9d9ca760a1d7973c3ad902c1d0052581dd0000000000000000000000000ac38e7334b0f14053963f4ebe2db463351c96ad000000000000000000000000eeef0f55712c709cbaf17f98df88aeba7a3c298c00000000000000000000000023ac7b402681e84dd5af47829ef07d5842878a620000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d0000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99