0 txs
66 calls
constructor
No constructor.
functions
evolveLiquidity
viewfunction evolveLiquidity() view returns (uint256)
factory
viewfunction factory() view returns (address)
getAmountIn
purefunction getAmountIn(uint256 amountOut, uint256 reserveOut, uint256 reserveIn) pure returns (uint256 amountIn)
getAmountInWithFee
viewfunction getAmountInWithFee(uint256 amountOut, uint256 reserveOut, uint256 reserveIn) view returns (uint256 amountInWithFee)
getAmountOut
purefunction getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountOut)
getAmountOutWithFee
viewfunction getAmountOutWithFee(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) view returns (uint256 amountOutWithFee)
owner
viewfunction owner() view returns (address)
platformFee
viewfunction platformFee() view returns (uint256)
platformWallet
viewfunction platformWallet() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
weth
viewfunction weth() view returns (address)
buy
nonpayablefunction buy(uint256 amountToExchange, uint256 amountMinMax, bool exactIn, address rock, address to, uint256 deadline)
buyWithETH
payablefunction buyWithETH(uint256 amountMinMax, bool exactIn, address rock, address to, uint256 deadline) payable
initialize
nonpayablefunction initialize(address owner_, address weth_, address platformWallet_, uint256 platformFee_, uint256 evolveLiquidity_)
initializeFactory
nonpayablefunction initializeFactory(address newFactory)
launch
nonpayablefunction launch(string name, string symbol, string imageUrl, uint256 deadline) returns (address rock)
renounceOwnership
nonpayablefunction renounceOwnership()
sell
nonpayablefunction sell(uint256 amountToExchange, uint256 amountMinMax, bool exactIn, bool toUnwrap, address rock, address to, uint256 deadline)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateEvolveLiquidity
nonpayablefunction updateEvolveLiquidity(uint256 newEvolveLiquidity)
updatePlatformFee
nonpayablefunction updatePlatformFee(uint256 newPlatformFee)
updatePlatformWallet
nonpayablefunction updatePlatformWallet(address newPlatformWallet)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Buy
event Buy(address indexed rock, address indexed pair, uint256 amountWETH, uint256 amountRock, uint256 reserveWETH, uint256 reserveRock, address to)
Evolve
event Evolve(address indexed rock, address indexed pair)
Initialized
event Initialized(uint64 version)
InitializeFactory
event InitializeFactory(address newFactory, address oldFactory)
Launch
event Launch(string name, string symbol, string imageUrl, address indexed creator, address indexed rock, address indexed pair, uint256 totalPairs)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Sell
event Sell(address indexed rock, address indexed pair, uint256 amountRock, uint256 amountWETH, uint256 reserveWETH, uint256 reserveRock, address to)
UpdateEvolveLiquidity
event UpdateEvolveLiquidity(uint256 newEvolveLiquidity, uint256 oldEvolveLiquidity)
UpdatePlatformFee
event UpdatePlatformFee(uint256 newPlatformFee, uint256 oldPlatformFee)
UpdatePlatformWallet
event UpdatePlatformWallet(address newPlatformWallet, address oldPlatformWallet)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExceededDeadline
error ExceededDeadline()
ExcessiveInputAmount
error ExcessiveInputAmount()
FactoryNotInitialized
error FactoryNotInitialized()
FailedCall
error FailedCall()
ImageUrlInvalid
error ImageUrlInvalid()
InsufficientAmount
error InsufficientAmount()
InsufficientOutputAmount
error InsufficientOutputAmount()
InvalidAddress
error InvalidAddress()
InvalidAssignment
error InvalidAssignment()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052671bc16d674ec800005f55348015601d575f5ffd5b506080516126856100445f395f8181611596015281816115bf015261177401526126855ff3fe608060405260043610610183575f3560e01c80638da5cb5b116100d1578063bb1a737f1161007c578063f2fde38b11610057578063f2fde38b1461044f578063fa2af9da1461046e578063fe558f101461048d575f5ffd5b8063bb1a737f14610409578063bc22593e1461041c578063c45a015514610430575f5ffd5b8063aa0b5988116100ac578063aa0b598814610376578063ad3cb1cc14610395578063ada4ef30146103ea575f5ffd5b80638da5cb5b146102fc57806398110acd14610338578063a6b63eb814610357575f5ffd5b806352d1902d11610131578063715018a61161010c578063715018a6146102aa5780637e4697fc146102be57806385f8c259146102dd575f5ffd5b806352d1902d14610258578063538a3f0e1461026c57806355960aa41461028b575f5ffd5b8063364a694411610161578063364a6944146101ed5780633fc8cef31461020e5780634f1ef28614610245575f5ffd5b8063054d50d41461018757806326232a2e146101b95780633447f104146101ce575b5f5ffd5b348015610192575f5ffd5b506101a66101a1366004611f76565b6104ac565b6040519081526020015b60405180910390f35b3480156101c4575f5ffd5b506101a660045481565b3480156101d9575f5ffd5b506101a66101e8366004611f76565b6104c0565b3480156101f8575f5ffd5b5061020c610207366004611fc0565b6104cf565b005b348015610219575f5ffd5b5060015461022d906001600160a01b031681565b6040516001600160a01b0390911681526020016101b0565b61020c610253366004612050565b610521565b348015610263575f5ffd5b506101a6610540565b348015610277575f5ffd5b5061020c610286366004612117565b61056e565b348015610296575f5ffd5b5061020c6102a5366004612132565b6106f9565b3480156102b5575f5ffd5b5061020c610a8d565b3480156102c9575f5ffd5b5061020c6102d83660046121a9565b610aa0565b3480156102e8575f5ffd5b506101a66102f7366004611f76565b610ab4565b348015610307575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661022d565b348015610343575f5ffd5b5061022d610352366004612205565b610ac0565b348015610362575f5ffd5b5061020c6103713660046122ac565b610d06565b348015610381575f5ffd5b5061020c6103903660046121a9565b610f58565b3480156103a0575f5ffd5b506103dd6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b09190612303565b3480156103f5575f5ffd5b5061020c610404366004612117565b610f69565b61020c610417366004612338565b610f7a565b348015610427575f5ffd5b506101a65f5481565b34801561043b575f5ffd5b5060025461022d906001600160a01b031681565b34801561045a575f5ffd5b5061020c610469366004612117565b61102e565b348015610479575f5ffd5b5060035461022d906001600160a01b031681565b348015610498575f5ffd5b506101a66104a7366004611f76565b611086565b5f6104b8848484611095565b949350505050565b5f6104b884848460045461111d565b806104d981611157565b5f5f5f6104e88a8a8a8a611188565b6001549295509093509150610508906001600160a01b0316338386611335565b610515838389848a6113b7565b50505050505050505050565b61052961158b565b6105328261165b565b61053c8282611663565b5050565b5f610549611769565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6105766117cb565b60015474010000000000000000000000000000000000000000900460ff16156105c2576105c27f7fd217e30000000000000000000000000000000000000000000000000000000061183f565b6001600160a01b0381166105f9576105f97fe6c4247b0000000000000000000000000000000000000000000000000000000061183f565b6002546001600160a01b0390811690821603610638576106387f7fd217e30000000000000000000000000000000000000000000000000000000061183f565b600254604080516001600160a01b03808516825290921660208301527f34baf96e7fcacc94a5a9a7ebc82e37640ca3e68552e21a79f359caf50e2fe2fd910160405180910390a1600280546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b8061070381611157565b6002546040517f1a788a020000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301525f921690631a788a0290602401602060405180830381865afa158015610764573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610788919061238f565b90505f5f826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ec91906123cc565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691505f5f8a1561085f578c91506108278284866104ac565b90508b81101561085a5761085a7f42301c230000000000000000000000000000000000000000000000000000000061183f565b6108a0565b61086a8d8585610ab4565b91508c90508b8211156108a0576108a07fe1b0da4f0000000000000000000000000000000000000000000000000000000061183f565b6108b56001600160a01b038a16338785611335565b6040517f135f0f8500000000000000000000000000000000000000000000000000000000815260048101839052602481018290525f604482018190528b151560648301526001600160a01b038a8116608484015290919087169063135f0f859060a4016080604051808303815f875af1158015610934573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109589190612418565b60408051858152602081018590526dffffffffffffffffffffffffffff93841681830181905292909316606084018190526001600160a01b038f811660808601529151929a509850939650919450888316928d16917fce0f086a8f92779a80758b1d481f2437e363e3c36bb300b37baa5b451b563dfd9181900360a00190a3856001600160a01b0316630d8d7f146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a37919061245c565b15610a7d57856001600160a01b03168a6001600160a01b03167f3429e50ffcf5595548958b612e8accf95b62580eba87ebb4e372dfe1d0a1edd060405160405180910390a35b5050505050505050505050505050565b610a956117cb565b610a9e5f611847565b565b610aa86117cb565b610ab1816118cf565b50565b5f6104b8848484611970565b5f81610acb81611157565b60015474010000000000000000000000000000000000000000900460ff1615155f03610b1a57610b1a7f11aa167d0000000000000000000000000000000000000000000000000000000061183f565b610b6a60405180602001604052805f81525086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092939250506119e49050565b15610b9857610b987facd220870000000000000000000000000000000000000000000000000000000061183f565b5f5f60025f9054906101000a90046001600160a01b03166001600160a01b031663a0d6bd518c8c8c8c60035f9054906101000a90046001600160a01b03166004545f546040518863ffffffff1660e01b8152600401610bfd97969594939291906124a0565b6060604051808303815f875af1158015610c19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3d91906124ef565b809350819450829650505050816001600160a01b031663be9a65556040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c81575f5ffd5b505af1158015610c93573d5f5f3e3d5ffd5b50505050816001600160a01b0316846001600160a01b0316336001600160a01b03167f1b200b14bbb7bcbc963d70fd0a90564ad0050987f8fe627a2ac1a2e58179c5038e8e8e8e8e8e8a604051610cf09796959493929190612530565b60405180910390a4505050979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610d505750825b90505f8267ffffffffffffffff166001148015610d6c5750303b155b905081158015610d7a575080155b15610db1576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e125784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e1a611a0c565b610e238a611a14565b6001600160a01b0389161580610e4057506001600160a01b038816155b15610e6e57610e6e7fe6c4247b0000000000000000000000000000000000000000000000000000000061183f565b865f03610e9e57610e9e7f5945ea560000000000000000000000000000000000000000000000000000000061183f565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b16179055610eda88611a25565b610ee387611b1c565b610eec866118cf565b83156105155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050505050565b610f606117cb565b610ab181611b1c565b610f716117cb565b610ab181611a25565b80610f8481611157565b5f5f5f610f93348a8a8a611188565b92509250925060015f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015610fe6575f5ffd5b505af1158015610ff8573d5f5f3e3d5ffd5b505060015461101693506001600160a01b0316915083905085611bc0565b611023838389848a6113b7565b505050505050505050565b6110366117cb565b6001600160a01b03811661107d576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610ab181611847565b5f6104b8848484600454611bf1565b5f835f036110c6576110c67f5945ea560000000000000000000000000000000000000000000000000000000061183f565b8215806110d1575081155b156110ff576110ff7fbb55fd270000000000000000000000000000000000000000000000000000000061183f565b61110984846125ad565b61111383866125c0565b6104b891906125d7565b5f806103e861112c848261260f565b61113690886125c0565b61114091906125d7565b905061114d818686611095565b9695505050505050565b42811015610ab157610ab17fc7cdabac0000000000000000000000000000000000000000000000000000000061183f565b6002546040517f1a788a020000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f928392839290911690631a788a0290602401602060405180830381865afa1580156111ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611213919061238f565b90505f5f826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611253573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127791906123cc565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915086156112e8578894506112b08583836104c0565b9350878410156112e3576112e37f42301c230000000000000000000000000000000000000000000000000000000061183f565b611329565b6112f3898284611086565b945088935087851115611329576113297fe1b0da4f0000000000000000000000000000000000000000000000000000000061183f565b50509450945094915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526113b19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c22565b50505050565b6040517f135f0f8500000000000000000000000000000000000000000000000000000000815260048101869052602481018590526001604482018190525f606483018190526001600160a01b038481166084850152909283929183919087169063135f0f859060a4016080604051808303815f875af115801561143c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114609190612418565b60408051858152602081018590526dffffffffffffffffffffffffffff84811682840152831660608201526001600160a01b038b811660808301529151959e50939c50919750955088811692908a16917f8d0aaf9f88a0c8ece371b7250c39e5b2f8ea6338392a3cdd636d0800e24f382c919081900360a00190a3856001600160a01b0316630d8d7f146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611517573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153b919061245c565b1561102357856001600160a01b0316876001600160a01b03167f3429e50ffcf5595548958b612e8accf95b62580eba87ebb4e372dfe1d0a1edd060405160405180910390a3505050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061162457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116187f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610a9e576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab16117cb565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116bd575060408051601f3d908101601f191682019092526116ba91810190612622565b60015b6116fe576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401611074565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461175a576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611074565b6117648383611ca7565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a9e576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336117fd7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a9e576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401611074565b805f5260045ffd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805f036118ff576118ff7f5945ea560000000000000000000000000000000000000000000000000000000061183f565b5f548103611930576119307f7fd217e30000000000000000000000000000000000000000000000000000000061183f565b5f546040805183815260208101929092527ff1f0b60edb879a2358d1a0b88a06c684c37f7f7f36ac223d35d2c135ef42034b910160405180910390a15f55565b5f835f036119a1576119a17f5945ea560000000000000000000000000000000000000000000000000000000061183f565b8215806119ac575081155b156119da576119da7fbb55fd270000000000000000000000000000000000000000000000000000000061183f565b611109848461260f565b5f81518351148015611a03575081805190602001208380519060200120145b90505b92915050565b610a9e611cfc565b611a1c611cfc565b610ab181611d63565b6001600160a01b038116611a5c57611a5c7fe6c4247b0000000000000000000000000000000000000000000000000000000061183f565b6003546001600160a01b0390811690821603611a9b57611a9b7f7fd217e30000000000000000000000000000000000000000000000000000000061183f565b600354604080516001600160a01b03808516825290921660208301527fa31a0871e96638141a6d14f91d9d806c9f760b3173a8c89cf8ebd42a5654692c910160405180910390a1600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b805f03611b4c57611b4c7f5945ea560000000000000000000000000000000000000000000000000000000061183f565b6004548103611b7e57611b7e7f7fd217e30000000000000000000000000000000000000000000000000000000061183f565b6004546040805183815260208101929092527f61312852de43725e4264e8d956247989130cee42a6a07bb5475ed12335609c7b910160405180910390a1600455565b6040516001600160a01b0383811660248301526044820183905261176491859182169063a9059cbb9060640161136a565b5f5f611bfe868686611970565b9050611c0c836103e861260f565b611c18826103e86125c0565b61114d91906125d7565b5f5f60205f8451602086015f885af180611c41576040513d5f823e3d81fd5b50505f513d91508115611c58578060011415611c65565b6001600160a01b0384163b155b156113b1576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611074565b611cb082611d6b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cf4576117648282611e12565b61053c611e84565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610a9e576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611036611cfc565b806001600160a01b03163b5f03611db9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611074565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e2e9190612639565b5f60405180830381855af49150503d805f8114611e66576040519150601f19603f3d011682016040523d82523d5f602084013e611e6b565b606091505b5091509150611e7b858383611ebc565b95945050505050565b3415610a9e576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611ed157611ecc82611f34565b611f2d565b8151158015611ee857506001600160a01b0384163b155b15611f2a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611074565b50805b9392505050565b805115611f445780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f60608486031215611f88575f5ffd5b505081359360208301359350604090920135919050565b8015158114610ab1575f5ffd5b6001600160a01b0381168114610ab1575f5ffd5b5f5f5f5f5f5f60c08789031215611fd5575f5ffd5b86359550602087013594506040870135611fee81611f9f565b93506060870135611ffe81611fac565b9250608087013561200e81611fac565b9598949750929591949360a090920135925050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f60408385031215612061575f5ffd5b823561206c81611fac565b9150602083013567ffffffffffffffff811115612087575f5ffd5b8301601f81018513612097575f5ffd5b803567ffffffffffffffff8111156120b1576120b1612023565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156120e1576120e1612023565b6040528181528282016020018710156120f8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215612127575f5ffd5b8135611f2d81611fac565b5f5f5f5f5f5f5f60e0888a031215612148575f5ffd5b8735965060208801359550604088013561216181611f9f565b9450606088013561217181611f9f565b9350608088013561218181611fac565b925060a088013561219181611fac565b96999598509396929591949193505060c09091013590565b5f602082840312156121b9575f5ffd5b5035919050565b5f5f83601f8401126121d0575f5ffd5b50813567ffffffffffffffff8111156121e7575f5ffd5b6020830191508360208285010111156121fe575f5ffd5b9250929050565b5f5f5f5f5f5f5f6080888a03121561221b575f5ffd5b873567ffffffffffffffff811115612231575f5ffd5b61223d8a828b016121c0565b909850965050602088013567ffffffffffffffff81111561225c575f5ffd5b6122688a828b016121c0565b909650945050604088013567ffffffffffffffff811115612287575f5ffd5b6122938a828b016121c0565b989b979a50959894979596606090950135949350505050565b5f5f5f5f5f60a086880312156122c0575f5ffd5b85356122cb81611fac565b945060208601356122db81611fac565b935060408601356122eb81611fac565b94979396509394606081013594506080013592915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f5f60a0868803121561234c575f5ffd5b85359450602086013561235e81611f9f565b9350604086013561236e81611fac565b9250606086013561237e81611fac565b949793965091946080013592915050565b5f6020828403121561239f575f5ffd5b8151611f2d81611fac565b80516dffffffffffffffffffffffffffff811681146123c7575f5ffd5b919050565b5f5f5f606084860312156123de575f5ffd5b6123e7846123aa565b92506123f5602085016123aa565b9150604084015163ffffffff8116811461240d575f5ffd5b809150509250925092565b5f5f5f5f6080858703121561242b575f5ffd5b845160208601519094509250612443604086016123aa565b9150612451606086016123aa565b905092959194509250565b5f6020828403121561246c575f5ffd5b8151611f2d81611f9f565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b60a081525f6124b360a08301898b612477565b82810360208401526124c681888a612477565b6001600160a01b0396909616604084015250506060810192909252608090910152949350505050565b5f5f5f60608486031215612501575f5ffd5b835161250c81611fac565b602085015190935061251d81611fac565b6040949094015192959394509192915050565b608081525f61254360808301898b612477565b828103602084015261255681888a612477565b9050828103604084015261256b818688612477565b91505082606083015298975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611a0657611a06612580565b8082028115828204841417611a0657611a06612580565b5f8261260a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115611a0657611a06612580565b5f60208284031215612632575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fea264697066735822122096e2974a23aae1c0d104681bb16815e17cb2b454bc12309aef7f5929f02fa29664736f6c634300081c0033