0 txs
1.4k calls
constructor
constructor()
functions
bonusMultiplier
viewfunction bonusMultiplier() view returns (uint256)
claim
viewfunction claim() view returns (address)
currentMultiplier
viewfunction currentMultiplier() view returns (uint256 multiplier)
currentSeason
viewfunction currentSeason() view returns (uint256)
getBasePoints
viewfunction getBasePoints(uint256 season, address user) view returns (uint256)
getErc20Balance
viewfunction getErc20Balance(address user) view returns (uint256)
getErc20Balance
viewfunction getErc20Balance(uint256 season, address user) view returns (uint256)
getMultiplier
viewfunction getMultiplier(address user) view returns (uint256)
getMultiplier
viewfunction getMultiplier(uint256 season, address user) view returns (uint256)
getPointsBalance
viewfunction getPointsBalance(address user) view returns (uint256)
getPointsBalance
viewfunction getPointsBalance(uint256 season, address user) view returns (uint256)
owner
viewfunction owner() view returns (address)
packedStartDateAndMaxMultiplier
viewfunction packedStartDateAndMaxMultiplier() view returns (uint256)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
seasonIdToUserToStakeInfo
viewfunction seasonIdToUserToStakeInfo(uint256 seasonId, address userWallet) view returns (uint256 erc20balance, uint256 erc20initial, uint256 accumulatedPoints, uint64 lastUpdatedTime, uint16 multiplier)
seasonInfo
viewfunction seasonInfo(uint256 seasonId) view returns (uint256 startDate, uint256 endDate, uint256 startingMultiplier, uint256 seasonAbsoluteMax, uint256 maximumGrowthMultiplier, uint256 claimMultiplier, uint256 weeklyMultiplierIncrement, address claimContract)
shopContract
viewfunction shopContract() view returns (address)
token
viewfunction token() view returns (address)
users
viewfunction users(address) view returns (uint256 erc20balance, uint256 erc20initial, uint256 accumulatedPoints, uint64 lastUpdatedTime, uint16 multiplier)
acceptOwnership
nonpayablefunction acceptOwnership()
claimAndDeposit
nonpayablefunction claimAndDeposit(uint256 index, uint256 amount, bytes32[] merkleProof)
claimAndDeposit
nonpayablefunction claimAndDeposit(uint256 season, uint256 index, uint256 amount, bytes32[] merkleProof)
claimAndDepositPermit
nonpayablefunction claimAndDepositPermit(uint256 index, uint256 amount, uint256 permitAmount, bytes32[] merkleProof, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
claimAndDepositSeasonPermit
nonpayablefunction claimAndDepositSeasonPermit(uint256 season, uint256 index, uint256 amount, uint256 permitAmount, bytes32[] merkleProof, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
deposit
nonpayablefunction deposit(uint256 amount)
depositPermit
nonpayablefunction depositPermit(uint256 amount, uint256 permitAmount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
initialize
nonpayablefunction initialize(address _token, address _claim)
pause
nonpayablefunction pause()
purchase
nonpayablefunction purchase(uint256[] skuEntities, uint256[] quantities)
renounceOwnership
nonpayablefunction renounceOwnership()
setBonusMultiplier
nonpayablefunction setBonusMultiplier(uint256 _bonusMultiplier)
setCurrentSeason
nonpayablefunction setCurrentSeason(uint256 season)
setSeasonInfo
nonpayablefunction setSeasonInfo(uint256 season, uint256 startDate, uint256 endDate, uint256 startingMultiplier, uint256 seasonAbsoluteMax, uint256 maximumGrowthMultiplier, uint256 claimMultiplier, uint256 weeklyMultiplierIncrement, address claimContract)
setShopContract
nonpayablefunction setShopContract(address _shopContract)
setStartDateAndMaxMultiplier
nonpayablefunction setStartDateAndMaxMultiplier(uint64 _startDate, uint192 _maxMultiplier)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 amount)
events
Deposit
event Deposit(address indexed user, uint256 amount, uint256 multiplier)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed user, uint256 amount, uint256 multiplier)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
IncorrectAmount
error IncorrectAmount()
InsufficientBalance
error InsufficientBalance()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
InvalidMultiplier
error InvalidMultiplier()
InvalidPurchase
error InvalidPurchase()
InvalidPurchaseContract
error InvalidPurchaseContract()
InvalidSeason
error InvalidSeason()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612793806100d65f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80638456cb5911610135578063bce2ff70116100b4578063e30c397811610079578063e30c3978146105d4578063e707f36f146105dc578063f2fde38b146105ef578063fc0c546a14610602578063fd58e63a14610615575f80fd5b8063bce2ff7014610575578063c18a5f3614610588578063cc42010b1461059b578063dc3de811146105ae578063dcbf5343146105c1575f80fd5b8063a87430ba116100fa578063a87430ba146104f3578063a8b973a11461053d578063a9d637e114610546578063b6b55f2514610559578063bcb396211461056c575f80fd5b80638456cb591461043357806386f3b23d1461043b5780638da5cb5b1461044e578063983f511214610456578063a122ce7d146104e0575f80fd5b8063485cc955116101c15780636fbaaa1e116101865780636fbaaa1e146103f5578063715018a6146103fd57806379ba5097146104055780637af973c71461040d5780637f80f9c314610420575f80fd5b8063485cc955146103875780634e71d92d1461039a5780635c975abb146103ad578063668c45bd146103cf5780636ad45e55146103e2575f80fd5b80631debe503116102075780631debe5031461032f5780632e1a7d4d14610350578063362810861461036357806339e211c91461036c5780633f4ba83a1461037f575f80fd5b80630148a63414610238578063043a79261461024d57806309090a51146102f15780631aee31d01461031c575b5f80fd5b61024b61024636600461217b565b610628565b005b6102a861025b3660046121c9565b600760208190525f9182526040909120805460018201546002830154600384015460048501546005860154600687015496909701549496939592949193909290916001600160a01b031688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c08301526001600160a01b031660e0820152610100015b60405180910390f35b600554610304906001600160a01b031681565b6040516001600160a01b0390911681526020016102e8565b61024b61032a3660046121f0565b610655565b61034261033d36600461228b565b6106ee565b6040519081526020016102e8565b61024b61035e3660046121c9565b610851565b61034260035481565b61024b61037a3660046121c9565b61098d565b61024b6109ba565b61024b6103953660046122b5565b6109cc565b600254610304906001600160a01b031681565b5f8051602061273e8339815191525460ff1660405190151581526020016102e8565b61024b6103dd3660046122dd565b610b38565b61024b6103f03660046122f6565b610c57565b610342610c83565b61024b610d15565b61024b610d6a565b61024b61041b366004612351565b610daf565b61034261042e36600461228b565b610e06565b61024b610fa0565b61024b61044936600461239e565b610fb0565b61030461116a565b6104ab61046436600461228b565b600860209081525f92835260408084209091529082529020805460018201546002830154600390930154919290916001600160401b03811690600160401b900461ffff1685565b604080519586526020860194909452928401919091526001600160401b0316606083015261ffff16608082015260a0016102e8565b6103426104ee36600461228b565b61119e565b6104ab6105013660046122dd565b5f602081905290815260409020805460018201546002830154600390930154919290916001600160401b03811690600160401b900461ffff1685565b61034260045481565b6103426105543660046122dd565b611202565b61024b6105673660046121c9565b61120f565b61034260065481565b61024b6105833660046123f8565b611231565b61034261059636600461228b565b6112c9565b6103426105a93660046122dd565b6112dc565b61024b6105bc366004612488565b6112f0565b61024b6105cf3660046124d5565b611381565b6103046114a1565b6103426105ea3660046122dd565b6114c9565b61024b6105fd3660046122dd565b6114d6565b600154610304906001600160a01b031681565b61024b6106233660046121c9565b61155b565b61063061158b565b6106386115f8565b61064760065485858585611628565b61064f6116f1565b50505050565b61065d61158b565b6106656115f8565b6001546001600160a01b031663d505accf33308a888888886040518863ffffffff1660e01b815260040161069f979695949392919061253f565b5f604051808303815f87803b1580156106b6575f80fd5b505af11580156106c8573d5f803e3d5ffd5b505050506106db6006548a8a8989611628565b6106e36116f1565b505050505050505050565b5f6001831161075a5761075383610705858561171b565b6040805160a08101825282548152600183015460208201526002830154918101919091526003909101546001600160401b0381166060830152600160401b900461ffff166080820152611768565b905061084b565b5f610765848461171b565b6040805160a081018252825481526001830154602082018190526002840154928201929092526003909201546001600160401b0381166060840152600160401b900461ffff1660808301529091501515806107c257508360065414155b156107d9576107d18482611768565b91505061084b565b5f6040518060a001604052806107ee86611828565b5481525f60208083018290526040808401839052600654835260079091529020546001600160401b0316606082015260800161082986611828565b60030154600160401b900461ffff16905290506108468582611768565b925050505b92915050565b61085961158b565b6108616115f8565b805f03610881576040516334b2073960e11b815260040160405180910390fd5b5f61089460065461088f3390565b61171b565b905081815f015410156108ba57604051631e9acf1760e31b815260040160405180910390fd5b6108c333611894565b600282015580546108d5908390612594565b815560038101805467ffffffffffffffff1916426001600160401b03161790556108fd610c83565b60038201805461ffff92909216600160401b0261ffff60401b19909216919091179055610937336001546001600160a01b031690846118bc565b600381015460408051848152600160401b90920461ffff166020830152805133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56892908290030190a25061098a6116f1565b50565b610995611920565b805f036109b55760405163d40820c360e01b815260040160405180910390fd5b600655565b6109c2611920565b6109ca611952565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610a105750825b90505f826001600160401b03166001148015610a2b5750303b155b905081158015610a39575080155b15610a575760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a8157845460ff60401b1916600160401b1785555b610a8a336119b1565b610a926119c2565b610a9a6119ca565b610aa26119c2565b600180546001600160a01b03808a166001600160a01b031992831617835560028054918a16919092161790556101f44260c01b176003556032600455600655610ae96119da565b8315610b2f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b40611920565b6005546001600160a01b031615610bc85760015460055460405163095ea7b360e01b81526001600160a01b0391821660048201525f602482015291169063095ea7b3906044016020604051808303815f875af1158015610ba2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc691906125a7565b505b600580546001600160a01b0319166001600160a01b0383811691821790925560015460405163095ea7b360e01b815260048101929092525f1960248301529091169063095ea7b3906044016020604051808303815f875af1158015610c2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5391906125a7565b5050565b610c5f61158b565b610c676115f8565b610c748585858585611628565b610c7c6116f1565b5050505050565b6006545f90819060018111610cb0576003546bffffffffffffffffffffffff8116935060c01c9150610cca565b5f8181526007602052604090208054600290910154935091505b5f62015180610cd98442612594565b610ce391906125da565b9050600a810284811015610d095780850394506064851015610d0457606494505b610d0e565b606494505b5050505090565b610d1d611920565b60405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742072656e6f756e6365206f776e6572736869700000000000000060448201526064015b60405180910390fd5b3380610d746114a1565b6001600160a01b031614610da65760405163118cdaa760e01b81526001600160a01b0382166004820152602401610d61565b61098a81611a22565b610db7611920565b612710816001600160c01b03161115610de357604051631bc4bcf760e21b815260040160405180910390fd5b806001600160c01b031660c0836001600160401b0316901b176003819055505050565b5f60018311610e7c576001600160a01b0382165f9081526020818152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003909101546001600160401b0381166060830152600160401b900461ffff166080820152610753908490611a5a565b5f8381526008602090815260408083206001600160a01b0386168452909152902060010154151580610eb057508260065414155b15610f2b575f8381526008602090815260408083206001600160a01b0386168452825291829020825160a081018452815481526001820154928101929092526002810154928201929092526003909101546001600160401b0381166060830152600160401b900461ffff166080820152610753908490611a5a565b5f6040518060a00160405280610f4085611828565b5481525f60208083018290526040808401839052600654835260079091529020546001600160401b03166060820152608001610f7b85611828565b60030154600160401b900461ffff1690529050610f988482611a5a565b949350505050565b610fa8611920565b6109ca6119da565b610fb861158b565b610fc06115f8565b828114610fe0576040516329e89cc960e11b815260040160405180910390fd5b6005546001600160a01b031661100957604051636833232560e01b815260040160405180910390fd5b5f61101760065461088f3390565b905061102233611894565b600282015560038101805467ffffffffffffffff1916426001600160401b03161790556005545f9081906001600160a01b031663f3aff3fe33898989896040518663ffffffff1660e01b815260040161107f959493929190612629565b60408051808303815f875af115801561109a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be919061266c565b9150915080835f015410156110e657604051631e9acf1760e31b815260040160405180910390fd5b815f03611106576040516329e89cc960e11b815260040160405180910390fd5b8254611113908290612594565b8355600383015460408051838152600160401b90920461ffff166020830152805133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56892908290030190a250505061064f6116f1565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f6111fb836111ad858561171b565b6040805160a08101825282548152600183015460208201526002830154918101919091526003909101546001600160401b0381166060830152600160401b900461ffff166080820152611abf565b9392505050565b5f61084b6006548361119e565b61121761158b565b61121f6115f8565b611229815f611bd4565b61098a6116f1565b61123961158b565b6112416115f8565b6001546001600160a01b031663d505accf33308a888888886040518863ffffffff1660e01b815260040161127b979695949392919061253f565b5f604051808303815f87803b158015611292575f80fd5b505af11580156112a4573d5f803e3d5ffd5b505050506112b58a8a8a8989611628565b6112bd6116f1565b50505050505050505050565b5f6112d4838361171b565b549392505050565b5f6112e96006548361171b565b5492915050565b6112f861158b565b6113006115f8565b6001546001600160a01b031663d505accf333088888888886040518863ffffffff1660e01b815260040161133a979695949392919061253f565b5f604051808303815f87803b158015611351575f80fd5b505af1158015611363573d5f803e3d5ffd5b50505050611371865f611bd4565b6113796116f1565b505050505050565b611389611920565b878710801561139757508715155b80156113a257508615155b156113c05760405163d40820c360e01b815260040160405180910390fd5b838510156113e15760405163d40820c360e01b815260040160405180910390fd5b838211156114025760405163d40820c360e01b815260040160405180910390fd5b60408051610100810182529889526020808a0198895289820197885260608a0196875260808a0195865260a08a0194855260c08a019384526001600160a01b0392831660e08b019081525f9b8c5260079182905291909a20985189559651600189015594516002880155925160038701559051600486015551600585015551600684015590519190920180546001600160a01b03191691909216179055565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0061118e565b5f61084b60065483610e06565b6114de611920565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561152261116a565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611563611920565b6103e881111561158657604051631bc4bcf760e21b815260040160405180910390fd5b600455565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156115cb57604051633ee5aeb560e01b815260040160405180910390fd5b6109ca60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90611e67565b5f8051602061273e8339815191525460ff16156109ca5760405163d93c066560e01b815260040160405180910390fd5b60065485111561164b5760405163d40820c360e01b815260040160405180910390fd5b5f85815260076020819052604090912001546001600160a01b0316632e7ba6ef85338686866040518663ffffffff1660e01b815260040161169095949392919061268e565b5f604051808303815f87803b1580156116a7575f80fd5b505af11580156116b9573d5f803e3d5ffd5b5050505084600654036116e7575f858152600760205260409020600501546116e2908490611bd4565b610c7c565b610c7c835f611bd4565b6109ca5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006115f2565b5f6001831161174157506001600160a01b0381165f90815260208190526040902061084b565b505f9182526008602090815260408084206001600160a01b03939093168452919052902090565b5f82815260076020526040812060010154819080820361178a5742915061179c565b8042106117975780611799565b425b91505b5f84606001516001600160401b031683116117b7575f6117cf565b60608501516117cf906001600160401b031684612594565b9050600186116117fe578451610e10906117ea9083906126c6565b6117f491906125da565b935050505061084b565b60408501518551610e10906118149084906126c6565b61181e91906125da565b6117f491906126dd565b5f60065460020361184d57506001600160a01b03165f90815260208190526040902090565b60085f600160065461185f9190612594565b81526020019081526020015f205f836001600160a01b03166001600160a01b031681526020019081526020015f209050919050565b5f6001600654116118ab5761084b60065483610e06565b61084b600654836106ee565b919050565b6040516001600160a01b0383811660248301526044820183905261191b91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611e6e565b505050565b3361192961116a565b6001600160a01b0316146109ca5760405163118cdaa760e01b8152336004820152602401610d61565b61195a611ecf565b5f8051602061273e833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6119b9611efe565b61098a81611f47565b6109ca611efe565b6119d2611efe565b6109ca611f78565b6119e26115f8565b5f8051602061273e833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611993565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610c5382611f98565b5f60018311611a955781604001516064611a748585611abf565b611a7e8686611768565b0281611a8c57611a8c6125c6565b0401905061084b565b6064611aa18484611abf565b611aab8585611768565b611ab591906126c6565b61075391906125da565b5f60018311611ad75750608081015161ffff1661084b565b5f83815260076020526040902060040154608083015161ffff16101580611afd57508151155b15611b115750608081015161ffff1661084b565b60808201515f848152600760205260408120600401549091611b399161ffff90911690612594565b5f85815260076020526040812060010154919250819003611b575750425b5f85815260076020526040812060060154606086015162093a8090611b85906001600160401b031685612594565b611b8f91906125da565b611b9991906126c6565b9050828110611bb65782856080015161ffff166117f491906126dd565b80856080015161ffff16611bca91906126dd565b9695505050505050565b815f03611bf4576040516334b2073960e11b815260040160405180910390fd5b611c0c336001546001600160a01b0316903085612008565b6006545f611c1a823361171b565b9050611c2533611894565b60028201558054611c379085906126dd565b815560038101805467ffffffffffffffff1916426001600160401b031617905560018101545f03611ce7576001821115611cd4575f611c77600184612594565b90505b8015611cd2575f611c8b823361171b565b600181015490915015611cbf578054611ca59087906126dd565b60018401558054611cb79087906126dd565b835550611cd2565b5080611cca816126f0565b915050611c7a565b505b80600101545f03611ce757600181018490555b6003810154600160401b900461ffff165f03611d5f575f6001831115611d2257611d1033611828565b60030154600160401b900461ffff1690505b611d2a610c83565b8111611d3d57611d38610c83565b611d3f565b805b8260030160086101000a81548161ffff021916908361ffff160217905550505b8215611d9f576003810154611d80908490600160401b900461ffff16612705565b8160030160086101000a81548161ffff021916908361ffff1602179055505b5f8281526007602052604090206003015415801590611ddd57505f82815260076020526040902060039081015490820154600160401b900461ffff16115b15611e17575f828152600760205260409020600390810154908201805461ffff909216600160401b0261ffff60401b199092169190911790555b600381015460408051868152600160401b90920461ffff166020830152805133927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1592908290030190a250505050565b80825d5050565b5f611e826001600160a01b03841683612041565b905080515f14158015611ea6575080806020019051810190611ea491906125a7565b155b1561191b57604051635274afe760e01b81526001600160a01b0384166004820152602401610d61565b5f8051602061273e8339815191525460ff166109ca57604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109ca57604051631afcd79f60e31b815260040160405180910390fd5b611f4f611efe565b6001600160a01b038116610da657604051631e4fbdf760e01b81525f6004820152602401610d61565b611f80611efe565b5f8051602061273e833981519152805460ff19169055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261064f9186918216906323b872dd906084016118e9565b60606111fb83835f845f80856001600160a01b031684866040516120659190612727565b5f6040518083038185875af1925050503d805f811461209f576040519150601f19603f3d011682016040523d82523d5f602084013e6120a4565b606091505b5091509150611bca8683836060826120c4576120bf8261210b565b6111fb565b81511580156120db57506001600160a01b0384163b155b1561210457604051639996b31560e01b81526001600160a01b0385166004820152602401610d61565b50806111fb565b80511561211b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083601f840112612144575f80fd5b5081356001600160401b0381111561215a575f80fd5b6020830191508360208260051b8501011115612174575f80fd5b9250929050565b5f805f806060858703121561218e575f80fd5b843593506020850135925060408501356001600160401b038111156121b1575f80fd5b6121bd87828801612134565b95989497509550505050565b5f602082840312156121d9575f80fd5b5035919050565b803560ff811681146118b7575f80fd5b5f805f805f805f805f6101008a8c031215612209575f80fd5b8935985060208a0135975060408a0135965060608a01356001600160401b03811115612233575f80fd5b61223f8c828d01612134565b90975095505060808a0135935061225860a08b016121e0565b925060c08a0135915060e08a013590509295985092959850929598565b80356001600160a01b03811681146118b7575f80fd5b5f806040838503121561229c575f80fd5b823591506122ac60208401612275565b90509250929050565b5f80604083850312156122c6575f80fd5b6122cf83612275565b91506122ac60208401612275565b5f602082840312156122ed575f80fd5b6111fb82612275565b5f805f805f6080868803121561230a575f80fd5b85359450602086013593506040860135925060608601356001600160401b03811115612334575f80fd5b61234088828901612134565b969995985093965092949392505050565b5f8060408385031215612362575f80fd5b82356001600160401b0381168114612378575f80fd5b915060208301356001600160c01b0381168114612393575f80fd5b809150509250929050565b5f805f80604085870312156123b1575f80fd5b84356001600160401b03808211156123c7575f80fd5b6123d388838901612134565b909650945060208701359150808211156123eb575f80fd5b506121bd87828801612134565b5f805f805f805f805f806101208b8d031215612412575f80fd5b8a35995060208b0135985060408b0135975060608b0135965060808b01356001600160401b03811115612443575f80fd5b61244f8d828e01612134565b90975095505060a08b0135935061246860c08c016121e0565b925060e08b013591506101008b013590509295989b9194979a5092959850565b5f805f805f8060c0878903121561249d575f80fd5b8635955060208701359450604087013593506124bb606088016121e0565b92506080870135915060a087013590509295509295509295565b5f805f805f805f805f6101208a8c0312156124ee575f80fd5b8935985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013591506125306101008b01612275565b90509295985092959850929598565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561084b5761084b612580565b5f602082840312156125b7575f80fd5b815180151581146111fb575f80fd5b634e487b7160e01b5f52601260045260245ffd5b5f826125f457634e487b7160e01b5f52601260045260245ffd5b500490565b8183525f6001600160fb1b03831115612610575f80fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03861681526060602082018190525f9061264d90830186886125f9565b82810360408401526126608185876125f9565b98975050505050505050565b5f806040838503121561267d575f80fd5b505080516020909101519092909150565b85815260018060a01b0385166020820152836040820152608060608201525f6126bb6080830184866125f9565b979650505050505050565b808202811582820484141761084b5761084b612580565b8082018082111561084b5761084b612580565b5f816126fe576126fe612580565b505f190190565b61ffff81811683821601908082111561272057612720612580565b5092915050565b5f82518060208501845e5f92019182525091905056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220362cd24a3ee347d3e217e5907b2f49d1e8b1465b64bbd44d72c8a1b4d12f852964736f6c63430008190033