0 txs
1 call
constructor
constructor(uint256 _totalSupply, uint256 _virtualTokenReserves, uint256 _virtualCollateralReserves, uint256 _feeBasisPoints, uint256 _dexFeeBasisPoints, uint256 _migrationFeeFixed, uint256 _poolCreationFee, uint256 _mcUpperLimit, uint256 _mcLowerLimit, uint256 _tokensMigrationThreshold, address _treasury, address _dexTreasury, address _uniswapV2Router, address _signer)
functions
dexFeeBasisPoints
viewfunction dexFeeBasisPoints() view returns (uint256)
dexTreasury
viewfunction dexTreasury() view returns (address)
feeBasisPoints
viewfunction feeBasisPoints() view returns (uint256)
mcLowerLimit
viewfunction mcLowerLimit() view returns (uint256)
mcUpperLimit
viewfunction mcUpperLimit() view returns (uint256)
migrationFeeFixed
viewfunction migrationFeeFixed() view returns (uint256)
moonshotTokens
viewfunction moonshotTokens(uint256) view returns (address)
owner
viewfunction owner() view returns (address)
poolCreationFee
viewfunction poolCreationFee() view returns (uint256)
readyForMigration
viewfunction readyForMigration(address) view returns (bool)
signer
viewfunction signer() view returns (address)
tokensMigrationThreshold
viewfunction tokensMigrationThreshold() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
UNISWAP_V2_ROUTER
viewfunction UNISWAP_V2_ROUTER() view returns (address)
usedSignatures
viewfunction usedSignatures(bytes32) view returns (bool)
virtualCollateralReserves
viewfunction virtualCollateralReserves() view returns (uint256)
virtualTokenReserves
viewfunction virtualTokenReserves() view returns (uint256)
buyExactIn
payablefunction buyExactIn(address _token, uint256 _amountOutMin) payable
buyExactOut
payablefunction buyExactOut(address _token, uint256 _tokenAmount, uint256 _maxCollateralAmount) payable
createMoonshotToken
nonpayablefunction createMoonshotToken(string _name, string _symbol, uint256 _nonce, bytes _signature) returns (address)
createMoonshotTokenAndBuy
payablefunction createMoonshotTokenAndBuy(string _name, string _symbol, uint256 _nonce, uint256 _tokenAmountMin, bytes _signature) payable returns (address)
migrate
nonpayablefunction migrate(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
sellExactIn
nonpayablefunction sellExactIn(address _token, uint256 _tokenAmount, uint256 _amountCollateralMin)
sellExactOut
nonpayablefunction sellExactOut(address _token, uint256 _tokenAmountMax, uint256 _amountCollateral)
setConfig
nonpayablefunction setConfig(uint256 _totalSupply, uint256 _virtualTokenReserves, uint256 _virtualCollateralReserves, uint256 _feeBasisPoints, uint256 _dexFeeBasisPoints, uint256 _migrationFeeFixed, uint256 _poolCreationFee, uint256 _mcUpperLimit, uint256 _mcLowerLimit, uint256 _tokensMigrationThreshold, address _treasury, address _dexTreasury, address _signer)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BuyExactIn
event BuyExactIn(address indexed buyer, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps)
BuyExactOut
event BuyExactOut(address indexed buyer, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 refund, uint256 fee, uint256 dexFee, uint256 curveProgressBps)
MarketcapReached
event MarketcapReached(address token)
Migrated
event Migrated(address token, uint256 tokensToMigrate, uint256 tokensToBurn, uint256 collateralToMigrate, uint256 migrationFee, address pair)
NewMoonshotToken
event NewMoonshotToken(address addr, address creator, bytes signature)
NewMoonshotTokenAndBuy
event NewMoonshotTokenAndBuy(address addr, address creator, bytes signature, uint256 tokenAmount, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SellExactIn
event SellExactIn(address indexed seller, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps)
SellExactOut
event SellExactOut(address indexed seller, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps)
SetConfig
event SetConfig(uint256 totalSupply, uint256 virtualTokenReserves, uint256 virtualCollateralReserves, uint256 feeBasisPoints, uint256 dexFeeBasisPoints, uint256 migrationFeeFixed, uint256 poolCreationFee, uint256 mcUpperLimit, uint256 mcLowerLimit, uint256 tokensMigrationThreshold, address treasury, address dexTreasury, address signer)
errors
DexTreasuryZeroValue
error DexTreasuryZeroValue()
FailedToSendETH
error FailedToSendETH()
FeeBPSCheckFailed
error FeeBPSCheckFailed()
InvalidSignature
error InvalidSignature()
McLowerLimitGreaterThanUpperLimit
error McLowerLimitGreaterThanUpperLimit()
McLowerLimitZeroValue
error McLowerLimitZeroValue()
McUpperLimitZeroValue
error McUpperLimitZeroValue()
NotReadyForMigration
error NotReadyForMigration()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SignatureIsUsed
error SignatureIsUsed()
SignerZeroValue
error SignerZeroValue()
TokensMigrationThresholdZeroValue
error TokensMigrationThresholdZeroValue()
TotalSupplyZeroValue
error TotalSupplyZeroValue()
TreasuryZeroValue
error TreasuryZeroValue()
VirtualCollateralReservesZeroValue
error VirtualCollateralReservesZeroValue()
VirtualTokenReservesZeroValue
error VirtualTokenReservesZeroValue()
creation bytecode
0x34620003755762004d173881900360a0601f8201601f19168101906001600160401b038211908210176200037a576101c092829160405260a03912620003755760a05160c05160e05161010051610120516101405161016051610180516101a0516101c0519498969796959491620000796101e062000390565b936200008761020062000390565b956200009561022062000390565b9b620000a361024062000390565b9833156200035c5760008054336001600160a01b03198216811783556040519290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600180558b156200034d57508b156200033b578c15620003295785156200031757841562000305578615620002f3576001600160a01b03881615620002e1576001600160a01b03891615620002cf576001600160a01b038a1615620002bd5784861015620002ab576109c480600b5410156200029657600554101562000296577fd36fa963ad16d3473577f6f3c68e0c369c04f095bedb1f1e0163d11f5785f2fd9c6101a09c8c60025580600355816004558260055583600b558460095585600a5586600655876007558860085560018060a01b038a1660018060a01b0319600d541617600d5560018060a01b038b1660018060a01b0319600c541617600c5560018060a01b038c1660018060a01b0319600e541617600e556040519c8d5260208d015260408c015260608b015260808a015260a089015260c088015260e087015261010086015261012085015260018060a01b031661014084015260018060a01b031661016083015260018060a01b0316610180820152a16080526040516149719081620003a682396080518181816103c0015281816107b70152610eb80152f35b60405160016251ee6960e01b03198152600490fd5b60405163cb0e875d60e01b8152600490fd5b60405163598e40c360e11b8152600490fd5b60405163c764c12360e01b8152600490fd5b604051630172f23760e11b8152600490fd5b604051630c7a88c360e21b8152600490fd5b604051632136548960e21b8152600490fd5b60405163870e604160e01b8152600490fd5b6040516307b4f43d60e11b8152600490fd5b6040516306bb2a0d60e31b8152600490fd5b63ef7facc160e01b8152600490fd5b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620003755756fe60808060405260043610156200001f575b5036156200001d57600080fd5b005b60003560e01c908163095b710d1462001c105750806315c088b314620019755780631655bc62146200195557806318160ddd1462001935578063238ac933146200190a57806330a2aa20146200167f5780634c7766b5146200165f57806361d027b3146200163457806365e5968d14620015d65780636bb922dd14620015b65780636d04eb9f1462001596578063715018a61462001539578063758b647a14620011f757806385f377ca14620011cc5780638da5cb5b14620011a157806394b6c1601462000ee7578063a82ed9ec1462000ea0578063ace1bfab1462000e5d578063b8606eef1462000e3d578063be74615f1462000e1d578063c68255a51462000af2578063ce5494bb146200088c578063d72b905e146200068b578063e7a1aeb7146200028a578063e8e70c4c146200026a578063f2fde38b14620001d5578063f978fd6114620001a25763fe94c269146200017d573862000010565b346200019d5760003660031901126200019d576020600854604051908152f35b600080fd5b346200019d5760203660031901126200019d57600435600052600f602052602060ff604060002054166040519015158152f35b346200019d5760203660031901126200019d57620001f262001c2d565b620001fc62001f42565b6001600160a01b039081169081156200025157600054826bffffffffffffffffffffffff60a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b604051631e4fbdf760e01b815260006004820152602490fd5b346200019d5760003660031901126200019d576020600454604051908152f35b60a03660031901126200019d5760043567ffffffffffffffff81116200019d57620002ba90369060040162001cce565b60243567ffffffffffffffff81116200019d57620002dd90369060040162001cce565b9060843567ffffffffffffffff81116200019d57620003056200036b91369060040162001cce565b916200031062001f6f565b6200032083604435868462001f93565b60025493600354946004549560055496600b549760095498600a549160075493600654956008549760018060a01b03600d54169960018060a01b03600c54169b6040519d8e62001c70565b8d5260208d01523360408d015260608c015260808b015260a08a015260c089015260e088015261010098898801526101208701526101408601526101608501526101808401526101a083015260018060a01b037f0000000000000000000000000000000000000000000000000000000000000000166101c08301526101e0820152604051906126df8083019183831067ffffffffffffffff841117620006755783926200041e926200225d853962001de0565b03906000f08015620005bc57604051634fb3fbe760e01b81526064356004820152926001600160a01b0391909116919060608460248134875af18015620005bc576000809560009262000638575b506040516370a0823160e01b815230600482015291602083602481895afa928315620005bc57600093620005fe575b5060405163a9059cbb60e01b81523360048201526024810184905260208160448160008b5af18015620005bc57620005c8575b50620004da8662001ec1565b6040516311b46d1960e11b8152916020836004818a5afa928315620005bc5760009362000577575b50906020977f9b7f29228c2bdf9201f5a9ef2e3f3e976a30d9bd1720f7d0d63b472dcc67531096959493926200054e6040519788978b8952338d8a01528060408a015288019062001db9565b946060870152608086015260a085015260c084015260e08301520390a160018055604051908152f35b9594939250906020863d602011620005b3575b81620005996020938362001c8e565b810103126200019d57945193949293919290602062000502565b3d91506200058a565b6040513d6000823e3d90fd5b620005ee9060203d602011620005f6575b620005e5818362001c8e565b81019062001d1b565b5087620004ce565b503d620005d9565b9092506020813d6020116200062f575b816200061d6020938362001c8e565b810103126200019d575191876200049b565b3d91506200060e565b9150506200066391945060603d6060116200066d575b6200065a818362001c8e565b81019062001d35565b909491866200046c565b503d6200064e565b634e487b7160e01b600052604160045260246000fd5b346200019d5760803660031901126200019d5760043567ffffffffffffffff81116200019d57620006c190369060040162001cce565b60243567ffffffffffffffff81116200019d57620006e490369060040162001cce565b9060643567ffffffffffffffff81116200019d576200070890369060040162001cce565b916200071983604435838562001f93565b600254600354600454600554600b54600954600a549160075493600654956008549760018060a01b03600d54169960018060a01b03600c54169b60206040519e8f90620007668262001c70565b815201528c60403391015260608d015260808c015260a08b015260c08a015260e08901526101008801526101208701526101408601526101608501526101808401526101a083015260018060a01b037f0000000000000000000000000000000000000000000000000000000000000000166101c08301526101e0820152604051906126df8083019183831067ffffffffffffffff8411176200067557839262000815926200225d853962001de0565b03906000f0908115620005bc576020916001600160a01b0316907f6de41bb1fb2a224107ad464c2638dcf5b26266e24bc6fa40b8b97d90f1fd7800906200088190620008618462001ec1565b604051918291858352338784015260606040840152606083019062001db9565b0390a1604051908152f35b346200019d576020806003193601126200019d576001600160a01b0380620008b362001c2d565b1690816000526010835260ff604060002054161562000ae05760405163011fa75760e71b8152926060846004816000875af1938415620005bc5760009460009160009162000ab5575b506040516362457f0b60e11b8152918383600481895afa928315620005bc5760009362000a80575b5060405163be74615f60e01b815284816004818a5afa908115620005bc5760009162000a4d575b50830180931162000a375760405163a8aa1b3160e01b81529380856004818a5afa948515620005bc57600095620009ca575b50907fa11672d49fffe086a179ad90e93d275d6298008a4b74d8a6cb2eff5bf5a9fe999760c09796959493926040519788528701526040860152606085015260808401521660a0820152a1005b90809493929796955081813d831162000a2f575b620009ea818362001c8e565b810103126200019d57519584871687036200019d579495939491929091907fa11672d49fffe086a179ad90e93d275d6298008a4b74d8a6cb2eff5bf5a9fe996200097d565b503d620009de565b634e487b7160e01b600052601160045260246000fd5b90508481813d831162000a78575b62000a67818362001c8e565b810103126200019d5751886200094b565b503d62000a5b565b9092508381813d831162000aad575b62000a9b818362001c8e565b810103126200019d5751918762000924565b503d62000a8f565b91505062000ad691945060603d6060116200066d576200065a818362001c8e565b91949186620008fc565b604051633f7a101960e01b8152600490fd5b62000afd3662001c44565b9162000b0862001f6f565b6040516325e17b5760e01b81526004810183905260248101939093526001600160a01b03169160608160448134875af1918215620005bc5760009160009060009462000df3575b5060405163a9059cbb60e01b81523360048201526024810183905260209490858160448160008b5af18015620005bc5762000dd1575b5047918262000da5575b6040516318160ddd60e01b815286816004818b5afa908115620005bc5760009162000d72575b506040516370a0823160e01b8152600481018990529087826024818c5afa908115620005bc5760009162000d3a575b62000bf0925062001d86565b92604051956311b46d1960e11b875287876004818c5afa948515620005bc57899760009662000d02575b506040519687528887015260408601526060850152608084015260a083015260c08201527ff6610dda82cea0160b2deaaf7dcfd1da470601afde9e3e90ec9777f07a71c8f160e03392a360405163fd62bcd760e01b81528181600481865afa908115620005bc5760009162000ce0575b5062000c97575b60018055005b817f5a559a9a4be3dacfba7a0da0a570245e186e11f99ddfc652c6d2c971d9efbb4992600052601082526040600020600160ff19825416179055604051908152a1808062000c91565b62000cfb9150823d8411620005f657620005e5818362001c8e565b8362000c8a565b975094508787813d811162000d32575b62000d1e818362001c8e565b810103126200019d57889651948a62000c1a565b503d62000d12565b90508782813d831162000d6a575b62000d54818362001c8e565b810103126200019d5762000bf091519062000be4565b503d62000d48565b90508681813d831162000d9d575b62000d8c818362001c8e565b810103126200019d57518862000bb5565b503d62000d80565b600080808086335af162000db862001d51565b5062000b8f575b6040516338822c1360e11b8152600490fd5b62000deb90863d8811620005f657620005e5818362001c8e565b508662000b85565b9193505062000e14915060603d6060116200066d576200065a818362001c8e565b92908562000b4f565b346200019d5760003660031901126200019d576020600a54604051908152f35b346200019d5760003660031901126200019d576020600554604051908152f35b346200019d5760203660031901126200019d576001600160a01b0362000e8262001c2d565b166000526010602052602060ff604060002054166040519015158152f35b346200019d5760003660031901126200019d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200019d5762000ef83662001c44565b909162000f0462001f6f565b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b039190911692602092909183816064816000895af18015620005bc576200117f575b5060405191630e30ec6360e31b8352600483015260248201526080816044816000875af1908115620005bc576000906000936000916000946200112f575b50600080808047335af162000f9f62001d51565b501562000dbf576040516318160ddd60e01b815281816004818a5afa908115620005bc57600091620010fc575b506040516370a0823160e01b8152600481018890529082826024818b5afa908115620005bc57600091620010c4575b62001007925062001d86565b916040516311b46d1960e11b815282816004818b5afa928315620005bc576000936200108b575b5050604080519687526020870193909352918501929092526060840152608083019190915260a082015233907f7811ffe97d7272ed69f2ebe0eb5b684cbcaa5dbd3500f11a5e457d1880aa4dd6908060c081015b0390a360018055005b90809350813d8311620010bc575b620010a5818362001c8e565b810103126200019d5790519084620010826200102e565b503d62001099565b90508282813d8311620010f4575b620010de818362001c8e565b810103126200019d576200100791519062000ffb565b503d620010d2565b90508181813d831162001127575b62001116818362001c8e565b810103126200019d57518762000fcc565b503d6200110a565b9450925050506080823d60801162001176575b81620011516080938362001c8e565b810103126200019d578151818301516040840151606090940151909390928662000f8b565b3d915062001142565b6200119990843d8611620005f657620005e5818362001c8e565b508462000f4d565b346200019d5760003660031901126200019d576000546040516001600160a01b039091168152602090f35b346200019d5760003660031901126200019d57600c546040516001600160a01b039091168152602090f35b60403660031901126200019d576200120e62001c2d565b6200121862001f6f565b60018060a01b0316604051634fb3fbe760e01b8152602435600482015260608160248134865af1908115620005bc5760009160009160009162001512575b506040516370a0823160e01b8082523060048301526020949085836024818a5afa928315620005bc57600093620014dd575b5060405163a9059cbb60e01b815233600482015260248101849052868160448160008c5af18015620005bc57620014bb575b5047806200149a575b506040516318160ddd60e01b815286816004818b5afa908115620005bc5760009162001467575b5060405191825287600483015286826024818b5afa908115620005bc576000916200142f575b6200131c925062001d86565b6040516311b46d1960e11b81529386856004818b5afa908115620005bc578895600092620013d5575b5090620013a1917f808fdde3ed072c1c71e9531614f79dbafd5a4e3e3c8e3eb605d847578aa9b4999596976040519586953399879260a094919796959260c0850198855260208501526040840152606083015260808201520152565b0390a360405163fd62bcd760e01b81528181600481865afa908115620005bc5760009162000ce0575062000c975760018055005b8880929697508193503d831162001427575b620013f3818362001c8e565b810103126200019d57518794937f808fdde3ed072c1c71e9531614f79dbafd5a4e3e3c8e3eb605d847578aa9b49962001345565b503d620013e7565b90508682813d83116200145f575b62001449818362001c8e565b810103126200019d576200131c91519062001310565b503d6200143d565b90508681813d831162001492575b62001481818362001c8e565b810103126200019d575188620012ea565b503d62001475565b600080808093335af1620014ad62001d51565b501562000dbf5787620012c3565b620014d590873d8911620005f657620005e5818362001c8e565b5087620012ba565b9092508581813d83116200150a575b620014f8818362001c8e565b810103126200019d5751918762001288565b503d620014ec565b91505062001532915060603d6060116200066d576200065a818362001c8e565b8462001256565b346200019d5760003660031901126200019d576200155662001f42565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346200019d5760003660031901126200019d576020600754604051908152f35b346200019d5760003660031901126200019d576020600954604051908152f35b346200019d5760203660031901126200019d576004356011548110156200019d5760116000527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801546040516001600160a01b039091168152602090f35b346200019d5760003660031901126200019d57600d546040516001600160a01b039091168152602090f35b346200019d5760003660031901126200019d576020600654604051908152f35b346200019d57620016903662001c44565b916200169b62001f6f565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b0391909116929060209081816064816000895af18015620005bc57620018e8575b506040519163e98d5cd560e01b835283600484015260248301526060826044816000885af1918215620005bc57600091600091600094620018bf575b50600080808047335af16200173362001d51565b501562000dbf576040516318160ddd60e01b815281816004818a5afa908115620005bc576000916200188c575b506040516370a0823160e01b8152600481018890529082826024818b5afa908115620005bc5760009162001854575b6200179b925062001d86565b916040516311b46d1960e11b815282816004818b5afa928315620005bc576000936200181b575b5050604080519687526020870193909352918501929092526060840152608083019190915260a082015233907f17f90346238171af1d19cb32cdbf0a10b0c9ddd9ed2928cb2a3729d6c7b3dc45908060c0810162001082565b90809350813d83116200184c575b62001835818362001c8e565b810103126200019d579051908462001082620017c2565b503d62001829565b90508282813d831162001884575b6200186e818362001c8e565b810103126200019d576200179b9151906200178f565b503d62001862565b90508181813d8311620018b7575b620018a6818362001c8e565b810103126200019d57518762001760565b503d6200189a565b91509250620018e0915060603d6060116200066d576200065a818362001c8e565b92866200171f565b6200190290823d8411620005f657620005e5818362001c8e565b5084620016e3565b346200019d5760003660031901126200019d57600e546040516001600160a01b039091168152602090f35b346200019d5760003660031901126200019d576020600254604051908152f35b346200019d5760003660031901126200019d576020600354604051908152f35b346200019d576101a03660031901126200019d576001600160a01b036101443581811681036200019d57610164359082821682036200019d57610184359280841684036200019d57620019c762001f42565b6004351562001bfe576024351562001bec576044351562001bda57610104351562001bc85760e4351562001bb657610124351562001ba4578082161562001b92578083161562001b80578084161562001b6e5760e43561010435101562001b5c576109c480600b54101562001b4757600554101562001b47577fd36fa963ad16d3473577f6f3c68e0c369c04f095bedb1f1e0163d11f5785f2fd93816101a094600435600255602435600355604435600455606435600555608435600b5560a43560095560c435600a5560e43560065561010435600755610124356008556bffffffffffffffffffffffff60a01b82861681600d541617600d5582821681600c541617600c5582841690600e541617600e5581604051956004358752602435602088015260443560408801526064356060880152608435608088015260a43560a088015260c43560c088015260e43560e08801526101043561010088015261012435610120880152166101408601521661016084015216610180820152a1005b60405160016251ee6960e01b03198152600490fd5b60405163cb0e875d60e01b8152600490fd5b60405163598e40c360e11b8152600490fd5b60405163c764c12360e01b8152600490fd5b604051630172f23760e11b8152600490fd5b604051630c7a88c360e21b8152600490fd5b604051632136548960e21b8152600490fd5b60405163870e604160e01b8152600490fd5b6040516307b4f43d60e11b8152600490fd5b6040516306bb2a0d60e31b8152600490fd5b60405163ef7facc160e01b8152600490fd5b346200019d5760003660031901126200019d57602090600b548152f35b600435906001600160a01b03821682036200019d57565b60609060031901126200019d576004356001600160a01b03811681036200019d57906024359060443590565b610200810190811067ffffffffffffffff8211176200067557604052565b90601f8019910116810190811067ffffffffffffffff8211176200067557604052565b67ffffffffffffffff81116200067557601f01601f191660200190565b81601f820112156200019d5780359062001ce88262001cb1565b9262001cf8604051948562001c8e565b828452602083830101116200019d57816000926020809301838601378301015290565b908160209103126200019d575180151581036200019d5790565b908160609103126200019d578051916040602083015192015190565b3d1562001d81573d9062001d658262001cb1565b9162001d75604051938462001c8e565b82523d6000602084013e565b606090565b9190820391821162000a3757565b60005b83811062001da85750506000910152565b818101518382015260200162001d97565b9060209162001dd48151809281855285808601910162001d94565b601f01601f1916010190565b60208152815162001e1b62001e046102009283602086015261022085019062001db9565b6020850151848203601f1901604086015262001db9565b9260408101519060018060a01b03809216606085015260608101516080850152608081015160a085015260a081015160c085015260c081015160e085015260e0810151610100908186015281015161012090818601528101516101409081860152810151610160908186015281015161018090818601528101516101a09081860152810151826101c091168186015281015190826101e092168286015201511691015290565b601154680100000000000000008110156200067557600181018060115581101562001f2c5760116000527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319166001600160a01b03909216919091179055565b634e487b7160e01b600052603260045260246000fd5b6000546001600160a01b0316330362001f5757565b60405163118cdaa760e01b8152336004820152602490fd5b60026001541462001f81576002600155565b604051633ee5aeb560e01b8152600490fd5b9092805190602092838201928320946000958652600f855260409660ff8888205416620021795760886200201e9189519384918962001fdc818501988981519384920162001d94565b830162001ff2825180938d808501910162001d94565b0190898201523060601b8b8201524660548201523360601b607482015203606881018452018262001c8e565b519020600e547f19457468657265756d205369676e6564204d6573736167653a0a3332000000008652601c91909152603c85206001600160a01b039182166200206884836200218a565b50600481959295101562002165579088929115948562002158575b50508315620020be575b50505015620020ad575190208252600f905220805460ff19166001179055565b8451638baa579f60e01b8152600490fd5b81929350885187810190630b135d3f60e11b9586835260248201528a60448201526200210281620020f3606482018a62001db9565b03601f19810183528262001c8e565b51915afa906200211162001d51565b826200214a575b826200212a575b50503885816200208d565b909150848180518101031262002146578401511438806200211f565b8580fd5b915084825110159162002118565b1681149350388062002083565b634e487b7160e01b89526021600452602489fd5b875163196291ad60e11b8152600490fd5b8151919060418303620021be57620021b792506020820151906060604084015193015160001a90620021c9565b9192909190565b505060009160029190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116200225057926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa15620022445780516001600160a01b038116156200223b57918190565b50809160019190565b604051903d90823e3d90fd5b5050506000916003919056fe61024080604052346200068a57620026df803803809162000021828562000a0a565b833981016020828203126200068a5781516001600160401b0381116200068a576102008184018303126200068a576040519161020083016001600160401b038111848210176200063957604052838201516001600160401b0381116200068a578162000091918487010162000a2e565b835283820160200151916001600160401b0383116200068a57620000c16101e0926200017d948388010162000a2e565b94856020860152620000d860408383010162000aa4565b6040860152808201606081810151908701526080808201519087015260a0808201519087015260c0808201519087015260e080820151908701526101008082015190870152610120808201519087015261014080820151908701526101608082015190870152610180808201519087015262000158906101a00162000aa4565b6101a08601526200016f6101c08383010162000aa4565b6101c0860152010162000aa4565b6101e0820152805180519092906001600160401b0381116200063957600354600181811c91168015620009ff575b6020821014620008fd57601f811162000999575b506020601f82116001146200092a57819293946000926200091e575b50508160011b916000199060031b1c1916176003555b8051906001600160401b038211620006395760045490600182811c9216801562000913575b6020831014620008fd5781601f8493116200088b575b50602090601f8311600114620007fc57600092620007f0575b50508160011b916000199060031b1c1916176004555b600160055561010061ff001960095416176009556060810151903015620007d757600254908282018211620007c15782600493602093016002553060005260008352604060002081815401905560405190815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843093a3606081015160065560a081015180600855608052608081015160075560018060a01b036040820151166101805260c081015160a05260e081015160c05260018060a01b036101a0820151166101c05260018060a01b036101e0820151166101e052610100810151610140526101208101516101605261014081015160e05261016081015161010052610180810151610120526101c060018060a01b039101511680610220523361020052604051928380926315ab88c960e31b82525afa90811562000698576000916200077f575b506000906001600160a01b0316301015620006e65750610220516040516315ab88c960e31b815290602090829060049082906001600160a01b03165afa80156200069857600090620006a4575b60049150305b6102205160405163c45a015560e01b81529360209185919082906001600160a01b03165afa92831562000698576000936200064f575b506040516001600160601b0319606092831b81166020830190815293831b811660348301526028825291810192918184106001600160401b03851117620006395760e092846040528251902090608083019560ff60f81b875260601b16608183015260958201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f60b582015260558352019181831060018060401b0384111762000639576040839052905190206001600160a01b03166101a052611c25908162000aba823960805181818161056401526109d9015260a0518181816113a7015261184c015260c05181818161094001528181610cba0152611878015260e051818181610e6d0152611a630152610100518181816110500152611aa20152610120518181816101fe01526113280152610140518181816104aa01526108b101526101605181818161052901526108ef0152610180518161164a01526101a0518181816105b00152818161062a0152610a8601526101c0518181816102f10152818161097001528181610d4501528181610ea501528181610f5301526111c901526101e05181818161031b015281816109a701528181610c4001528181610d6f01528181610f7d01526111f3015261020051818181610271015281816104e20152818161079c01528181610cec01528181610ee801526111330152610220518181816107df01526113fe0152f35b634e487b7160e01b600052604160045260246000fd5b9092506020813d6020116200068f575b816200066e6020938362000a0a565b810103126200068a57620006829062000aa4565b91386200042c565b600080fd5b3d91506200065f565b6040513d6000823e3d90fd5b506020813d602011620006dd575b81620006c16020938362000a0a565b810103126200068a57620006d760049162000aa4565b620003f0565b3d9150620006b2565b610220516040516315ab88c960e31b81529190602090839060049082906001600160a01b03165afa908115620007735780916200072b575b50600491503090620003f6565b90506020823d6020116200076a575b81620007496020938362000a0a565b810103126200076757506200076060049162000aa4565b386200071e565b80fd5b3d91506200073a565b604051903d90823e3d90fd5b90506020813d602011620007b8575b816200079d6020938362000a0a565b810103126200068a57620007b19062000aa4565b38620003a3565b3d91506200078e565b634e487b7160e01b600052601160045260246000fd5b60405163ec442f0560e01b815260006004820152602490fd5b01519050388062000245565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f19841685106200086f576001945083601f1981161062000855575b505050811b016004556200025b565b015160001960f88460031b161c1916905538808062000846565b8181015183556020948501946001909301929091019062000829565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810160208510620008f5575b90849392915b601f830160051c82018110620008e55750506200022c565b60008155859450600101620008cd565b5080620008c7565b634e487b7160e01b600052602260045260246000fd5b91607f169162000216565b015190503880620001db565b600360005260206000209060005b601f1984168110620009805750600193949583601f1981161062000966575b505050811b01600355620001f1565b015160001960f88460031b161c1916905538808062000957565b9091602060018192858a01518155019301910162000938565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810160208410620009f7575b601f830160051c82018110620009ea575050620001bf565b60008155600101620009d2565b5080620009d2565b90607f1690620001ab565b601f909101601f19168101906001600160401b038211908210176200063957604052565b919080601f840112156200068a5782516001600160401b03811162000639576020906040519262000a6983601f19601f850116018562000a0a565b8184528282870101116200068a5760005b81811062000a9057508260009394955001015290565b858101830151848201840152820162000a7a565b51906001600160a01b03821682036200068a5756fe608060408181526004918236101561001657600080fd5b600092833560e01c91826302d05d3f146116365750816306fdde031461153f578163095ea7b314611495578163152044811461144c5781631655bc621461142d5781631694505e146113e957816318160ddd146113ca5781631a1c6e531461138f5781632368da32146112df57816323b872dd146112a257816325e17b5714611121578163313ce5671461110557816342966c68146110e757816349a30246146110735781634c7766b5146110385781634fb3fbe714610ed457816361d027b314610e905781636d04eb9f14610e5557816370a0823114610e1e5781637187631814610cdd57816371ea0d8e14610ca257816379cc679014610c6f57816385f377ca14610c2b5781638fd3ab801461077e57816390825c281461075a57816395d89b4114610659578163a8aa1b3114610615578163a9059cbb14610587578163b026a1211461054c578163be74615f14610511578163c45a0155146104cd578163c48afe1614610492578163c6d8b7781461046b578163c78d0b0e1461044c578163d3728de414610431578163dd62ed3e146103e8578163e8e70c4c146103c9578163e98d5cd51461026457508063fd62bcd714610241578063fd967f47146102255763fe94c269146101e857600080fd5b34610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5034610221578160031936011261022157602090516127108152f35b503461022157816003193601126102215760209060ff6009541690519015158152f35b8261026e3661171a565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036103ba5760ff600954166103ab576102ca6102b860085484611768565b6102c484600754611791565b9061179e565b916102d48361183d565b9390956102ea856102e589856117be565b6117be565b95610315887f0000000000000000000000000000000000000000000000000000000000000000611ada565b61033f867f0000000000000000000000000000000000000000000000000000000000000000611ada565b861061039d57508161036a61037e9261035f610399979695600754611791565b6007556008546117be565b6008556103778633611ada565b303361197b565b51938493846040919493926060820195825260208201520152565b0390f35b8351630a1c173f60e41b8152fd5b5163058aab2d60e21b81528390fd5b51630636a15760e11b81528390fd5b5050346102215781600319360112610221576020906008549051908152f35b505034610221578060031936011261022157806020926104066116c2565b61040e6116dd565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b50503461022157816003193601126102215751908152602090f35b5050346102215781600319360112610221576020906006549051908152f35b50503461022157816003193601126102215760209060ff60095460081c1690519015158152f35b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b505034610221578160031936011261022157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b828434610612578160031936011261061257506105a26116c2565b916001600160a01b038084167f00000000000000000000000000000000000000000000000000000000000000009091161480610603575b6105f557506105ee602092602435903361197b565b5160018152f35b9051633b95747f60e21b8152fd5b5060ff60095460081c166105d9565b80fd5b505034610221578160031936011261022157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b83833461022157816003193601126102215780519180938054916001908360011c9260018516948515610750575b602095868610811461073d5785895290811561071957506001146106c1575b61039987876106b7828c0383611730565b5191829182611679565b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8284106107065750505082610399946106b7928201019486806106a6565b80548685018801529286019281016106e8565b60ff19168887015250505050151560051b83010192506106b78261039986806106a6565b634e487b7160e01b845260228352602484fd5b93607f1693610687565b505034610221578160031936011261022157602090610777611802565b9051908152f35b91905034610b565782600319360112610b56576001600160a01b03907f000000000000000000000000000000000000000000000000000000000000000082163303610c1c5761ff0019600954166009553084526020908482528085205491837f000000000000000000000000000000000000000000000000000000000000000016825163c45a015560e01b815282818881855afa908115610b9c578891610bff575b5083516315ab88c960e31b81528884828a81875afa918215610bf3579189828a889581979594610bd3575b50604493948a5197889687956364e329cb60e11b87523090870152166024850152165af18015610b9c57610ba6575b5082519563095ea7b360e01b8752818188015284602488015282876044818b305af1968715610b9c576109a1959697610b7f575b507f0000000000000000000000000000000000000000000000000000000000000000966109fe6108de89476117be565b6102e561092d61092661091d6109157f000000000000000000000000000000000000000000000000000000000000000080966117be565b600754611768565b6008549061179e565b809b6117be565b9a6102e58c6109d161096d6127106109657f000000000000000000000000000000000000000000000000000000000000000087611768565b0480956117be565b917f00000000000000000000000000000000000000000000000000000000000000009d8e61099b8986611791565b90611ada565b6109cb857f0000000000000000000000000000000000000000000000000000000000000000611ada565b30611b50565b6102e56008547f0000000000000000000000000000000000000000000000000000000000000000906117be565b95600a4201804211610b6c579060608b94939260c48b8b8b51998a94859363f305d71960e01b8552308b860152806024860152604485015282606485015230608485015260a48401525af1948515610b62579084939291879596610b20575b5060449291849147610b0f575b508851968795869463a9059cbb60e01b865285015260248401527f0000000000000000000000000000000000000000000000000000000000000000165af18015610b055761039995969750610ad7575b505051938493846040919493926060820195825260208201520152565b81610af692903d10610afe575b610aee8183611730565b8101906117ea565b503880610aba565b503d610ae4565b83513d89823e3d90fd5b610b1a904790611ada565b38610a6a565b94509450906060843d606011610b5a575b81610b3e60609383611730565b81010312610b56579286015193859391906044610a5d565b8280fd5b3d9150610b31565b87513d86823e3d90fd5b634e487b7160e01b8b526011845260248bfd5b610b9590843d8611610afe57610aee8183611730565b50386108ae565b84513d8a823e3d90fd5b610bc590833d8511610bcc575b610bbd8183611730565b8101906117cb565b503861087a565b503d610bb3565b60449450610bed90873d8911610bcc57610bbd8183611730565b9361084b565b508551903d90823e3d90fd5b610c169150833d8511610bcc57610bbd8183611730565b38610820565b51630636a15760e11b81529050fd5b505034610221578160031936011261022157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346102215736600319011261061257610c9f610c8b6116c2565b60243590610c9a8233836118a8565b611b50565b80f35b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b9050610ce83661171a565b92907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610e105760ff60095416610e0257610d2d8461183d565b929091610d3e846102e585896117be565b94610d69847f0000000000000000000000000000000000000000000000000000000000000000611ada565b610d93857f0000000000000000000000000000000000000000000000000000000000000000611ada565b610dae610da260075489611768565b6102c4896008546117be565b918211610df45750610dd3608096610dc783303361197b565b61035f83600754611791565b600855610de08533611ada565b815194855260208501528301526060820152f35b8251630a1c173f60e41b8152fd5b505163058aab2d60e21b8152fd5b5051630636a15760e11b8152fd5b5050346102215760203660031901126102215760209181906001600160a01b03610e466116c2565b16815280845220549051908152f35b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b505034610221578160031936011261022157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9190506020366003190112610b56578135927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610e105760ff60095416610e0257818491308152806020522054111561102b57610f3b3461183d565b939092610f4c856102e586346117be565b90610f77857f0000000000000000000000000000000000000000000000000000000000000000611ada565b610fa1867f0000000000000000000000000000000000000000000000000000000000000000611ada565b600754610fae8184611768565b91610fc0600854936102c48686611791565b94851061101d5750610ff1928492610fdf6103999796610fe7946117be565b600755611791565b600855333061197b565b610ff9611a59565b611001611a98565b5192839234846040919493926060820195825260208201520152565b8551630a1c173f60e41b8152fd5b5163904db1ff60e01b8152fd5b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b82843461061257611083366116f3565b9193509190156110c557906102c4826110b16110aa6110a46110b79661183d565b90611791565b9582611768565b926117be565b905b82519182526020820152f35b806110b16110d6946102c493611768565b6110e26110a48261183d565b6110b9565b83903461022157602036600319011261022157610c9f903533611b50565b5050346102215781600319360112610221576020905160128152f35b905061112c3661171a565b90939092907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610e105760ff60095416610e0257818591308152806020522054111561102b5761119861118c60085486611768565b6102c4866007546117be565b936111a28561183d565b9390956111b8856111b38984611791565b611791565b9586116112935761122e906111ed887f0000000000000000000000000000000000000000000000000000000000000000611ada565b611217867f0000000000000000000000000000000000000000000000000000000000000000611ada565b611223846007546117be565b600755600854611791565b60085584341160001461126f57509061125f610399939261125861125287346117be565b33611ada565b333061197b565b611267611a59565b61037e611a98565b84341061128557509061125f6103999392611258565b82516367c45b4f60e11b8152fd5b508251630a1c173f60e41b8152fd5b505034610221576060366003190112610221576020906105ee6112c36116c2565b6112cb6116dd565b604435916112da8333836118a8565b61197b565b8284346106125780600319360112610612576113086006543083528260205283832054906117be565b90612710918281029080820484149015171561137c576020945061134d907f00000000000000000000000000000000000000000000000000000000000000009061179e565b906064821015611364575050506064905b51908152f35b508181111561137557505b9061135e565b905061136f565b634e487b7160e01b825260118552602482fd5b505034610221578160031936011261022157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050346102215781600319360112610221576020906002549051908152f35b505034610221578160031936011261022157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346102215781600319360112610221576020906007549051908152f35b8284346106125761145c366116f3565b9093509091901561148457906102c48261147e6110aa6110a46110b79661183d565b92611791565b8061147e6110d6946102c493611768565b905034610b565781600319360112610b56576114af6116c2565b602435903315611528576001600160a01b031691821561151157508083602095338152600187528181208582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8351634a1406b160e11b8152908101859052602490fd5b835163e602df0560e01b8152808401869052602490fd5b91905034610b565782600319360112610b565780519183600354906001908260011c9260018116801561162c575b602095868610821461161957508488529081156115f7575060011461159e575b61039986866106b7828b0383611730565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106115e45750505082610399946106b792820101943861158d565b80548685018801529286019281016115c7565b60ff191687860152505050151560051b83010192506106b7826103993861158d565b634e487b7160e01b845260229052602483fd5b93607f169361156d565b8490346102215781600319360112610221577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6020808252825181830181905290939260005b8281106116ae57505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161168c565b600435906001600160a01b03821682036116d857565b600080fd5b602435906001600160a01b03821682036116d857565b60809060031901126116d85760043590602435906044359060643580151581036116d85790565b60409060031901126116d8576004359060243590565b90601f8019910116810190811067ffffffffffffffff82111761175257604052565b634e487b7160e01b600052604160045260246000fd5b8181029291811591840414171561177b57565b634e487b7160e01b600052601160045260246000fd5b9190820180921161177b57565b81156117a8570490565b634e487b7160e01b600052601260045260246000fd5b9190820391821161177b57565b908160209103126116d857516001600160a01b03811681036116d85790565b908160209103126116d8575180151581036116d85790565b600854670de0b6b3a7640000908181029080820483149015171561177b576118306118399160025490611768565b6007549061179e565b0490565b6118a5611871916127109283917f000000000000000000000000000000000000000000000000000000000000000090611768565b049161189d7f000000000000000000000000000000000000000000000000000000000000000084611768565b0480926117be565b91565b9160018060a01b0380931691600093838552600160205260409384862091831691828752602052848620549260001984036118e7575b50505050505050565b84841061194b5750801561193357811561191b578552600160205283852090855260205203912055388080808080806118de565b8451634a1406b160e11b815260048101879052602490fd5b845163e602df0560e01b815260048101879052602490fd5b8551637dc7a0d960e11b81526001600160a01b039190911660048201526024810184905260448101859052606490fd5b916001600160a01b03808416928315611a405716928315611a2757600090838252816020526040822054908382106119f5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b611a61611802565b7f000000000000000000000000000000000000000000000000000000000000000010611a8957565b600160ff196009541617600955565b611aa0611802565b7f000000000000000000000000000000000000000000000000000000000000000010611ac857565b6040516353dfa97560e01b8152600490fd5b60008080809481945af1903d15611b4a573d9067ffffffffffffffff8211611b365760405191611b14601f8201601f191660200184611730565b825260203d92013e5b15611b2457565b6040516338822c1360e11b8152600490fd5b634e487b7160e01b81526041600452602490fd5b50611b1d565b906001600160a01b038216908115611a405760009282845283602052604084205490828210611bbd5750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fdfea26469706673582212206c168d4114c8a8139787643a85f4ab9dc680349cba703cbf283159035036401064736f6c63430008170033a26469706673582212204ae8d469a2daafac0e5ce0c6050afda8d603f365229a8383b26eb9a77f20015e64736f6c634300081700330000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000036ccfbb244887eea400000000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000176b344f2a78c00000000000000000000000000000000000000000000000000015af1d78b58c40000000000000000000000000000000000000000000002955cf104607ca9a437070300000000000000000000000056c4f0504f577a283073ab780b6850fec4121389000000000000000000000000377cee6040c7300c6b31ab0f17d3a6e5d80590320000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2400000000000000000000000033f81388ddc62efbbaa44a36315a0e244065b27e