0 txs
8 calls
constructor
constructor()
functions
ACC_REWARD_SCALE
viewfunction ACC_REWARD_SCALE() view returns (uint256)
accRewardPerShare
viewfunction accRewardPerShare() view returns (uint256)
accRewardPerShareLocked
viewfunction accRewardPerShareLocked() view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
balanceOfUnlocked
viewfunction balanceOfUnlocked(address user) view returns (uint256)
cooldownDuration
viewfunction cooldownDuration() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
emissionRatePerSecond
viewfunction emissionRatePerSecond() view returns (uint256)
getPesosPercentage
viewfunction getPesosPercentage() view returns (uint256)
getPesosPerDayAmountOut
viewfunction getPesosPerDayAmountOut(uint256 sVVVAmountToLock) view returns (uint256)
lastRewardTimestamp
viewfunction lastRewardTimestamp() view returns (uint256)
lockedStakes
viewfunction lockedStakes(address) view returns (uint256 sVVVLockedAmount, uint256 outstandingPesosPerDayAmount)
name
viewfunction name() view returns (string)
oracle
viewfunction oracle() view returns (address)
owner
viewfunction owner() view returns (address)
pendingRewards
viewfunction pendingRewards(address _user) view returns (uint256)
pesos
viewfunction pesos() view returns (address)
pesosEmissionsPercentage
viewfunction pesosEmissionsPercentage() view returns (uint256)
pesosEmissionsPercentageWhenLocked
viewfunction pesosEmissionsPercentageWhenLocked() view returns (uint256)
pesosPerDay
viewfunction pesosPerDay() view returns (address)
pesosPerDayMintRates
viewfunction pesosPerDayMintRates(uint256) view returns (uint256)
pesosPerDaySupply
viewfunction pesosPerDaySupply(uint256) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
stakes
viewfunction stakes(address) view returns (uint256 rewardDebt, uint256 cooldownEnd, uint256 cooldownAmount)
symbol
viewfunction symbol() view returns (string)
totalLockedStakedVVV
viewfunction totalLockedStakedVVV() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
burnPesosPerDay
nonpayablefunction burnPesosPerDay(uint256 pesosPerDayAmountToBurn)
claim
nonpayablefunction claim()
claimAndStake
nonpayablefunction claimAndStake()
finalizeUnstake
nonpayablefunction finalizeUnstake()
initialize
nonpayablefunction initialize(address _pesos, address _oracle, address _treasury)
initiateUnstake
nonpayablefunction initiateUnstake(uint256 amount)
mintPesosPerDay
nonpayablefunction mintPesosPerDay(uint256 sVVVAmountToLock, uint256 minPesosPerDayAmountOut)
renounceOwnership
nonpayablefunction renounceOwnership()
setCooldownDuration
nonpayablefunction setCooldownDuration(uint256 _cooldownDuration)
setEmissionRate
nonpayablefunction setEmissionRate(uint256 _emissionRate)
setPesosEmissionsPercentage
nonpayablefunction setPesosEmissionsPercentage(uint256 _pesosEmissionsPercentage)
setPesosEmissionsPercentageWhenLocked
nonpayablefunction setPesosEmissionsPercentageWhenLocked(uint256 _pesosEmissionsPercentage)
setPesosPerDayMintCurve
nonpayablefunction setPesosPerDayMintCurve(uint256[256] _pesosPerDaySupply, uint256[256] _pesosPerDayMintRates)
setTreasury
nonpayablefunction setTreasury(address _treasury)
stake
nonpayablefunction stake(address recipient, uint256 amount)
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)
upgradeInitialize
nonpayablefunction upgradeInitialize(address _pesosPerDay)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Claimed
event Claimed(address indexed user, uint256 amount)
CooldownDurationUpdated
event CooldownDurationUpdated(uint256 newDuration)
EmissionRateUpdated
event EmissionRateUpdated(uint256 newRate)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PesosEmissionsPercentageUpdated
event PesosEmissionsPercentageUpdated(uint256 newPercentage)
PesosEmissionsPercentageWhenLockedUpdated
event PesosEmissionsPercentageWhenLockedUpdated(uint256 newPercentage)
PesosPerDayBurned
event PesosPerDayBurned(uint256 svvvUnlocked, uint256 pesosPerDayBurned)
PesosPerDayMinted
event PesosPerDayMinted(uint256 svvvLocked, uint256 pesosPerDayMinted)
PesosPerDayMintRatesUpdated
event PesosPerDayMintRatesUpdated(uint256[256] pesosPerDaySupply, uint256[256] pesosPerDayMintRates)
Staked
event Staked(address indexed user, uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
TreasuryUpdated
event TreasuryUpdated(address newTreasury)
UnstakeFinalized
event UnstakeFinalized(address indexed user, uint256 amount)
UnstakeInitiated
event UnstakeInitiated(address indexed user, uint256 amount)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
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)
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523461003c5730608052610015610040565b61001d610040565b604051612ba390816100fd823960805181818161131401526113e40152f35b5f80fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100ed576002600160401b03196001600160401b038216016100885750565b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1565b63f92ee8a960e01b5f5260045ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630342063b14611d7a5750806306fdde0314611c98578063095ea7b314611c195780630ea9434114611ae257806316934fc414611a9357806318160ddd14611a6a57806323b872dd1461199a57806325bef7461461197d57806325fae12b14611955578063262bf03d146118a4578063313ce5671461188957806331d7a2621461186657806332fae4a5146116c257806335269315146116a4578063357e936a1461167d57806340370f1f146115ed5780634e71d92d146115ba5780634f1ef2861461136857806352d1902d1461130157806355cdc44c146112d157806361d027b3146112a85780636db05a001461127557806370a0823114611230578063715018a6146111c75780637dc0d1d01461119e5780638da5cb5b1461116957806392417dc714611125578063924793f1146110c4578063939d6237146110a657806395d89b4114610fb3578063966be07514610f65578063a1bdb15e14610f0f578063a5f3bc2e14610600578063a80152d614610ef1578063a9059cbb14610ecd578063ad3cb1cc14610e88578063adc9772e14610e62578063ae5ac92114610c5c578063b4e571d114610bea578063c0c53b8b1461068c578063c9689f4f1461066d578063cb1a4fc01461064a578063ceddd07d1461061e578063d19509ed14610600578063dd62ed3e146105b8578063f0f442601461054a578063f2fde38b1461051d578063f60c3fbc146104ff578063f7772e9814610298578063f8077fae1461027a5763fbb3d0da1461024f575f80fd5b34610277578060031936011261027757600c546040516001600160a01b039091168152602090f35b80fd5b50346102775780600319360112610277576020600754604051908152f35b5034610277576020366003190112610277576004356040906102dd82516102bf8482611e22565b60098152684255524e5f5a45524f60b81b6020820152821515611eac565b600c5482516370a0823160e01b815233600482015290602090829060249082906001600160a01b03165afa80156104f25784906104ba575b61032b915082610323612104565b911015611eac565b33835261020d60205261034e6001838520015415156103486124bf565b90611eac565b610357336125a6565b33835261020d602052818320908154916103e8826103758582611f09565b60018401936103d261038986548094611f1c565b80986103cd8b5161039a8d82611e22565b601b81527f494e53554646494349454e545f4c4f434b45445f42414c414e43450000000000602082015283831015611eac565b611ee8565b90556103cd6103df6124bf565b83831015611eac565b90556103f682600b54611ee8565b600b55600c546001600160a01b031691823b156104b6578351632770a7eb60e21b81523360048201526024810183905292849290869081908690604490829084905af180156104aa5761048b575b507fc847764310c9ea09afbd5bff754dc6535c747a796d9a9ffdaae7511ab1a26dd3935082519182526020820152a161047c3361265a565b90338352600560205282205580f35b610499919350809294611e22565b6104a65781839185610444565b8380fd5b508351903d90823e3d90fd5b8480fd5b506020813d6020116104ea575b816104d460209383611e22565b810103126104e65761032b9051610315565b5f80fd5b3d91506104c7565b50505051903d90823e3d90fd5b50346102775780600319360112610277576020600a54604051908152f35b50346102775760203660031901126102775761054761053a611dbe565b610542612573565b61244e565b80f35b5034610277576020366003190112610277577f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d16020610587611dbe565b61058f612573565b600280546001600160a01b0319166001600160a01b03929092169182179055604051908152a180f35b5034610277576040366003190112610277576105d2611dbe565b6105e36105dd611dd4565b91611dea565b9060018060a01b03165f52602052602060405f2054604051908152f35b50346102775780600319360112610277576020600954604051908152f35b503461027757602036600319011261027757602061064261063d611dbe565b612415565b604051908152f35b503461027757806003193601126102775761054761066733611f47565b33612171565b5034610277576020366003190112610277576020610642600435612285565b5034610277576060366003190112610277576106a6611dbe565b6106ae611dd4565b6044356001600160a01b038116908190036104a6575f80516020612b4e833981519152549160ff8360401c16159267ffffffffffffffff811680159081610be2575b6001149081610bd8575b159081610bcf575b50610bc05767ffffffffffffffff1981166001175f80516020612b4e8339815191525583610b94575b50604093845161073b8682611e22565b601281527129ba30b5b2b2102832b9b7b9902a37b5b2b760711b60208201528551906107678783611e22565b6006825265735065736f7360d01b6020830152610782612a04565b61078a612a04565b80519067ffffffffffffffff8211610b805781906107b55f80516020612a8e83398151915254611e74565b601f8111610b06575b50602090601f8311600114610a8a578a92610a7f575b50508160011b915f199060031b1c1916175f80516020612a8e833981519152555b80519067ffffffffffffffff8211610a6b5781906108205f80516020612ace83398151915254611e74565b601f81116109f1575b50602090601f831160011461097557899261096a575b50508160011b915f199060031b1c1916175f80516020612ace833981519152555b610868612a04565b610870612a04565b6108793361244e565b610881612a04565b60018060a01b03166001600160601b0360a01b86541617855560018060a01b03166001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556706292e6de3503dd360035562093a80600455426007553015610956576108f7670de0b6b3a76400003061295a565b6108ff575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f80516020612b4e83398151915254165f80516020612b4e833981519152555160018152a180f35b63ec442f0560e01b83526004839052602483fd5b015190505f8061083f565b5f80516020612ace8339815191528a52818a209250601f1984168a5b8181106109d957509084600195949392106109c1575b505050811b015f80516020612ace83398151915255610860565b01515f1960f88460031b161c191690555f80806109a7565b92936020600181928786015181550195019301610991565b5f80516020612ace8339815191528a529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c81019160208510610a61575b90601f859493920160051c01905b818110610a535750610829565b8a8155849350600101610a46565b9091508190610a38565b634e487b7160e01b88526041600452602488fd5b015190505f806107d4565b5f80516020612a8e8339815191528b52818b209250601f1984168b5b818110610aee5750908460019594939210610ad6575b505050811b015f80516020612a8e833981519152556107f5565b01515f1960f88460031b161c191690555f8080610abc565b92936020600181928786015181550195019301610aa6565b5f80516020612a8e8339815191528b529091507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c81019160208510610b76575b90601f859493920160051c01905b818110610b6857506107be565b8b8155849350600101610b5b565b9091508190610b4d565b634e487b7160e01b89526041600452602489fd5b68ffffffffffffffffff191668010000000000000001175f80516020612b4e833981519152555f61072b565b63f92ee8a960e01b8652600486fd5b9050155f610702565b303b1591506106fa565b8591506106f0565b5034610277576020366003190112610277577f2c2eb26ff48eb2dde5ff66e040f1313fe12249bfc716c9468e0446cfb66ed3c56020600435610c2a612573565b610c326126b4565b610c4e610c3d612136565b670de0b6b3a7640000831115611eac565b80600a55604051908152a180f35b50346102775760203660031901126102775760043590604090610ca58251610c848482611e22565b600c81526b554e5354414b455f5a45524f60a01b6020820152841515611eac565b3381526005602052818120906002820190610cef825415855190610cc98783611e22565b6014825273434f4f4c444f574e5f494e5f50524f475245535360601b6020830152611eac565b610d0685610cfc33612415565b1015610348612104565b610d0f336125a6565b3315610e4e57610e05578390335f525f80516020612aae833981519152602052835f2054828110610dea578290335f525f80516020612aae83398151915260205203845f2055815f80516020612b0e83398151915254035f80516020612b0e833981519152555f84518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3610dad60045442611f3a565b600184015555610dbc3361265a565b9055519081527fc606a9f55fc42cd3159fcfc8ddcd749dd21c4574cca0b68a5a65d5f984b6c42c60203392a2005b905063391434e360e21b5f523360045260245260445260645ffd5b610e4a83805190610e168183611e22565b60118252704e4f545f5452414e534645525241424c4560781b60208301525162461bcd60e51b815291829160048301611d94565b0390fd5b634b637e8f60e11b81526004819052602490fd5b503461027757604036600319011261027757610547610e7f611dbe565b60243590612171565b503461027757806003193601126102775750610ec9604051610eab604082611e22565b60058152640352e302e360dc1b602082015260405191829182611d94565b0390f35b503461027757604036600319011261027757610ee7611dbe565b60243590336124fa565b50346102775780600319360112610277576020600354604051908152f35b5034610277576020366003190112610277577fffcc630bf88a67ba7c8b27440787c31777ae923aee1e9bbd0127feea56da2cd06020600435610f4f612573565b610f576126b4565b80600355604051908152a180f35b5034610277576020366003190112610277577f3b919acbae27b7c60197957a5423655702d842fcc85c19c7631dc1c777f478f56020600435610fa5612573565b80600455604051908152a180f35b503461027757806003193601126102775760405190805f80516020612ace8339815191525490610fe282611e74565b808552916001811690811561107f5750600114611016575b610ec98461100a81860382611e22565b60405191829182611d94565b5f80516020612ace83398151915281527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b8082106110655750909150810160200161100a82610ffa565b91926001816020925483858801015201910190929161104c565b60ff191660208087019190915292151560051b8501909201925061100a9150839050610ffa565b50346102775780600319360112610277576020600654604051908152f35b5034610277576020366003190112610277577f327d1c11ecbfac35ab4f04adee6e1180f95cf3b83433864de74719b9f8e5013d6020600435611104612573565b61110c6126b4565b611117610c3d612136565b80600955604051908152a180f35b50346102775760203660031901126102775760409081906001600160a01b0361114c611dbe565b16815261020d602052206001815491015482519182526020820152f35b50346102775780600319360112610277575f80516020612aee833981519152546040516001600160a01b039091168152602090f35b50346102775780600319360112610277576001546040516001600160a01b039091168152602090f35b50346102775780600319360112610277576111e0612573565b5f80516020612aee83398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610277576020366003190112610277576020906040906001600160a01b03611258611dbe565b1681525f80516020612aae83398151915283522054604051908152f35b5034610277576020366003190112610277576004356101008110156112a45760209150600d0154604051908152f35b5080fd5b50346102775780600319360112610277576002546040516001600160a01b039091168152602090f35b5034610277576020366003190112610277576004356101008110156112a4576020915061010d0154604051908152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036113595760206040515f80516020612b2e8339815191528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126102775761137d611dbe565b6024359067ffffffffffffffff82116115b657366023830112156115b657816004013590836113ab83611e58565b936113b96040519586611e22565b838552602085019336602482840101116115b657806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611594575b506115855761141c612573565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa86918161154d575b5061145f57634c9c8ce360e01b86526004859052602486fd5b93845f80516020612b2e83398151915287960361153b5750823b15611529575f80516020612b2e83398151915280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a280511561150e576115029382915190845af43d15611506573d916114e683611e58565b926114f46040519485611e22565b83523d85602085013e612a2f565b5080f35b606091612a2f565b505050503461151a5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d60201161157d575b8161156960209383611e22565b810103126115795751905f611446565b8680fd5b3d915061155c565b63703e46dd60e11b8452600484fd5b5f80516020612b2e833981519152546001600160a01b0316141590505f61140f565b8280fd5b50346102775780600319360112610277576115d4336125a6565b6115dd3361265a565b3382526005602052604082205580f35b503461027757602036600319011261027757611607611dbe565b61160f612573565b600c5490611654604051611624604082611e22565b60138152721053149150511657d253925512505312569151606a1b60208201526001600160a01b03841615611eac565b6702c68af0bb140000600a556001600160a01b03166001600160a01b03199190911617600c5580f35b5034610277578060031936011261027757546040516001600160a01b039091168152602090f35b50346102775780600319360112610277576020600454604051908152f35b50346104e65760403660031901126104e65760043560409061170782516116e98482611e22565b60098152684c4f434b5f5a45524f60b81b6020820152821515611eac565b611710336125a6565b61171d81610cfc33612415565b335f5261020d602052815f2061173282612285565b9061177784516117428682611e22565b601981527f42454c4f575f4d494e5f4449454d5f414d4f554e545f4f5554000000000000006020820152602435841015611eac565b60018101611786838254611f3a565b9055611793838254611f3a565b90556117a182600b54611f3a565b600b55600c546001600160a01b0316803b156104e65783516340c10f1960e01b815233600482015260248101839052905f908290604490829084905af1801561185c57611822575b507fb2e376fc42d03f1f8e878b520ed8c5c46f5e83cd448d3d2ddbc9d2fbfba4417291839182519182526020820152a161047c3361265a565b83919450916118525f7fb2e376fc42d03f1f8e878b520ed8c5c46f5e83cd448d3d2ddbc9d2fbfba4417294611e22565b5f949150916117e9565b84513d5f823e3d90fd5b346104e65760203660031901126104e6576020610642611884611dbe565b611f47565b346104e6575f3660031901126104e657602060405160128152f35b346104e6576140003660031901126104e65736612004116104e65736614004116104e6576118d0612573565b5f5b610100811090811561191a578060051b91826004013582600d0155156119065760019161200401358161010d0155016118d2565b634e487b7160e01b5f52603260045260245ffd5b7f14483ef26e3cab5349593fc1e6e6e30ac22c56f3f09a103bdd2bae0d7c62b6916140006040516120006004823761200061200481830137a1005b346104e6575f3660031901126104e65760206040516a0c097ce7bc90715b34b9f160241b8152f35b346104e6575f3660031901126104e6576020600b54604051908152f35b346104e65760603660031901126104e6576119b3611dbe565b6119bb611dd4565b604435916119c881611dea565b335f90815260209190915260409020545f1981106119e7575b506124fa565b838110611a4f576001600160a01b03821615611a3c573315611a2957611a0c82611dea565b60018060a01b0333165f526020528360405f2091039055836119e1565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b346104e6575f3660031901126104e65760205f80516020612b0e83398151915254604051908152f35b346104e65760203660031901126104e6576001600160a01b03611ab4611dbe565b165f526005602052606060405f20805490600260018201549101549060405192835260208301526040820152f35b346104e6575f3660031901126104e657335f52600560205260405f2060028101905f825492816001604094611b3c8651611b1c8882611e22565b600b81526a2727afa1a7a7a62227aba760a91b6020820152881515611eac565b01611b758154421015865190611b528883611e22565b601182527021a7a7a62227aba72fa727aa2fa7ab22a960791b6020830152611eac565b55555f8054825163a9059cbb60e01b8152336004820152602481018590529160209183916044918391906001600160a01b03165af18015611c0f57611be2575b50519081527fc819022d26707b1e41f61d9adc9481024e27272d949e34a1dfec4d7abf168a3360203392a2005b611c039060203d602011611c08575b611bfb8183611e22565b810190611ed0565b611bb5565b503d611bf1565b82513d5f823e3d90fd5b346104e65760403660031901126104e657611c32611dbe565b602435903315611a3c576001600160a01b0316908115611a2957611c5533611dea565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346104e6575f3660031901126104e6576040515f5f80516020612a8e83398151915254611cc481611e74565b8084529060018116908115611d565750600114611cec575b610ec98361100a81850382611e22565b5f80516020612a8e8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210611d3c5750909150810160200161100a611cdc565b919260018160209254838588010152019101909291611d24565b60ff191660208086019190915291151560051b8401909101915061100a9050611cdc565b346104e6575f3660031901126104e6576020906008548152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036104e657565b602435906001600160a01b03821682036104e657565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b90601f8019910116810190811067ffffffffffffffff821117611e4457604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111611e4457601f01601f191660200190565b90600182811c92168015611ea2575b6020831014611e8e57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611e83565b15611eb45750565b60405162461bcd60e51b8152908190610e4a9060048301611d94565b908160209103126104e6575180151581036104e65790565b91908203918211611ef557565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715611ef557565b8115611f26570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611ef557565b6006549060085490600754804211611fc2575b50806a0c097ce7bc90715b34b9f160241b611fa581611f87611fbf97611f82611fac97612415565b611f09565b049260018060a01b031694855f5261020d60205260405f2054611f09565b0490611f3a565b905f52600560205260405f205490611ee8565b90565b611fdb611fd2611ff79242611ee8565b60035490611f09565b670de0b6b3a7640000611ff060095483611f09565b0490611ee8565b600b54906120058282611f09565b9461204261202c6120255f80516020612b0e833981519152548099611f1c565b8094611ee8565b92670de0b6b3a7640000611ff0600a5483611f09565b956a0c097ce7bc90715b34b9f160241b8302928084046a0c097ce7bc90715b34b9f160241b1490151715611ef55761208d926120818561208793611ee8565b90611f1c565b90611f3a565b938161209a575b50611f5a565b6a0c097ce7bc90715b34b9f160241b81959493929502908082046a0c097ce7bc90715b34b9f160241b1490151715611ef557611fa56a0c097ce7bc90715b34b9f160241b611f876120f6611fac96612087611fbf9a8597611f1c565b969750505050819250612094565b60405190612113604083611e22565b6014825273494e53554646494349454e545f42414c414e434560601b6020830152565b60405190612145604083611e22565b601c82527f494e56414c49445f454d495353494f4e535f50455243454e54414745000000006020830152565b9060406121a281516121838382611e22565b600a8152695354414b455f5a45524f60b01b6020820152831515611eac565b6121ab836125a6565b6001600160a01b038316928315612272576121c6838261295a565b5f805483516323b872dd60e01b8152336004820152306024820152604481018690529160209183916064918391906001600160a01b03165af18015612268577f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d94926020949261223b9261224d575b5061265a565b855f5260058452815f205551908152a2565b61226390863d8811611c0857611bfb8183611e22565b612235565b83513d5f823e3d90fd5b63ec442f0560e01b5f525f60045260245ffd5b600c546040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa90811561240a575f916123d8575b50905f905f5b6101008110156123cf5780600d015493848110156123c5576122e7818361010d015496611ee8565b6122f18187611f09565b670de0b6b3a763ffff8101809111611ef557670de0b6b3a764000090048481106123995750505050670de0b6b3a7640000810290808204670de0b6b3a76400001490151715611ef5576123479261208791611f1c565b5f5b6123505790565b610e4a604051612361604082611e22565b6013815272494e53554646494349454e545f535550504c5960681b602082015260405162461bcd60e51b815291829160048301611d94565b60019396506123b7906123b1836123bd959798611f3a565b96611ee8565b93611f3a565b935b016122bf565b93506001906123bf565b50909150612349565b90506020813d602011612402575b816123f360209383611e22565b810103126104e657515f6122b9565b3d91506123e6565b6040513d5f823e3d90fd5b6001600160a01b03165f9081525f80516020612aae833981519152602090815260408083205461020d90925290912054611fbf91611ee8565b6001600160a01b031680156124ac575f80516020612aee83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b604051906124ce604083611e22565b601e82527f494e53554646494349454e545f4f55545354414e44494e475f4449454d5300006020830152565b9091506001600160a01b031615612560576001600160a01b03161561227257610e4a60405161252a604082611e22565b60118152704e4f545f5452414e534645525241424c4560781b602082015260405162461bcd60e51b815291829160048301611d94565b634b637e8f60e11b5f525f60045260245ffd5b5f80516020612aee833981519152546001600160a01b0316330361259357565b63118cdaa760e01b5f523360045260245ffd5b6125ae6126b4565b6125b781611f47565b90816125c1575050565b5f805460405163a9059cbb60e01b81526001600160a01b03848116600483015260248201869052909392602092859260449284929091165af190811561240a577fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9260209261263f575b506040519384526001600160a01b031692a2565b61265590833d8511611c0857611bfb8183611e22565b61262b565b611fbf906a0c097ce7bc90715b34b9f160241b61268261267983612415565b60065490611f09565b049060018060a01b03165f5261020d6020526a0c097ce7bc90715b34b9f160241b611fa560405f205460085490611f09565b6007545f9080421115612760576126ce6126db9142611ee8565b4260075560035490611f09565b801561276057612701670de0b6b3a76400006126f960095484611f09565b048092611ee8565b5f80516020612b0e8339815191525490600b5461273b6127346127248386611ee8565b9461272f8486611f09565b611f1c565b8093611ee8565b925f93801580156128e6575b50505081612837575b505090806127cb575b5080612764575b5050565b81546001600160a01b031690813b156115b6576040516340c10f1960e01b815230600482015260248101919091529082908290604490829084905af180156127c0576127ae575050565b6127b9828092611e22565b6102775750565b6040513d84823e3d90fd5b5f546002546001600160a01b0391821692911690823b156104e6576040516340c10f1960e01b81526001600160a01b039290921660048301526024820152905f908290604490829084905af1801561240a57156127595761282f9192505f90611e22565b5f905f612759565b612857670de0b6b3a764000061284f600a5485611f09565b048093611ee8565b6a0c097ce7bc90715b34b9f160241b8102908082046a0c097ce7bc90715b34b9f160241b1490151715611ef5578161288e91611f1c565b90816128a9575b50506128a19192611f3a565b905f80612750565b906128a1936128d76a0c097ce7bc90715b34b9f160241b6128cd6128df9585611f09565b0492600854611f3a565b600855611f3a565b915f612895565b6a0c097ce7bc90715b34b9f160241b82029182046a0c097ce7bc90715b34b9f160241b141715611ef5578161291a91611f1c565b9081612927575b80612747565b8194506129466a0c097ce7bc90715b34b9f160241b9161295093611f09565b0493600654611f3a565b6006555f80612921565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60205f92612997855f80516020612b0e83398151915254611f3a565b5f80516020612b0e833981519152556001600160a01b031693841584146129e257805f80516020612b0e83398151915254035f80516020612b0e833981519152555b604051908152a3565b8484525f80516020612aae8339815191528252604084208181540190556129d9565b60ff5f80516020612b4e8339815191525460401c1615612a2057565b631afcd79f60e31b5f5260045ffd5b90612a535750805115612a4457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580612a84575b612a64575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15612a5c56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201798e373559b4f99f7f6c7772244a8b700200fa69380b5cc10cecdecc17a1f9e64736f6c634300081a0033