533 txs
510 calls
constructor
constructor(address _usdc, address _referralWallet, address _stakingRewardsWallet, address _activeUsersWallet, (address wallet, uint256 weight)[] _initialPools)
functions
activeUsersWallet
viewfunction activeUsersWallet() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
checkMinimumReserve
viewfunction checkMinimumReserve(uint256 withdrawAmount) view returns (bool isAllowed, uint256 requiredReserve)
checkUSDCBalance
viewfunction checkUSDCBalance() view returns (uint256 actualBalance, uint256 recordedBalance, int256 balanceDifference, bool isExact, bool isSufficient)
decimals
viewfunction decimals() view returns (uint8)
EMERGENCY_COOLDOWN
viewfunction EMERGENCY_COOLDOWN() view returns (uint256)
EMERGENCY_MAX_PERCENT
viewfunction EMERGENCY_MAX_PERCENT() view returns (uint256)
getCurrentPrice
viewfunction getCurrentPrice() view returns (uint256)
getPoolsCount
viewfunction getPoolsCount() view returns (uint256)
getUSDCDecimals
viewfunction getUSDCDecimals() view returns (uint8 tokenDecimals)
initialPrice
viewfunction initialPrice() view returns (uint256)
lastEmergencyWithdraw
viewfunction lastEmergencyWithdraw() view returns (uint256)
MAX_PARTS
viewfunction MAX_PARTS() view returns (uint256)
MAX_POOL_WEIGHT
viewfunction MAX_POOL_WEIGHT() view returns (uint256)
MAX_POOLS
viewfunction MAX_POOLS() view returns (uint256)
MIN_RESERVE_RATIO
viewfunction MIN_RESERVE_RATIO() view returns (uint256)
minPartSize
viewfunction minPartSize() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
pools
viewfunction pools(uint256) view returns (address wallet, uint256 weight)
referralWallet
viewfunction referralWallet() view returns (address)
stakingRewardsWallet
viewfunction stakingRewardsWallet() view returns (address)
symbol
viewfunction symbol() view returns (string)
TIMELOCK_DELAY
viewfunction TIMELOCK_DELAY() view returns (uint256)
timelockExecutions
viewfunction timelockExecutions(bytes32) view returns (uint256)
totalPoolWeight
viewfunction totalPoolWeight() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalUSDC
viewfunction totalUSDC() view returns (uint256)
usdcDecimals
viewfunction usdcDecimals() view returns (uint8)
usdcToken
viewfunction usdcToken() view returns (address)
addPool
nonpayablefunction addPool(address wallet, uint256 weight)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
buyWithUSDC
nonpayablefunction buyWithUSDC(uint256 usdcAmount)
emergencyWithdrawImmediateUSDC
nonpayablefunction emergencyWithdrawImmediateUSDC(uint256 amount, string reason)
emergencyWithdrawUSDC
nonpayablefunction emergencyWithdrawUSDC(uint256 amount, bool burnTokens)
renounceOwnership
nonpayablefunction renounceOwnership()
sellForUSDC
nonpayablefunction sellForUSDC(uint256 tokenAmount)
setActiveUsersWallet
nonpayablefunction setActiveUsersWallet(address _activeUsersWallet)
setReferralWallet
nonpayablefunction setReferralWallet(address _referralWallet)
setStakingRewardsWallet
nonpayablefunction setStakingRewardsWallet(address _stakingRewardsWallet)
syncUSDCBalance
nonpayablefunction syncUSDCBalance()
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePool
nonpayablefunction updatePool(uint256 index, address wallet, uint256 weight)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BalanceSynced
event BalanceSynced(uint256 oldBalance, uint256 newBalance)
EmergencyWithdraw
event EmergencyWithdraw(uint256 amount, bool burnTokens, uint256 tokensBurned)
MinReserveViolationPrevented
event MinReserveViolationPrevented(uint256 attemptedAmount, uint256 requiredReserve)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolAdded
event PoolAdded(address indexed wallet, uint256 weight)
PoolUpdated
event PoolUpdated(uint256 indexed index, address indexed wallet, uint256 weight)
ReferralMint
event ReferralMint(address indexed recipient, uint256 amount)
TimelockExecuted
event TimelockExecuted(bytes32 indexed operationId)
TimelockScheduled
event TimelockScheduled(bytes32 indexed operationId, uint256 executeTime)
TokensPurchased
event TokensPurchased(address indexed buyer, uint256 usdcAmount, uint256 tokensReceived)
TokensSold
event TokensSold(address indexed seller, uint256 tokensAmount, uint256 usdcReceived)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
WalletUpdated
event WalletUpdated(string walletType, address indexed newWallet)
errors
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60e060405234801561000f575f5ffd5b50604051613b71380380613b7183398101604081905261002e916106ce565b33604051806040016040528060088152602001672bb2b119a6b7b7b760c11b8152506040518060400160405280600381526020016257334d60e81b815250816003908161007b919061086e565b506004610088828261086e565b5050506001600160a01b0381166100b957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100c2816105f6565b5060016006556001600160a01b03851661011e5760405162461bcd60e51b815260206004820152601b60248201527f5553444320616464726573732063616e6e6f74206265207a65726f000000000060448201526064016100b0565b6001600160a01b0384166101745760405162461bcd60e51b815260206004820152601e60248201527f526566657272616c2077616c6c65742063616e6e6f74206265207a65726f000060448201526064016100b0565b6001600160a01b0383166101ca5760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e672077616c6c65742063616e6e6f74206265207a65726f00000060448201526064016100b0565b6001600160a01b03821661022b5760405162461bcd60e51b815260206004820152602260248201527f4163746976652075736572732077616c6c65742063616e6e6f74206265207a65604482015261726f60f01b60648201526084016100b0565b60078151111561027d5760405162461bcd60e51b815260206004820152601660248201527f546f6f206d616e7920696e697469616c20706f6f6c730000000000000000000060448201526064016100b0565b600780546001600160a01b0319166001600160a01b0387169081179091556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa9250505080156102f2575060408051601f3d908101601f191682019092526102ef91810190610928565b60015b610300576006608052610307565b60ff166080525b60805161031590600a610a48565b60a052655af3107a400060c052600b80546001600160a01b038087166001600160a01b031992831617909255600d8054868416908316179055600c8054928516929091169190911790555f5b81518110156105eb575f6001600160a01b031682828151811061038657610386610a56565b60200260200101515f01516001600160a01b0316036103e75760405162461bcd60e51b815260206004820152601a60248201527f506f6f6c2077616c6c65742063616e6e6f74206265207a65726f00000000000060448201526064016100b0565b5f8282815181106103fa576103fa610a56565b60200260200101516020015111801561043257506103e882828151811061042357610423610a56565b60200260200101516020015111155b6104985760405162461bcd60e51b815260206004820152603160248201527f506f6f6c20776569676874206d757374206265206265747765656e203120616e604482015270190813505617d413d3d317d5d15251d215607a1b60648201526084016100b0565b600e60405180604001604052808484815181106104b7576104b7610a56565b60200260200101515f01516001600160a01b031681526020018484815181106104e2576104e2610a56565b6020908102919091018101518101519091528254600180820185555f94855293829020835160029092020180546001600160a01b0319166001600160a01b03909216919091178155910151910155815182908290811061054457610544610a56565b602002602001015160200151600f5f8282546105609190610a6a565b9250508190555081818151811061057957610579610a56565b60200260200101515f01516001600160a01b03167f0c98febfffcec480c66a977e13f14bafdb5199ea9603591a0715b0cabe0c3ae28383815181106105c0576105c0610a56565b6020026020010151602001516040516105db91815260200190565b60405180910390a2600101610361565b505050505050610a7d565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b038116811461065d575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561069857610698610662565b60405290565b604051601f8201601f191681016001600160401b03811182821017156106c6576106c6610662565b604052919050565b5f5f5f5f5f60a086880312156106e2575f5ffd5b6106eb86610647565b94506106f960208701610647565b935061070760408701610647565b925061071560608701610647565b60808701519092506001600160401b03811115610730575f5ffd5b8601601f81018813610740575f5ffd5b80516001600160401b0381111561075957610759610662565b61076860208260051b0161069e565b8082825260208201915060208360061b85010192508a831115610789575f5ffd5b6020840193505b828410156107d9576040848c0312156107a7575f5ffd5b6107af610676565b6107b885610647565b81526020850151602082015280835250602082019150604084019350610790565b809450505050509295509295909350565b600181811c908216806107fe57607f821691505b60208210810361081c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561086957805f5260205f20601f840160051c810160208510156108475750805b601f840160051c820191505b81811015610866575f8155600101610853565b50505b505050565b81516001600160401b0381111561088757610887610662565b61089b8161089584546107ea565b84610822565b6020601f8211600181146108cd575f83156108b65750848201515b5f19600385901b1c1916600184901b178455610866565b5f84815260208120601f198516915b828110156108fc57878501518255602094850194600190920191016108dc565b508482101561091957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610938575f5ffd5b815160ff81168114610948575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561099e578085048111156109825761098261094f565b600184161561099057908102905b60019390931c928002610967565b935093915050565b5f826109b457506001610a42565b816109c057505f610a42565b81600181146109d657600281146109e0576109fc565b6001915050610a42565b60ff8411156109f1576109f161094f565b50506001821b610a42565b5060208310610133831016604e8410600b8410161715610a1f575081810a610a42565b610a2b5f198484610963565b805f1904821115610a3e57610a3e61094f565b0290505b92915050565b5f61094860ff8416836109a6565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610a4257610a4261094f565b60805160a05160c0516130ae610ac35f395f818161034f0152610af201525f818161060501528181611b430152611b9901525f818161043e015261049701526130ae5ff3fe608060405234801561000f575f5ffd5b5060043610610281575f3560e01c80637bf4216511610156578063aeccf735116100ca578063e1f1487411610084578063e1f14874146105ed578063e6330d4914610600578063eb91d37e14610627578063f2fde38b1461062f578063f77b860214610642578063fc8906af14610655575f5ffd5b8063aeccf7351461057f578063b4ac686014610592578063b4f1094d14610432578063d2a75cca1461059a578063d8649144146105a2578063dd62ed3e146105b5575f5ffd5b80638da5cb5b1161011b5780638da5cb5b1461050657806395652dd11461051757806395d89b411461052a578063a62e70d614610532578063a9059cbb1461053a578063ac4afa381461054d575f5ffd5b80637bf421651461049257806381358498146104b9578063819e5f06146104c157806383a30da4146104d45780638b3ceb3d146104e7575f5ffd5b806326155e53116101f857806342c7bfab116101b257806342c7bfab1461041657806358ae5b891461041f5780635ba1c1a9146104325780635cea9c3f1461043c57806370a0823114610462578063715018a61461048a575f5ffd5b806326155e5314610395578063264029f11461039e5780632db8a652146103b1578063313ce567146103db57806332a9caba146103f05780633d3c062b14610403575f5ffd5b806318160ddd1161024957806318160ddd1461030e5780631927d3a6146103165780631d0806ae1461034a5780631dec15151461037157806323b872dd1461037a57806324552f331461038d575f5ffd5b8063025590041461028557806306fdde03146102a1578063095ea7b3146102b65780630b60ad9d146102d957806311eac855146102e3575b5f5ffd5b61028e600f5481565b6040519081526020015b60405180910390f35b6102a9610668565b6040516102989190612c74565b6102c96102c4366004612ca8565b6106f8565b6040519015158152602001610298565b6102e1610711565b005b6007546102f6906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b60025461028e565b61031e6107cb565b60408051958652602086019490945292840191909152151560608301521515608082015260a001610298565b61028e7f000000000000000000000000000000000000000000000000000000000000000081565b61028e60085481565b6102c9610388366004612cd0565b610863565b61028e601481565b61028e600a5481565b6102e16103ac366004612d0a565b610886565b6103c46103bf366004612d23565b610ac8565b604080519215158352602083019190915201610298565b60125b60405160ff9091168152602001610298565b6102e16103fe366004612ca8565b610b67565b6102e1610411366004612d3a565b610e2f565b61028e6103e881565b6102e161042d366004612d5c565b611109565b61028e6201518081565b7f00000000000000000000000000000000000000000000000000000000000000006103de565b61028e610470366004612d0a565b6001600160a01b03165f9081526020819052604090205490565b6102e16114a9565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61028e600781565b6102e16104cf366004612d23565b6114bc565b600d546102f6906001600160a01b031681565b61028e6104f5366004612d23565b60096020525f908152604090205481565b6005546001600160a01b03166102f6565b6102e1610525366004612d0a565b6118bd565b6102a9611a3d565b61028e600581565b6102c9610548366004612ca8565b611a4c565b61056061055b366004612d23565b611a59565b604080516001600160a01b039093168352602083019190915201610298565b6102e161058d366004612d23565b611a8f565b600e5461028e565b61028e603281565b600c546102f6906001600160a01b031681565b61028e6105c3366004612dd3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b600b546102f6906001600160a01b031681565b61028e7f000000000000000000000000000000000000000000000000000000000000000081565b61028e611f79565b6102e161063d366004612d0a565b611fbb565b6102e1610650366004612d0a565b611ff5565b6102e1610663366004612e04565b612177565b60606003805461067790612e36565b80601f01602080910402602001604051908101604052809291908181526020018280546106a390612e36565b80156106ee5780601f106106c5576101008083540402835291602001916106ee565b820191905f5260205f20905b8154815290600101906020018083116106d157829003601f168201915b5050505050905090565b5f336107058185856125f9565b60019150505b92915050565b61071961260b565b6008546007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610762573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107869190612e6e565b600881905560408051848152602081018390529192507f728b62fcf012a8779f2bfbf29f2bcf7a2eee00b0288c97d038c56783f7776ab7910160405180910390a15050565b6007546040516370a0823160e01b81523060048201525f9182918291829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015610819573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190612e6e565b600854909550935061084f8486612e99565b925083851491508385101590509091929394565b5f33610870858285612638565b61087b8585856126ae565b506001949350505050565b61088e61260b565b604051806040016040528060148152602001731cd95d1058dd1a5d99555cd95c9cd5d85b1b195d60621b815250816040516020016108db91906001600160a01b0391909116815260200190565b6040516020818303038152906040525f82823360405160200161090093929190612ebf565b60405160208183030381529060405280519060200120905060095f8281526020019081526020015f20545f036109e85761093d6201518042612efc565b5f82815260096020526040908190208290555182917f8707ea175e75ad64eba2d8b3d6ffe47c0b47309134b4df98c6f32c4828e96b729161098091815260200190565b60405180910390a260405162461bcd60e51b815260206004820152602a60248201527f4f7065726174696f6e207363686564756c656420666f722074696d656c6f636b6044820152691032bc32b1baba34b7b760b11b60648201526084015b60405180910390fd5b5f81815260096020526040902054421015610a155760405162461bcd60e51b81526004016109df90612f0f565b5f818152600960205260408082208290555182915f5160206130395f395f51905f5291a26001600160a01b038416610a5f5760405162461bcd60e51b81526004016109df90612f46565b600c80546001600160a01b0386166001600160a01b031990911681179091556040515f5160206130595f395f51905f5290610ab9906020808252600b908201526a616374697665557365727360a81b604082015260600190565b60405180910390a25b50505050565b5f5f610ad360025490565b5f03610ae457506001925f92509050565b68056bc75e2d6310000060147f0000000000000000000000000000000000000000000000000000000000000000610b1a60025490565b610b249190612f76565b610b2e9190612f76565b610b389190612fa1565b90505f836008541015610b4b575f610b59565b83600854610b599190612fc0565b905081811015925050915091565b610b6f61260b565b60405180604001604052806007815260200166185919141bdbdb60ca1b8152508282604051602001610bb69291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040525f828233604051602001610bdb93929190612ebf565b60405160208183030381529060405280519060200120905060095f8281526020019081526020015f20545f03610c185761093d6201518042612efc565b5f81815260096020526040902054421015610c455760405162461bcd60e51b81526004016109df90612f0f565b5f818152600960205260408082208290555182915f5160206130395f395f51905f5291a26001600160a01b038516610cbf5760405162461bcd60e51b815260206004820152601a60248201527f506f6f6c2077616c6c65742063616e6e6f74206265207a65726f00000000000060448201526064016109df565b5f84118015610cd057506103e88411155b610cec5760405162461bcd60e51b81526004016109df90612fd3565b600e54600711610d3e5760405162461bcd60e51b815260206004820152601a60248201527f4d6178696d756d20706f6f6c206c696d6974207265616368656400000000000060448201526064016109df565b604080518082019091526001600160a01b03868116825260208201868152600e80546001810182555f91825293517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd600290950294850180546001600160a01b0319169190941617909255517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe90920191909155600f8054869290610de4908490612efc565b90915550506040518481526001600160a01b038616907f0c98febfffcec480c66a977e13f14bafdb5199ea9603591a0715b0cabe0c3ae2906020015b60405180910390a25050505050565b610e3761260b565b6040518060400160405280600a8152602001691d5c19185d19541bdbdb60b21b815250838383604051602001610e89939291909283526001600160a01b03919091166020830152604082015260600190565b6040516020818303038152906040525f828233604051602001610eae93929190612ebf565b60405160208183030381529060405280519060200120905060095f8281526020019081526020015f20545f03610eeb5761093d6201518042612efc565b5f81815260096020526040902054421015610f185760405162461bcd60e51b81526004016109df90612f0f565b5f818152600960205260408082208290555182915f5160206130395f395f51905f5291a2600e548610610f8d5760405162461bcd60e51b815260206004820152601860248201527f506f6f6c20696e646578206f7574206f6620626f756e6473000000000000000060448201526064016109df565b6001600160a01b038516610fe35760405162461bcd60e51b815260206004820152601a60248201527f506f6f6c2077616c6c65742063616e6e6f74206265207a65726f00000000000060448201526064016109df565b5f84118015610ff457506103e88411155b6110105760405162461bcd60e51b81526004016109df90612fd3565b83600e878154811061102457611024613024565b905f5260205f20906002020160010154600f546110419190612fc0565b61104b9190612efc565b600f8190555084600e878154811061106557611065613024565b905f5260205f2090600202015f015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600e87815481106110aa576110aa613024565b905f5260205f20906002020160010181905550846001600160a01b0316867f38f3af61f758d04b38c6c0cfad1e65405e35c75c08aedf78bc5e708367ef07fe866040516110f991815260200190565b60405180910390a3505050505050565b61111161260b565b6005546001600160a01b0316331461116b5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206f776e65722063616e206279706173732074696d656c6f636b000060448201526064016109df565b600a81116111cc5760405162461bcd60e51b815260206004820152602860248201527f456d657267656e637920726561736f6e20726571756972656420286d696e2031604482015267302063686172732960c01b60648201526084016109df565b62015180600a546111dd9190612efc565b42101561123a5760405162461bcd60e51b815260206004820152602560248201527f456d657267656e637920636f6f6c646f776e20706572696f64206e6f742065786044820152641c1a5c995960da1b60648201526084016109df565b6064600560085461124b9190612f76565b6112559190612fa1565b8311156112b55760405162461bcd60e51b815260206004820152602860248201527f456d657267656e6379207769746864726177206c696d6974656420746f203525604482015267081bd9881c1bdbdb60c21b60648201526084016109df565b6007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131f9190612e6e565b90508084111561136d5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420555344432062616c616e636560381b60448201526064016109df565b5f61137785610ac8565b509050806113df5760405162461bcd60e51b815260206004820152602f60248201527f576f756c642076696f6c617465206d696e696d756d207265736572766520657660448201526e656e20696e20656d657267656e637960881b60648201526084016109df565b42600a5561140b6113f86005546001600160a01b031690565b6007546001600160a01b0316908761270b565b8460085f82825461141c9190612fc0565b9091555050604080518681525f602082018190528183015290517f65cde4fd4405e378ff42a814651da3699e51a61f0f90469c5e99b8c7779bcf399181900360600190a15f6001600160a01b03165f5160206130595f395f51905f52604051610e209060208082526010908201526f32b6b2b933b2b731bcafb932b0b9b7b760811b604082015260600190565b6114b161260b565b6114ba5f61276a565b565b6114c46127bb565b5f81116115135760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109df565b335f908152602081905260409020548111156115645760405162461bcd60e51b815260206004820152601060248201526f496e73756666696369656e742057334d60801b60448201526064016109df565b5f61156d611f79565b90505f68056bc75e2d631000008261158685605c612f76565b6115909190612f76565b61159a9190612fa1565b90508060085410156115ee5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e74205553444320696e20706f6f6c0000000000000060448201526064016109df565b6007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611634573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116589190612e6e565b9050818110156116aa5760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742061637475616c20555344432062616c616e636560448201526064016109df565b5f6103e86116b9866019612f76565b6116c39190612fa1565b90505f6103e86116d4876014612f76565b6116de9190612fa1565b90505f6103e86116ef886005612f76565b6116f99190612fa1565b905061170533886127e5565b600f5415611797575f5b600e54811015611795575f600f54600e838154811061173057611730613024565b905f5260205f209060020201600101548661174b9190612f76565b6117559190612fa1565b905061178c600e838154811061176d5761176d613024565b5f9182526020909120600290910201546001600160a01b03168261281d565b5060010161170f565b505b600b546001600160a01b0316158015906117b057505f82115b1561180e57600b546117cb906001600160a01b03168361281d565b600b546040518381526001600160a01b03909116907f0f3e65a9d1a67d76ecee1ea7cc4ede36add6a38c8fb28cf63aeef9c2bc4161639060200160405180910390a25b600c546001600160a01b03161580159061182757505f81115b1561184257600c54611842906001600160a01b03168261281d565b8460085f8282546118539190612fc0565b909155505060075461186f906001600160a01b0316338761270b565b604080518881526020810187905233917f2dcf9433d75db0d8b1c172641f85e319ffe4ad22e108a95d1847ceb906e5195d910160405180910390a25050505050506118ba6001600655565b50565b6118c561260b565b6040518060400160405280601081526020016f1cd95d14dd185ada5b99d5d85b1b195d60821b8152508160405160200161190e91906001600160a01b0391909116815260200190565b6040516020818303038152906040525f82823360405160200161193393929190612ebf565b60405160208183030381529060405280519060200120905060095f8281526020019081526020015f20545f036119705761093d6201518042612efc565b5f8181526009602052604090205442101561199d5760405162461bcd60e51b81526004016109df90612f0f565b5f818152600960205260408082208290555182915f5160206130395f395f51905f5291a26001600160a01b0384166119e75760405162461bcd60e51b81526004016109df90612f46565b600d80546001600160a01b0386166001600160a01b031990911681179091556040515f5160206130595f395f51905f5290610ab9906020808252600790820152667374616b696e6760c81b604082015260600190565b60606004805461067790612e36565b5f336107058185856126ae565b600e8181548110611a68575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b611a976127bb565b5f8111611ae65760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109df565b600754611afe906001600160a01b0316333084612851565b5f611b23670de0b6b3a7640000611b1460025490565b611b1e9190612fa1565b61288a565b611b2e906001612efc565b90506032811115611b3d575060325b5f611b687f000000000000000000000000000000000000000000000000000000000000000084612fa1565b905080821115611b76578091505b815f03611b8257600191505b5f611b8d8385612fa1565b9050805f03611bb957507f00000000000000000000000000000000000000000000000000000000000000005b60085484905f9081611bca60025490565b90505b8315611c88575f85851015611be25784611be4565b855b90505f8215611c0f5782611c0085670de0b6b3a7640000612f76565b611c0a9190612fa1565b611c17565b655af3107a40005b90505f611c26826103e8612f76565b611c32846103cf612f76565b611c4490670de0b6b3a7640000612f76565b611c4e9190612fa1565b9050611c5a8187612efc565b9550611c668386612efc565b9450611c728185612efc565b9350611c7e8388612fc0565b9650505050611bcd565b60088290555f6103cf611c9d85610384612f76565b611ca79190612fa1565b90505f6103cf611cb8866019612f76565b611cc29190612fa1565b90505f6103cf611cd3876019612f76565b611cdd9190612fa1565b90505f6103cf611cee886014612f76565b611cf89190612fa1565b90505f6103cf611d09896005612f76565b611d139190612fa1565b9050611d1f338661281d565b600d546001600160a01b031615801590611d3857505f83115b15611d5357600d54611d53906001600160a01b03168461281d565b600f5415611dc6575f5b600e54811015611dc4575f600f54600e8381548110611d7e57611d7e613024565b905f5260205f2090600202016001015487611d999190612f76565b611da39190612fa1565b9050611dbb600e838154811061176d5761176d613024565b50600101611d5d565b505b600c546001600160a01b031615801590611ddf57505f81115b15611dfa57600c54611dfa906001600160a01b03168261281d565b600b546001600160a01b031615801590611e1357505f82115b15611e7157600b54611e2e906001600160a01b03168361281d565b600b546040518381526001600160a01b03909116907f0f3e65a9d1a67d76ecee1ea7cc4ede36add6a38c8fb28cf63aeef9c2bc4161639060200160405180910390a25b6007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611eb7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edb9190612e6e565b9050600854811015611f275760405162461bcd60e51b81526020600482015260156024820152740aaa6888640c4c2d8c2dcc6ca40dad2e6dac2e8c6d605b1b60448201526064016109df565b604080518f81526020810188905233917f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f33910160405180910390a2505050505050505050505050506118ba6001600655565b5f611f8360025490565b5f03611f945750655af3107a400090565b600254600854611fac90670de0b6b3a7640000612f76565b611fb69190612fa1565b905090565b611fc361260b565b6001600160a01b038116611fec57604051631e4fbdf760e01b81525f60048201526024016109df565b6118ba8161276a565b611ffd61260b565b604051806040016040528060118152602001701cd95d149959995c9c985b15d85b1b195d607a1b8152508160405160200161204791906001600160a01b0391909116815260200190565b6040516020818303038152906040525f82823360405160200161206c93929190612ebf565b60405160208183030381529060405280519060200120905060095f8281526020019081526020015f20545f036120a95761093d6201518042612efc565b5f818152600960205260409020544210156120d65760405162461bcd60e51b81526004016109df90612f0f565b5f818152600960205260408082208290555182915f5160206130395f395f51905f5291a26001600160a01b0384166121205760405162461bcd60e51b81526004016109df90612f46565b600b80546001600160a01b0386166001600160a01b031990911681179091556040515f5160206130595f395f51905f5290610ab9906020808252600890820152671c9959995c9c985b60c21b604082015260600190565b61217f61260b565b60405180604001604052806011815260200170656d657267656e6379576974686472617760781b81525082826040516020016121c79291909182521515602082015260400190565b6040516020818303038152906040525f8282336040516020016121ec93929190612ebf565b60405160208183030381529060405280519060200120905060095f8281526020019081526020015f20545f036122295761093d6201518042612efc565b5f818152600960205260409020544210156122565760405162461bcd60e51b81526004016109df90612f0f565b5f818152600960205260408082208290555182915f5160206130395f395f51905f5291a26007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156122c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e49190612e6e565b9050808611156123325760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420555344432062616c616e636560381b60448201526064016109df565b6008548611156123845760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742065786365656473207265636f7264656420555344430000000060448201526064016109df565b5f61238e87610ac8565b509050808061239a5750855b6124025760405162461bcd60e51b815260206004820152603360248201527f576f756c642076696f6c617465206d696e696d756d2072657365727665202d20604482015272757365206275726e546f6b656e733d7472756560681b60648201526084016109df565b5f86801561241757505f61241560025490565b115b156124fa576008545f906124338a670de0b6b3a7640000612f76565b61243d9190612fa1565b9050670de0b6b3a76400008161245260025490565b61245c9190612f76565b6124669190612fa1565b915081156124f857816124846104706005546001600160a01b031690565b10156124dd5760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e74206f776e657220746f6b656e7320666f72206275604482015261393760f11b60648201526084016109df565b6124f86124f26005546001600160a01b031690565b836127e5565b505b61252261250f6005546001600160a01b031690565b6007546001600160a01b0316908a61270b565b8760085f8282546125339190612fc0565b90915550506040805189815288151560208201529081018290527f65cde4fd4405e378ff42a814651da3699e51a61f0f90469c5e99b8c7779bcf399060600160405180910390a160085415801561259157505f61258f60025490565b115b156125ef5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420647261696e20616c6c2055534443207768696c6520746f6b656044820152671b9cc8195e1a5cdd60c21b60648201526084016109df565b5050505050505050565b61260683838360016129e2565b505050565b6005546001600160a01b031633146114ba5760405163118cdaa760e01b81523360048201526024016109df565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610ac257818110156126a057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109df565b610ac284848484035f6129e2565b6001600160a01b0383166126d757604051634b637e8f60e11b81525f60048201526024016109df565b6001600160a01b0382166127005760405163ec442f0560e01b81525f60048201526024016109df565b612606838383612ab4565b6040516001600160a01b0383811660248301526044820183905261260691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612bda565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002600654036127de57604051633ee5aeb560e01b815260040160405180910390fd5b6002600655565b6001600160a01b03821661280e57604051634b637e8f60e11b81525f60048201526024016109df565b612819825f83612ab4565b5050565b6001600160a01b0382166128465760405163ec442f0560e01b81525f60048201526024016109df565b6128195f8383612ab4565b6040516001600160a01b038481166024830152838116604483015260648201839052610ac29186918216906323b872dd90608401612738565b5f60018211612897575090565b816001600160801b82106128b05760809190911c9060401b5b6801000000000000000082106128cb5760409190911c9060201b5b64010000000082106128e25760209190911c9060101b5b6201000082106128f75760109190911c9060081b5b610100821061290b5760089190911c9060041b5b6010821061291e5760049190911c9060021b5b6004821061292a5760011b5b600302600190811c9081858161294257612942612f8d565b048201901c9050600181858161295a5761295a612f8d565b048201901c9050600181858161297257612972612f8d565b048201901c9050600181858161298a5761298a612f8d565b048201901c905060018185816129a2576129a2612f8d565b048201901c905060018185816129ba576129ba612f8d565b048201901c90506129d98185816129d3576129d3612f8d565b04821190565b90039392505050565b6001600160a01b038416612a0b5760405163e602df0560e01b81525f60048201526024016109df565b6001600160a01b038316612a3457604051634a1406b160e11b81525f60048201526024016109df565b6001600160a01b038085165f9081526001602090815260408083209387168352929052208290558015610ac257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612aa691815260200190565b60405180910390a350505050565b6001600160a01b038316612ade578060025f828254612ad39190612efc565b90915550612b4e9050565b6001600160a01b0383165f9081526020819052604090205481811015612b305760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016109df565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216612b6a57600280548290039055612b88565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bcd91815260200190565b60405180910390a3505050565b5f5f60205f8451602086015f885af180612bf9576040513d5f823e3d81fd5b50505f513d91508115612c10578060011415612c1d565b6001600160a01b0384163b155b15610ac257604051635274afe760e01b81526001600160a01b03851660048201526024016109df565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612c866020830184612c46565b9392505050565b80356001600160a01b0381168114612ca3575f5ffd5b919050565b5f5f60408385031215612cb9575f5ffd5b612cc283612c8d565b946020939093013593505050565b5f5f5f60608486031215612ce2575f5ffd5b612ceb84612c8d565b9250612cf960208501612c8d565b929592945050506040919091013590565b5f60208284031215612d1a575f5ffd5b612c8682612c8d565b5f60208284031215612d33575f5ffd5b5035919050565b5f5f5f60608486031215612d4c575f5ffd5b83359250612cf960208501612c8d565b5f5f5f60408486031215612d6e575f5ffd5b83359250602084013567ffffffffffffffff811115612d8b575f5ffd5b8401601f81018613612d9b575f5ffd5b803567ffffffffffffffff811115612db1575f5ffd5b866020828401011115612dc2575f5ffd5b939660209190910195509293505050565b5f5f60408385031215612de4575f5ffd5b612ded83612c8d565b9150612dfb60208401612c8d565b90509250929050565b5f5f60408385031215612e15575f5ffd5b8235915060208301358015158114612e2b575f5ffd5b809150509250929050565b600181811c90821680612e4a57607f821691505b602082108103612e6857634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215612e7e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181035f831280158383131683831282161715612eb857612eb8612e85565b5092915050565b606081525f612ed16060830186612c46565b8281036020840152612ee38186612c46565b91505060018060a01b0383166040830152949350505050565b8082018082111561070b5761070b612e85565b6020808252601b908201527f54696d656c6f636b20706572696f64206e6f7420657870697265640000000000604082015260600190565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b808202811582820484141761070b5761070b612e85565b634e487b7160e01b5f52601260045260245ffd5b5f82612fbb57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561070b5761070b612e85565b60208082526031908201527f506f6f6c20776569676874206d757374206265206265747765656e203120616e604082015270190813505617d413d3d317d5d15251d215607a1b606082015260800190565b634e487b7160e01b5f52603260045260245ffdfe608879471643fec8a3d053e61fed9b5bb710b0ae4b697d1678d92eb5ea6d00be6ff3a4003b90be84595beb5f6acb9d54f88bd3e6dd4887ca67e53dc9645465eaa264697066735822122005cf7e2e0be9a0dad0042225bb16389091773fa018a8d9a58c7077e184e272a464736f6c634300081c00330000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d00000000000000000000000049746158379ff039af3de8bbb0a889d9b7caf079000000000000000000000000bf435f963107fefa4bdf40f93488f582604586a3000000000000000000000000d82d18167a12ecda5b24d3bb33604a3b0b4d9f1900000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000b6ea1368d2a6b06d5df5bfc09c087d9acc29bad00000000000000000000000000000000000000000000000000000000000000530000000000000000000000009b89784c9c96fb5d49b34380bff81b47f2ef050e00000000000000000000000000000000000000000000000000000000000000530000000000000000000000007e0ced2aab02670e98f0ad5d6eb16afe58e0c623000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000002049537a6857348cac401a368ee0682f3ebb4c0a000000000000000000000000000000000000000000000000000000000000008a000000000000000000000000b14fba661e875c509174dae5aad7de177082d252000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000088e52bf741c7d1ca6162eeac967619d14542383500000000000000000000000000000000000000000000000000000000000000c700000000000000000000000094e93d9756ed226d8cfeb3b3cb65ae69dabb40fb00000000000000000000000000000000000000000000000000000000000000f9