1 tx
2 calls
constructor
constructor(address _posm, address _permit2, address _router, address _feeAddress)
functions
collectionOwnerLaunches
viewfunction collectionOwnerLaunches() view returns (bool)
collectionToNFTStrategy
viewfunction collectionToNFTStrategy(address) view returns (address)
DEADADDRESS
viewfunction DEADADDRESS() view returns (address)
deployerBuying
viewfunction deployerBuying() view returns (bool)
feeAddress
viewfunction feeAddress() view returns (address)
feeToLaunch
viewfunction feeToLaunch() view returns (uint256)
hookAddress
viewfunction hookAddress() view returns (address)
lastTwapBlock
viewfunction lastTwapBlock() view returns (uint256)
loadingLiquidity
viewfunction loadingLiquidity() view returns (bool)
nftStrategyToCollection
viewfunction nftStrategyToCollection(address) view returns (address)
owner
viewfunction owner() view returns (address result)
ownershipHandoverExpiresAt
viewfunction ownershipHandoverExpiresAt(address pendingOwner) view returns (uint256 result)
PNKSTR_ADDRESS
viewfunction PNKSTR_ADDRESS() view returns (address)
PNKSTR_HOOK_ADDRESS
viewfunction PNKSTR_HOOK_ADDRESS() view returns (address)
publicLaunches
viewfunction publicLaunches() view returns (bool)
twapDelayInBlocks
viewfunction twapDelayInBlocks() view returns (uint256)
twapIncrement
viewfunction twapIncrement() view returns (uint256)
cancelOwnershipHandover
payablefunction cancelOwnershipHandover() payable
completeOwnershipHandover
payablefunction completeOwnershipHandover(address pendingOwner) payable
launchNFTStrategy
payablefunction launchNFTStrategy(address collection, string tokenName, string tokenSymbol) payable returns (address)
ownerLaunchNFTStrategy
payablefunction ownerLaunchNFTStrategy(address collection, string tokenName, string tokenSymbol, address collectionOwner) payable returns (address)
processTokenTwap
nonpayablefunction processTokenTwap()
renounceOwnership
payablefunction renounceOwnership() payable
requestOwnershipHandover
payablefunction requestOwnershipHandover() payable
setCollectionOwnerLaunches
nonpayablefunction setCollectionOwnerLaunches(bool _collectionOwnerLaunches)
setPublicLaunches
nonpayablefunction setPublicLaunches(bool _publicLaunches)
transferOwnership
payablefunction transferOwnership(address newOwner) payable
updateFeeToLaunch
nonpayablefunction updateFeeToLaunch(uint256 _feeToLaunch)
updateHookAddress
nonpayablefunction updateHookAddress(address _hookAddress)
updatePriceMultiplier
nonpayablefunction updatePriceMultiplier(address nftStrategy, uint256 newMultiplier)
updateTokenName
nonpayablefunction updateTokenName(address nftStrategy, string tokenName)
updateTokenSymbol
nonpayablefunction updateTokenSymbol(address nftStrategy, string tokenSymbol)
events
NFTStrategyLaunched
event NFTStrategyLaunched(address indexed collection, address indexed nftStrategy, string tokenName, string tokenSymbol)
OwnershipHandoverCanceled
event OwnershipHandoverCanceled(address indexed pendingOwner)
OwnershipHandoverRequested
event OwnershipHandoverRequested(address indexed pendingOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner)
errors
AlreadyInitialized
error AlreadyInitialized()
CannotLaunch
error CannotLaunch()
CollectionAlreadyLaunched
error CollectionAlreadyLaunched()
GatedByCollectionOwner
error GatedByCollectionOwner()
HookNotSet
error HookNotSet()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NoETHToTwap
error NoETHToTwap()
NoHandoverRequest
error NoHandoverRequest()
NotERC721
error NotERC721()
Reentrancy
error Reentrancy()
TwapDelayNotMet
error TwapDelayNotMet()
Unauthorized
error Unauthorized()
WrongEthAmount
error WrongEthAmount()
creation bytecode
0x60e03461012157601f61396b38819003918201601f19168301916001600160401b03831184841017610125578084926080946040528339810103126101215761004781610139565b61005360208301610139565b60408301516001600160a01b038116939192919084900361012157606061007a9101610139565b670de0b6b3a7640000600555600160065560c0939093526001600160a01b0390811660805290811660a052600480546001600160a01b0319169190921617905533638b78c6d8198190555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161381d908161014e823960805181611722015260a051816116fe015260c05181818161088701528181610aee01526110450152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101215756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630b6fe6e1146111a3575080631157e18914610f7357806312dda99a146109b65780631803e284146109995780631832e35a146109585780631db52755146107625780632175a1d41461073357806325692962146106e857806332a3cf96146106bf578063363a346a146106785780634094bb0214610655578063412753581461062c578063451d29d5146105e75780635289bcb1146105c157806354d1f13d1461057b578063715018a614610530578063844b4bc3146104f05780638da5cb5b146104c3578063a1a2497d1461046d578063bd2273da14610422578063c2fa867b14610404578063c8c04a0914610399578063ce0cbf7f14610373578063d645d43314610344578063e6c6931314610326578063e94dfcdf14610300578063ec078821146102e2578063f04e283e14610294578063f2fde38b14610255578063f5a7383e14610237578063f838eace146101b95763fee81cf40361000f57346101b65760203660031901126101b65761019d6111c5565b9063389a75e1600c5252602080600c2054604051908152f35b80fd5b50346101b65760403660031901126101b657806101d46111c5565b6101dc611350565b6001600160a01b0316803b1561023457818091602460405180948193631040e27560e11b8352833560048401525af18015610229576102185750f35b81610222916111f6565b6101b65780f35b6040513d84823e3d90fd5b50fd5b50346101b657806003193601126101b6576020600254604051908152f35b5060203660031901126101b65761026a6111c5565b610272611350565b8060601b15610287576102849061195e565b80f35b637448fbae82526004601cfd5b5060203660031901126101b6576102a96111c5565b6102b1611350565b63389a75e1600c528082526020600c20805442116102d5579082610284925561195e565b636f5e881883526004601cfd5b50346101b657806003193601126101b6576020600554604051908152f35b50346101b657806003193601126101b657602060ff60045460b01c166040519015158152f35b50346101b657806003193601126101b6576020600754604051908152f35b50346101b657806003193601126101b657602060405173faaad5b731f52cdc9746f2414c823eca9b06e8448152f35b50346101b657806003193601126101b657602060ff60045460b81c166040519015158152f35b50346101b657806103a936611278565b906103b2611350565b6001600160a01b0316803b15610400576040516329bfa98960e11b81526020600482015291839183918290849082906103ef9060248301906112ba565b03925af18015610229576102185750f35b5050fd5b50346101b657806003193601126101b6576020600654604051908152f35b50346101b65760203660031901126101b65760043580151580910361046957610449611350565b6004805460ff60b01b191660b09290921b60ff60b01b1691909117905580f35b5080fd5b50346101b6578061047d36611278565b90610486611350565b6001600160a01b0316803b15610400576040516384da92a760e01b81526020600482015291839183918290849082906103ef9060248301906112ba565b50346101b657806003193601126101b657638b78c6d819546040516001600160a01b039091168152602090f35b50346101b65760203660031901126101b6576020906001600160a01b036105156111c5565b168152808252604060018060a01b0391205416604051908152f35b50806003193601126101b657610544611350565b80638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380638b78c6d8195580f35b50806003193601126101b65763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b50346101b657806003193601126101b657602060ff60045460a01c166040519015158152f35b50346101b65760203660031901126101b6576106016111c5565b610609611350565b60018060a01b03166bffffffffffffffffffffffff60a01b600354161760035580f35b50346101b657806003193601126101b6576004546040516001600160a01b039091168152602090f35b50346101b65760203660031901126101b65761066f611350565b60043560025580f35b50346101b65760203660031901126101b6576004358015158091036104695761069f611350565b6004805460ff60b81b191660b89290921b60ff60b81b1691909117905580f35b50346101b657806003193601126101b6576003546040516001600160a01b039091168152602090f35b50806003193601126101b65763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b50346101b657806003193601126101b657602060405173c50673edb3a7b94e8cad8a7d4e0cd68864e33edf8152f35b50346101b657806003193601126101b6573068929eee149b4bd21268541461094b573068929eee149b4bd212685547801561093c57600754600654810180911161091157431061092d5760055490818110610925575b506005810281810460051482151715610911576103e89004808203918211610911574360075560206108646101846040516107f2816111db565b86815273c50673edb3a7b94e8cad8a7d4e0cd68864e33edf84820152866040820152603c606082015273faaad5b731f52cdc9746f2414c823eca9b06e8446080820152604051958693849263b1a0d57160e01b84528260048501528960248501526001604485015260648401906113bd565b610160610104830152610164820188905261dead610124830152426101448301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610906576108c8926108d7575b5033611919565b3868929eee149b4bd212685580f35b6108f89060203d6020116108ff575b6108f081836111f6565b81019061190a565b505f6108c1565b503d6108e6565b6040513d85823e3d90fd5b634e487b7160e01b83526011600452602483fd5b90505f6107b8565b6353f77c5b60e01b8252600482fd5b631863d7fb60e01b8252600482fd5b63ab143c0690526004601cfd5b50346101b65760203660031901126101b6576020906001600160a01b0361097d6111c5565b16815260018252604060018060a01b0391205416604051908152f35b50346101b657806003193601126101b657602060405161dead8152f35b5060603660031901126101b6576109cb6111c5565b906024356001600160401b038111610469576109eb903690600401611232565b6044356001600160401b038111610f6f57610a0a903690600401611232565b903068929eee149b4bd212685414610f62573068929eee149b4bd21268556003546001600160a01b0316928315610f53576001600160a01b038581168083526020839052604083205490969116610f44576002543403610f35576004549460ff8660b01c161580968197610f26575b50610f17576040516301ffc9a760e01b81526380ac58cd60e01b60048201526020816024818b5afa908115610f0c578491610ed1575b501580610eb8575b610ea957604051638da5cb5b60e01b81526020816004818b5afa849181610e61575b50610e5b575082955b80610e48575b610e39577f00000000000000000000000000000000000000000000000000000000000000009160405191611e4c808401908482106001600160401b03831117610e2557849386610b42948b948b9461199c893930906112de565b039083f08015610229578683526020838152604080852080546001600160a01b03199081166001600160a01b03959095169485179091558386526001909252842080549091168817905594610b9686611489565b6001600160a01b03811615610dac576003546001600160a01b031690813b15610da857604051637534ba6160e11b81526001600160a01b0388811660048301529190911660248201529083908290604490829084905af1801561090657908391610d93575b50505b6004805460ff60a81b1916600160a81b179055600354604051602091610c8691610184916001600160a01b0316610c34826111db565b8682528985830152866040830152603c606083015260808201526701bc16d674ec8000604051958694859363b1a0d57160e01b85528360048601528960248601526001604486015260648501906113bd565b610160610104840152610164830188905233610124840152426101448401526001600160a01b03165af1801561022957610d60575b506004805460ff60a81b19811690915534600119810192908311610d4c57346701bc16d674ec80011901928311610d4c57509260209592610d267fb21b33691d96c9afed29d52f5c03e912785d0fb36b91a4658534f7c8d408e9b893879660018060a01b0316611919565b610d356040519283928361132b565b0390a33868929eee149b4bd2126855604051908152f35b634e487b7160e01b81526011600452602490fd5b6020813d602011610d8b575b81610d79602093836111f6565b81010312610d875751610cbb565b5f80fd5b3d9150610d6c565b81610d9d916111f6565b61046957815f610bfb565b8380fd5b506003546004546001600160a01b039182169116813b15610da857604051637534ba6160e11b81526001600160a01b0388811660048301529190911660248201529083908290604490829084905af1801561090657908391610e10575b5050610bfe565b81610e1a916111f6565b61046957815f610e09565b634e487b7160e01b87526041600452602487fd5b631b5e0fd160e11b8352600483fd5b50336001600160a01b0387161415610ae8565b95610ae2565b9091506020813d602011610ea1575b81610e7d602093836111f6565b81010312610e9d57516001600160a01b0381168103610e9d57905f610ad9565b8480fd5b3d9150610e70565b635444e56f60e01b8352600483fd5b50638b78c6d819546001600160a01b0316331415610ab7565b90506020813d602011610f04575b81610eec602093836111f6565b81010312610da857518015158103610da8575f610aaf565b3d9150610edf565b6040513d86823e3d90fd5b633cc0b12f60e21b8352600483fd5b60ff915060b81c16155f610a79565b633acace0160e01b8252600482fd5b6306b8f26360e41b8252600482fd5b630869729360e41b8152600490fd5b63ab143c0683526004601cfd5b8280fd5b6080366003190112610d8757610f876111c5565b6024356001600160401b038111610d8757610fa6903690600401611232565b906044356001600160401b038111610d8757610fc6903690600401611232565b90606435906001600160a01b0382168203610d8757610fe3611350565b6003546001600160a01b03168015611194576001600160a01b038281165f81815260208190526040902054909391166111855760405191611e4c90818401918483106001600160401b0384111761117157849361106c9389938b9361199c88397f00000000000000000000000000000000000000000000000000000000000000009130906112de565b03905ff08015611166575f8281526020818152604080832080546001600160a01b03199081166001600160a01b03969096169586179091558484526001909252909120805490911683179055926110c284611489565b6003546001600160a01b0316803b15610d8757604051637534ba6160e11b81526001600160a01b0386811660048301529490941660248501525f908490604490829084905af19081156111665760209585947fb21b33691d96c9afed29d52f5c03e912785d0fb36b91a4658534f7c8d408e9b893611156575b5061114b6040519283928361132b565b0390a3604051908152f35b5f611160916111f6565b5f61113b565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6306b8f26360e41b5f5260045ffd5b630869729360e41b5f5260045ffd5b34610d87575f366003190112610d875760209060ff60045460a81c1615158152f35b600435906001600160a01b0382168203610d8757565b60a081019081106001600160401b0382111761117157604052565b90601f801991011681019081106001600160401b0382111761117157604052565b6001600160401b03811161117157601f01601f191660200190565b81601f82011215610d875780359061124982611217565b9261125760405194856111f6565b82845260208383010111610d8757815f926020809301838601378301015290565b906040600319830112610d87576004356001600160a01b0381168103610d875791602435906001600160401b038211610d87576112b791600401611232565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b039182168152918116602083015291821660408201529116606082015260c0608082018190526112b793919261131d918401906112ba565b9160a08184039101526112ba565b90916113426112b7936040845260408401906112ba565b9160208184039101526112ba565b638b78c6d81954330361135f57565b6382b429005f526004601cfd5b6001600160401b0381116111715760051b60200190565b6040516060919061139483826111f6565b6002815291601f1901825f5b8281106113ac57505050565b8060606020809385010152016113a0565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b80511561140d5760200190565b634e487b7160e01b5f52603260045260245ffd5b80516001101561140d5760400190565b9080602083519182815201916020808360051b8301019401925f915b83831061145c57505050505090565b909192939460208061147a600193601f1986820301875289516112ba565b9701930193019193929061144d565b6004805460ff60a01b1916600160a01b17905560035460405161165a925f926001600160a01b03918216916116849161169691166114c6856111db565b5f855260208501908482525f6040870152603c606087015260808601526115a8602095611634604051998a926114fc8a856111f6565b5f8452601f198a01368b860137604051600160f91b8b820152600d60f81b6021820152600281529561152f6022886111f6565b6115506115b68c6115a8611541611383565b986040519485938401886113bd565b620d89b31960c08401526202abac60e0840152692189600cb9f61418ad9761010084015260026101208401526b033b2e3c9fd0803ce800000161014084015230610160840152610180808401526101a08301906112ba565b03601f1981018352826111f6565b6115bf86611400565b526115c985611400565b5081519051604080516001600160a01b039384168e820152929091168282015281526115f66060826111f6565b6115ff85611421565b5261160984611421565b506115a8611615611383565b60405163f702040560e01b8d820152909d9094859360248501906113bd565b6d18b48e29793d2f0000000000000060c484015260e060e48401526101048301906112ba565b6116638a611400565b5261166d89611400565b5060405194859360408986015260608501906112ba565b838103601f1901604085015290611431565b603c42018042116118f6576116cc916116e09160405193849263dd46508f60e01b888501526040602485015260648401906112ba565b90604483015203601f1981018352826111f6565b6116e985611421565b526116f384611421565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116947f000000000000000000000000000000000000000000000000000000000000000090911691853b15610d87576040516387517c4560e01b81526004810191909152602481018390526001600160a01b03604482015265ffffffffffff6064820152945f908690608490829084905af1948515611166576002956118dd575b5083916117c891604051968780948193631592ca1b60e31b83528860048401526024830190611431565b03925af18015610229576117e9575b50506004805460ff60a01b1916905550565b3d8083853e6117f881856111f6565b8301928181850312610f6f578051906001600160401b038211610da8570183601f82011215610f6f57805161182c8161136c565b9461183a60405196876111f6565b818652838087019260051b840101928184116118d957848101925b84841061186a57505050505050505f806117d7565b83516001600160401b0381116118d557820183603f820112156118d5578681015161189481611217565b916118a260405193846111f6565b8183528589808484010101116118d1579189898381969460408397018386015e83010152815201930192611855565b8980fd5b8780fd5b8580fd5b6118eb919294505f906111f6565b5f92906117c861179e565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610d87575190565b814710611951575f3881808585620186a0f115611934575050565b601691600b915f526073825360ff602053f01561194d57565b3838fd5b63b12d13eb5f526004601cfd5b60018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d8195556fe6101006040523461047557611e4c8038038061001a81610479565b92833981019060c081830312610475576100338161049e565b906100406020820161049e565b60408201516001600160a01b0381168103610475576100616060840161049e565b60808401519093906001600160401b03811161047557866100839183016104b2565b60a08201519096906001600160401b038111610475576100a392016104b2565b6104b0600255670de0b6b3a7640000600655600160075560c09490945260805260a0526001600160a01b031660e05281516001600160401b03811161038b575f54600181811c9116801561046b575b602082101461036d57601f8111610409575b50602092601f82116001146103aa57928192935f9261039f575b50508160011b915f199060031b1c1916175f555b80516001600160401b03811161038b57600154600181811c91168015610381575b602082101461036d57601f811161030a575b50602091601f82116001146102aa579181925f9261029f575b50508160011b915f199060031b1c1916176001555b60018060a01b0360c051166805345cdf77eb68f44c546b033b2e3c9fd0803ce80000008101908110610292576805345cdf77eb68f44c556387a211a2600c525f526020600c206b033b2e3c9fd0803ce800000081540190556b033b2e3c9fd0803ce8000000602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3604051611948908161050482396080518161135e015260a051818181610e31015281816112b70152611477015260c0518181816107c4015281816109b001528181610c0a0152611172015260e0518181816101fa01528181610b7801528181610ed901526115590152f35b63e5cfe9575f526004601cfd5b015190505f8061017e565b601f1982169260015f52805f20915f5b8581106102f2575083600195106102da575b505050811b01600155610193565b01515f1960f88460031b161c191690555f80806102cc565b919260206001819286850151815501940192016102ba565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c81019160208410610363575b601f0160051c01905b8181106103585750610165565b5f815560010161034b565b9091508190610342565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610153565b634e487b7160e01b5f52604160045260245ffd5b015190505f8061011e565b601f198216935f8052805f20915f5b8681106103f157508360019596106103d9575b505050811b015f55610132565b01515f1960f88460031b161c191690555f80806103cc565b919260206001819286850151815501940192016103b9565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610461575b601f0160051c01905b8181106104565750610104565b5f8155600101610449565b9091508190610440565b90607f16906100f2565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761038b57604052565b51906001600160a01b038216820361047557565b81601f82011215610475578051906001600160401b03821161038b576104e1601f8301601f1916602001610479565b928284526020838301011161047557815f9260208093018386015e830101529056fe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c806306fdde0314611644578063095ea7b3146115a8578063150b7a02146115125780631803e284146114f657806318160ddd146114d157806319d6150d146114595780631db52755146111de5780632081c4ea1461115c57806323b2f3921461113f57806323b872dd1461103d57806324abf96214610e7c578063313ce56714610e6057806332a3cf9614610e1b57806332cb6b0c14610df45780633644e51514610d6b578063537f531214610bf85780635d9644c414610bda57806370a0823114610ba75780637de1e53614610b625780637ecebe0014610b2f57806384da92a71461099e57806390ba7a321461097457806395d89b41146108a0578063a9059cbb14610811578063c2fa867b146107f3578063c45a0155146107ae578063d505accf146105e6578063d50cb88b146105c8578063dd62ed3e14610593578063e6c6931314610575578063ec078821146105575763f392c71614610185575061000e565b346105545760803660031901126105545760043560243567ffffffffffffffff8111610552576101b99036906004016116af565b6044359290916064356001600160a01b038116810361054e573068929eee149b4bd212685414610541573068929eee149b4bd2126855479360018060a01b037f00000000000000000000000000000000000000000000000000000000000000001693604051936370a0823160e01b8552306004860152602085602481895afa948515610536578995610502575b506040516331a9108f60e11b8152600481018990526020816024818a5afa9081156104f7578a916104d8575b506001600160a01b031630146104c95760045482116104ba57918893918493826040519384928337810185815203925af13d156104b2573d906102b4826116ff565b916102c260405193846116dd565b82523d87602084013e5b1561048957506040516370a0823160e01b8152306004820152602081602481865afa90811561047e578691610448575b50600182018092116104345703610425576020602491604051928380926331a9108f60e11b82528760048301525afa90811561041a5784916103eb575b50306001600160a01b03909116036103dc57610356904790611869565b61036281600454611869565b6004556002548082029082820414821517156103c8577f272af40a157c8d1a7d3bf7ff2920db021097ec61b7e260f97bb50144520ad177916103e8604092048486526003602052808387205582519182526020820152a23868929eee149b4bd212685580f35b634e487b7160e01b84526011600452602484fd5b631022318760e21b8352600483fd5b61040d915060203d602011610413575b61040581836116dd565b810190611876565b5f610339565b503d6103fb565b6040513d86823e3d90fd5b630b7cb52160e41b8452600484fd5b634e487b7160e01b86526011600452602486fd5b90506020813d602011610476575b81610463602093836116dd565b8101031261047257515f6102fc565b5f80fd5b3d9150610456565b6040513d88823e3d90fd5b604051632cd7eb6360e11b8152602060048201529081906104ae90602483019061165f565b0390fd5b6060906102cc565b63f14a42b760e01b8952600489fd5b63085cf94760e41b8952600489fd5b6104f1915060203d6020116104135761040581836116dd565b5f610272565b6040513d8c823e3d90fd5b9094506020813d60201161052e575b8161051e602093836116dd565b810103126104725751935f610246565b3d9150610511565b6040513d8b823e3d90fd5b63ab143c0686526004601cfd5b8580fd5b825b80fd5b50346105545780600319360112610554576020600654604051908152f35b50346105545780600319360112610554576020600854604051908152f35b50346105545760403660031901126105545760206105c06105b2611683565b6105ba611699565b90611895565b604051908152f35b50346105545780600319360112610554576020600254604051908152f35b50346105545760e036600319011261055457610600611683565b610608611699565b604435606435906084359260ff8416840361054e576001600160a01b0316936e22d473030f116ddee9f6b43ac78ba3851882191517156107a15761064a6117bb565b6020815191012092804211610794576040519160018060a01b03169465383775081901600e5285885260c06020600c20938454937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252602082019788528460408301987fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc68a528b606085019a468c528c608087019330855260a08820602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988525252888a525260a082015220604e526042602c20885260ff1660205260a43560405260c43560605260208060808960015afa90853d5103610787570190556303faf4f960a51b84176040526034602c20557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a380f35b63ddafbaef88526004601cfd5b631a15a3cc87526004601cfd5b633f68539a86526004601cfd5b50346105545780600319360112610554576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346105545780600319360112610554576020600754604051908152f35b50346105545760403660031901126105545761082b611683565b602435916387a211a2600c523381526020600c208054808511610893578490039055526020600c20818154019055602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3602060405160018152f35b63f4d678b883526004601cfd5b50346105545780600319360112610554576040519080600154906108c382611783565b808552916001811690811561094d5750600114610903575b6108ff846108eb818603826116dd565b60405191829160208352602083019061165f565b0390f35b600181525f5160206118f35f395f51905f52939250905b808210610933575090915081016020016108eb826108db565b91926001816020925483858801015201910190929161091a565b60ff191660208087019190915292151560051b850190920192506108eb91508390506108db565b50346105545760203660031901126105545760406020916004358152600383522054604051908152f35b5034610554576109ad3661171b565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610b2057815167ffffffffffffffff8111610b0c576109f98254611783565b601f8111610aa5575b50602092601f8211600114610a3d57928293829392610a32575b50508160011b915f199060031b1c191617815580f35b015190505f80610a1c565b828052601f198216935f5160206118d35f395f51905f5291845b868110610a8d5750836001959610610a75575b505050811b01815580f35b01515f1960f88460031b161c191690555f8080610a6a565b91926020600181928685015181550194019201610a57565b828052601f820160051c5f5160206118d35f395f51905f52019060208310610af7575b601f0160051c5f5160206118d35f395f51905f5201905b818110610aec5750610a02565b838155600101610adf565b5f5160206118d35f395f51905f529150610ac8565b634e487b7160e01b82526041600452602482fd5b631966391b60e11b8152600490fd5b503461055457602036600319011261055457610b49611683565b906338377508600c5252602080600c2054604051908152f35b50346105545780600319360112610554576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461055457602036600319011261055457610bc1611683565b906387a211a2600c5252602080600c2054604051908152f35b50346105545780600319360112610554576020600454604051908152f35b503461055457610c073661171b565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610b2057815167ffffffffffffffff8111610b0c57610c54600154611783565b601f8111610d03575b50602092601f8211600114610c9957928293829392610c8e575b50508160011b915f199060031b1c19161760015580f35b015190505f80610c77565b60018352601f198216935f5160206118f35f395f51905f5291845b868110610ceb5750836001959610610cd3575b505050811b0160015580f35b01515f1960f88460031b161c191690555f8080610cc7565b91926020600181928685015181550194019201610cb4565b60018352601f820160051c5f5160206118f35f395f51905f52019060208310610d56575b601f0160051c5f5160206118f35f395f51905f5201905b818110610d4b5750610c5d565b838155600101610d3e565b5f5160206118f35f395f51905f529150610d27565b5034610554578060031936011261055457602060a0610d886117bb565b828151910120604051907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015220604051908152f35b503461055457806003193601126105545760206040516b033b2e3c9fd0803ce80000008152f35b50346105545780600319360112610554576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610554578060031936011261055457602060405160128152f35b506020366003190112610472576004353068929eee149b4bd212685414611030573068929eee149b4bd2126855805f52600360205260405f2054801561102157803403611012576040516331a9108f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa908115610fd9575f91610ff3575b50306001600160a01b0390911603610fe457803b15610472575f80916064604051809481936323b872dd60e01b83523060048401523360248401528860448401525af18015610fd957610fc3575b5060407f89c3b465a41d0ab0891833425d7da4f89bafffceffba56a40bfafff01d68d51e9183855260036020528482812055610fa58160055461185c565b6005558151908152336020820152a23868929eee149b4bd212685580f35b610fd09193505f906116dd565b5f916040610f67565b6040513d5f823e3d90fd5b631022318760e21b5f5260045ffd5b61100c915060203d6020116104135761040581836116dd565b5f610f19565b633c0cc37960e11b5f5260045ffd5b63d135e8bd60e01b5f5260045ffd5b63ab143c065f526004601cfd5b3461047257606036600319011261047257611056611683565b61105e611699565b604435908260601b6e22d473030f116ddee9f6b43ac78ba333036110f5575b6387a211a217600c526020600c2080548084116110e85783900390555f526020600c20818154019055602052600c5160601c9060018060a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3602060405160018152f35b63f4d678b85f526004601cfd5b33602052637f5e9f208117600c526034600c2090815491821961111b575b50905061107d565b82851161113257846387a211a29303905585611113565b6313be252b5f526004601cfd5b34610472575f366003190112610472576020600554604051908152f35b34610472576020366003190112610472576004357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036111cf5761044c811080156111c4575b6111b557600255005b631bc4bcf760e21b5f5260045ffd5b5061271081116111ac565b631966391b60e11b5f5260045ffd5b34610472575f366003190112610472573068929eee149b4bd212685414611030573068929eee149b4bd2126855600554801561144a576112236008546007549061185c565b431061143b5760065490818110611433575b600582028281046005148315171561141f576112596103e861126a92048094611869565b91611264848461185c565b90611869565b6005554360085560405160a081019080821067ffffffffffffffff83111761140b5760409182525f808252306020808401918252838501838152603c606086019081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660808801908152975163b1a0d57160e01b8152600481018a90526024810187905260016044820152965181166064880152935184166084870152905162ffffff1660a48601525160020b60c48501529351811660e484015261016061010484015261016483019190915261dead61012483015242610144830152909283916101849183917f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd9576113e0575b508047106113d3575f3881808433620186a0f1156113b2575b3868929eee149b4bd2126855005b600b601691335f526073825360ff602053f0156113cf57806113a4565b3838fd5b63b12d13eb5f526004601cfd5b602090813d8311611404575b6113f681836116dd565b81010312610472578161138b565b503d6113ec565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b905080611235565b6353f77c5b60e01b5f5260045ffd5b631863d7fb60e01b5f5260045ffd5b5f366003190112610472573068929eee149b4bd212685414611030577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036114c2576114b13460045461185c565b6004553868929eee149b4bd2126855005b635a91834f60e01b5f5260045ffd5b34610472575f3660031901126104725760206805345cdf77eb68f44c54604051908152f35b34610472575f36600319011261047257602060405161dead8152f35b346104725760803660031901126104725761152b611683565b50611534611699565b5060643567ffffffffffffffff8111610472576115559036906004016116af565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361159957604051630a85bd0160e11b8152602090f35b63517172a160e11b5f5260045ffd5b34610472576040366003190112610472576115c1611683565b602435906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba318821915171561163757602052637f5e9f20600c52335f52806034600c20555f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b633f68539a5f526004601cfd5b34610472575f366003190112610472576108ff6108eb6117bb565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361047257565b602435906001600160a01b038216820361047257565b9181601f840112156104725782359167ffffffffffffffff8311610472576020838186019501011161047257565b90601f8019910116810190811067ffffffffffffffff82111761140b57604052565b67ffffffffffffffff811161140b57601f01601f191660200190565b60206003198201126104725760043567ffffffffffffffff8111610472578160238201121561047257806004013590611753826116ff565b9261176160405194856116dd565b8284526024838301011161047257815f92602460209301838601378301015290565b90600182811c921680156117b1575b602083101461179d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611792565b604051905f825f54916117cd83611783565b808352926001811690811561183d57506001146117f3575b6117f1925003836116dd565b565b505f80805290915f5160206118d35f395f51905f525b8183106118215750509060206117f1928201016117e5565b6020919350806001915483858901015201910190918492611809565b602092506117f194915060ff191682840152151560051b8201016117e5565b9190820180921161141f57565b9190820391821161141f57565b9081602091031261047257516001600160a01b03811681036104725790565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba3146118cb57602052637f5e9f20600c525f526034600c205490565b50505f199056fe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a26469706673582212201fbd098abb482b53a98ae9668cf2c6d5a5c7e670852e5399aa28f4418f722b8264736f6c634300081e0033a26469706673582212201920762fe5dbddc47d21cec1bae2cfbde6d99e48e15c7a84b60c9271acc5aac564736f6c634300081e0033000000000000000000000000bd216513d74c8cf14cf4747e6aaa6420ff64ee9e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000000000000000044a361ae3cac094c9d1b14eece97000000000000000000000000019817ad02a31b990433542097be29d97613e8cb