0 txs
2.8k calls
constructor
constructor(address _comments, address _zoraTimedSale, address _swapHelper, uint256 _sparksValue)
functions
comments
viewfunction comments() view returns (address)
contractName
purefunction contractName() pure returns (string)
contractVersion
purefunction contractVersion() pure returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
hashPermitBuyOnSecondaryAndComment
viewfunction hashPermitBuyOnSecondaryAndComment(tuple permit) view returns (bytes32)
hashPermitTimedSaleMintAndComment
viewfunction hashPermitTimedSaleMintAndComment(tuple permit) view returns (bytes32)
nonceUsed
viewfunction nonceUsed(address owner, bytes32 nonce) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
secondarySwap
viewfunction secondarySwap() view returns (address)
sparkValue
viewfunction sparkValue() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
zoraTimedSale
viewfunction zoraTimedSale() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
buyOnSecondaryAndComment
payablefunction buyOnSecondaryAndComment(address commenter, uint256 quantity, address collection, uint256 tokenId, address excessRefundRecipient, uint256 maxEthToSpend, uint160 sqrtPriceLimitX96, string comment) payable returns (tuple)
initialize
nonpayablefunction initialize(address owner)
permitBuyOnSecondaryAndComment
payablefunction permitBuyOnSecondaryAndComment(tuple permit, bytes signature) payable returns (tuple)
permitTimedSaleMintAndComment
payablefunction permitTimedSaleMintAndComment(tuple permit, bytes signature) payable returns (tuple)
renounceOwnership
nonpayablefunction renounceOwnership()
sellOnSecondaryAndComment
payablefunction sellOnSecondaryAndComment(address commenter, uint256 quantity, address collection, uint256 tokenId, address recipient, uint256 minEthToAcquire, uint160 sqrtPriceLimitX96, string comment) payable returns (tuple commentIdentifier)
timedSaleMintAndComment
payablefunction timedSaleMintAndComment(address commenter, uint256 quantity, address collection, uint256 tokenId, address mintReferral, string comment) payable returns (tuple)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint64 version)
MintedAndCommented
event MintedAndCommented(bytes32 indexed commentId, (address commenter, address contractAddress, uint256 tokenId, bytes32 nonce) commentIdentifier, uint256 quantity, string text)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SwappedOnSecondaryAndCommented
event SwappedOnSecondaryAndCommented(bytes32 indexed commentId, (address commenter, address contractAddress, uint256 tokenId, bytes32 nonce) commentIdentifier, uint256 indexed quantity, string comment, uint8 indexed swapDirection)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
CommenterMismatch
error CommenterMismatch(address expected, address actual)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC2612ExpiredSignature
error ERC2612ExpiredSignature(uint256 deadline)
FailedInnerCall
error FailedInnerCall()
IncorrectDestinationChain
error IncorrectDestinationChain(uint256 wrongDestinationChainId)
InvalidAccountNonce
error InvalidAccountNonce(address account, bytes32 currentNonce)
InvalidInitialization
error InvalidInitialization()
InvalidSignature
error InvalidSignature()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SaleNotSet
error SaleNotSet(address collection, uint256 tokenId)
UpgradeToMismatchedContractName
error UpgradeToMismatchedContractName(string currentName, string newName)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
WrongValueSent
error WrongValueSent(uint256 expected, uint256 actual)
creation bytecode
0x61012034620001a557601f6200397138819003918201601f19168301916001600160401b039182841185851017620001aa578160809286926040968752833981010312620001a5576200005283620001c0565b926200006160208201620001c0565b90606062000071858301620001c0565b910151306080526001600160a01b0395861660a05291851660c0529390931660e0526101009283527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054909181841c60ff16620001945780808316036200014f575b5050505161379b9182620001d683396080518281816115560152611743015260a05182818161033f01528181611bc901528181612bb00152613067015260c051828181611e4601528181612a340152612f6f015260e0518281816101da01528181610ea20152612a9e0152518181816102d10152611e9e0152f35b6001600160401b0319909116811790915581519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080620000d4565b835163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001a55756fe608080604052600436101561001357600080fd5b60003560e01c90816246365d14611e6a57508063088682cb14611dfb5780630e230f9714611d645780630fa432e814611c46578063168c50d514611bed57806325c843b914611b7e57806339ba954914611b325780634f1ef286146116c457806351a08885146115d057806352d1902d14611510578063715018a61461142b57806375d0c0dc146113af578063777130261461127457806379ba5097146111cc57806384b0196e146110145780638da5cb5b14610fa35780639d6cc5f814610f42578063a0a8e46014610ec6578063a6e159d514610e57578063ad3cb1cc14610dd7578063c4d66de814610619578063e30c3978146105a8578063f2fde38b146104bd5763f5c540d01461012657600080fd5b61012f36612131565b949795909692939161013f6122fc565b9773ffffffffffffffffffffffffffffffffffffffff9633888a160361046c57806102ca57505034610293578580925b1694826040519416602085015260408401521660608201526060815261019481611f47565b823b1561028e5760009461021a869286946040519a8b98899788967ff242432a0000000000000000000000000000000000000000000000000000000088521660048701527f00000000000000000000000000000000000000000000000000000000000000001660248601526044850152606484015260a0608484015260a48301906121f8565b03925af191821561028257608092610273575b5061027160405180926060809173ffffffffffffffffffffffffffffffffffffffff8082511685526020820151166020850152604081015160408501520151910152565bf35b61027c90611f33565b3861022d565b6040513d6000823e3d90fd5b600080fd5b60446040517f52b39c6000000000000000000000000000000000000000000000000000000000815260006004820152346024820152fd5b91929098507f00000000000000000000000000000000000000000000000000000000000000008034036104355750908160a08b94938a610339858e604051998a9586957fce5263c300000000000000000000000000000000000000000000000000000000875260048701612659565b0381348c7f0000000000000000000000000000000000000000000000000000000000000000165af191821561028257868995938694600090600092610403575b50809d604051946103c18680946060809173ffffffffffffffffffffffffffffffffffffffff8082511685526020820151166020850152604081015160408501520151910152565b6080830160a0905260a08301906103d79261261a565b037f75abe44fdeadfdd67030f2daa67c1059ca29139b11a7474bc1b0ad0de3ef53e190600194a461016f565b9050610427915060a03d60a01161042e575b61041f8183611f7f565b8101906125c3565b9038610379565b503d610415565b604490604051907f52b39c600000000000000000000000000000000000000000000000000000000082526004820152346024820152fd5b6040517f30a3507600000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8a166024820152604490fd5b0390fd5b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e576104f4611ec1565b6104fc6131a3565b73ffffffffffffffffffffffffffffffffffffffff809116907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416604051908152f35b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57610650611ec1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff821680159081610dc7575b6001149081610dbd575b159081610db4575b50610d8a5760017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005560ff8260401c1615610d35575b6106fb6134b4565b6107036134b4565b73ffffffffffffffffffffffffffffffffffffffff811615610d0457610728906131e3565b6107306134b4565b6040519061073d82611f63565b601282527f43616c6c6572416e64436f6d6d656e746572000000000000000000000000000060208301526040519061077482611f63565b600182527f310000000000000000000000000000000000000000000000000000000000000060208301526107a66134b4565b6107ae6134b4565b825167ffffffffffffffff8111610b0a576107e97fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10254613297565b601f8111610c42575b506020601f8211600114610b445781929394600092610b39575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102555b81519167ffffffffffffffff8311610b0a577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1039061089c8254613297565b601f8111610aa6575b50602090601f85116001146109e45760ff9491600091836109d9575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005560007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015560401c161561094657005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b0151905085806108c1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0851691836000527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b759260005b818110610a8e575091600193918760ff989410610a57575b505050811b0190556108f3565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055858080610a4a565b92936020600181928786015181550195019301610a32565b826000527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f860160051c81019160208710610b00575b601f0160051c01905b818110610af457506108a5565b60008155600101610ae7565b9091508190610ade565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b01519050848061080c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216907fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026000527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d9160005b818110610c2a57509583600195969710610bf3575b505050811b017fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1025561085e565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055848080610bc6565b9192602060018192868b015181550194019201610bb1565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102600052601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d019060208310610cdc575b601f0160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d01905b818110610cd057506107f2565b60008155600101610cc3565b7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d9150610c99565b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b680100000000000000017fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00556106f3565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501583610699565b303b159150610691565b604084901c60ff16159150610687565b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57610e53604051610e1581611f63565b600581527f352e302e3000000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906121f8565b0390f35b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57610e53604051610f0481611f63565b600581527f302e302e3200000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906121f8565b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760043567ffffffffffffffff811161028e57610f9b610f96602092369060040161223b565b6124ac565b604051908152f35b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005415806111a3575b15611145576110796132ea565b6110816133f3565b60405160208082019282841067ffffffffffffffff851117610b0a579160206110f885946110ea9796604052600084526040519788977f0f00000000000000000000000000000000000000000000000000000000000000895260e0858a015260e08901906121f8565b9087820360408901526121f8565b91466060870152306080870152600060a087015285830360c0870152519182815201929160005b82811061112e57505050500390f35b83518552869550938101939281019260010161111f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101541561106c565b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054160361124457611242336131e3565b005b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e576112a6611ec1565b60443573ffffffffffffffffffffffffffffffffffffffff808216820361028e57608435818116810361028e5760a43567ffffffffffffffff811161028e576112f3903690600401611f05565b9390926112fe6122fc565b503390861603611362579060809461131f9493926064359160243590612f46565b61027160405180926060809173ffffffffffffffffffffffffffffffffffffffff8082511685526020820151166020850152604081015160408501520151910152565b6040517f30a3507600000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff86166024820152604490fd5b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57610e536040516113ed81611f63565b601481527f43616c6c657220616e6420436f6d6d656e74657200000000000000000000000060208201526040519182916020835260208301906121f8565b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e576114626131a3565b600073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036115a65760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60408136011261028e5767ffffffffffffffff60043581811161028e576101408160040193823603011261028e5760243591821161028e5760809261168061164061131f943690600401611f05565b6116486122fc565b50611656610f96368661223b565b9061166085612321565b9061166e6101248801612342565b9360c48801359360e4890135906126d0565b61168981612321565b9061169660448401612321565b926116b16116a660848301612321565b9260a4830190612353565b9490936024606484013593013590612f46565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60408136011261028e576116f7611ec1565b90602491823567ffffffffffffffff811161028e573660238201121561028e5761172a9036908581600401359101611ffa565b9073ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803014908115611b04575b506115a65761177b6131a3565b811692604051907f75d0c0dc0000000000000000000000000000000000000000000000000000000091828152600081600481838a5af190811561028257600091611ae9575b50604051838152600081600481305afa90811561028257600091611ace575b5081518151908181149384611ab8575b50505050156119d75750506040517f52d1902d000000000000000000000000000000000000000000000000000000008152602081600481875afa600091816119a3575b5061186857505050604051907f4c9c8ce30000000000000000000000000000000000000000000000000000000082526004820152fd5b8390857f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918281036119755750833b156119465750817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2825115611914575060008083602061124295519101845af461190e61350d565b91613628565b9150503461191e57005b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b82604051907f4c9c8ce30000000000000000000000000000000000000000000000000000000082526004820152fd5b604051907faa1d49a40000000000000000000000000000000000000000000000000000000082526004820152fd5b9091506020813d6020116119cf575b816119bf60209383611f7f565b8101031261028e57519086611832565b3d91506119b2565b60405182815293509150600083600481305afa92831561028257600093611a92575b506000929360048492604051958693849283525af1801561028257611a5f946104b993600092611a6d575b506040519586957fa23cbf7b0000000000000000000000000000000000000000000000000000000087526040600488015260448701906121f8565b9285840301908501526121f8565b611a8b9192503d806000833e611a838183611f7f565b810190612ee7565b9086611a24565b60009350936004611aae8593963d8086833e611a838183611f7f565b94505093906119f9565b60209293945082012092012014878080806117ef565b611ae391503d806000833e611a838183611f7f565b886117df565b611afe91503d806000833e611a838183611f7f565b876117c0565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614158661176e565b611b3b36612131565b96611b4d9691969592959493946122fc565b503373ffffffffffffffffffffffffffffffffffffffff8a160361046c579061131f979695949392916080996129aa565b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760043567ffffffffffffffff811161028e57610f9b611c416020923690600401612060565b6123a4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60408136011261028e576004359067ffffffffffffffff80831161028e576101608360040192843603011261028e5760243590811161028e57611cb1611cf2913690600401611f05565b611cb96122fc565b50611cc7611c413686612060565b90611cd185612321565b90611cdf6101448801612342565b9360e488013593610104890135906126d0565b611cfb81612321565b91611d0860448201612321565b73ffffffffffffffffffffffffffffffffffffffff80611d2785612321565b169460a4840135918216820361028e57608095611d4b61131f9660c4870190612353565b95909460848201359360246064840135930135906129aa565b3461028e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5773ffffffffffffffffffffffffffffffffffffffff611db0611ec1565b166000527fc84b62be2e432010aa71cc1bbdba4c7b02245544521aa5beae20093c706224006020526040600020602435600052602052602060ff604060002054166040519015158152f35b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e576020907f00000000000000000000000000000000000000000000000000000000000000008152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361028e57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361028e57565b9181601f8401121561028e5782359167ffffffffffffffff831161028e576020838186019501011161028e57565b67ffffffffffffffff8111610b0a57604052565b6080810190811067ffffffffffffffff821117610b0a57604052565b6040810190811067ffffffffffffffff821117610b0a57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b0a57604052565b67ffffffffffffffff8111610b0a57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261200682611fc0565b916120146040519384611f7f565b82948184528183011161028e578281602093846000960137010152565b9080601f8301121561028e5781602061204c93359101611ffa565b90565b359063ffffffff8216820361028e57565b91909161016090818185031261028e5760405191820167ffffffffffffffff9083811082821117610b0a57604052829461209983611ee4565b8452602083013560208501526120b160408401611ee4565b604085015260608301356060850152608083013560808501526120d660a08401611ee4565b60a085015260c083013591821161028e576120f2918301612031565b60c083015260e081013560e0830152610100808201359083015261012061211a81830161204f565b9083015261212c61014080920161204f565b910152565b906101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261028e5773ffffffffffffffffffffffffffffffffffffffff600435818116810361028e579260243592604435838116810361028e579260643592608435828116810361028e579260a4359260c435908116810361028e579160e4359067ffffffffffffffff821161028e576121d191600401611f05565b9091565b60005b8381106121e85750506000910152565b81810151838201526020016121d8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612234815180928187528780880191016121d5565b0116010190565b91909161014090818185031261028e5760405191820167ffffffffffffffff9083811082821117610b0a57604052829461227483611ee4565b84526020830135602085015261228c60408401611ee4565b6040850152606083013560608501526122a760808401611ee4565b608085015260a083013591821161028e576122c3918301612031565b60a083015260c081013560c083015260e081013560e08301526101006122ea81830161204f565b9083015261212c61012080920161204f565b6040519061230982611f47565b60006060838281528260208201528260408201520152565b3573ffffffffffffffffffffffffffffffffffffffff8116810361028e5790565b3563ffffffff8116810361028e5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561028e570180359067ffffffffffffffff821161028e5760200191813603831361028e57565b73ffffffffffffffffffffffffffffffffffffffff908181511660208201519280604084015116606084015160808501519260a08601511660c08601518051906020012060e087015190610100808901519361012097888b015163ffffffff16966101408c015163ffffffff1698604051809e602082019d7f53efa2c79d741f778ea41023a579600190034cdcaf4b47dd0d3476f2e4a1f2808f52604083015260608201526080015260a08d015260c08c015260e08b015289015284880152610140870152610160860152610180908186015284526101a084019184831067ffffffffffffffff841117610b0a5761204c9463ffffffff936040525190209201511690612e3c565b73ffffffffffffffffffffffffffffffffffffffff908181511691602082015192816040840151166060840151926080850151169260a0850151805190602001209460c08101519060e0810151916101008083019863ffffffff98898b5116968a610120809701511698604051809e602082019c7f8d473225d8ea576a3922dc73ac2d7513137423f0e6ea74d5c1b636e96eb877928e52604083015260608201526080015260a08d015260c08c015260e08b01528901528701526101408601526101609081860152845261018084019380851067ffffffffffffffff861117610b0a5761204c9460405251902091511690612e3c565b519073ffffffffffffffffffffffffffffffffffffffff8216820361028e57565b8092910360a0811261028e5760801361028e5760806040516125e481611f47565b6125ed846125a2565b81526125fb602085016125a2565b6020820152604084015160408201526060840151606082015292015190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b919594936000946126a192610120956101409173ffffffffffffffffffffffffffffffffffffffff9a8b8092168852166020870152604086015280606086015284019161261a565b94806004541660808301526005541660a082015260065460c082015260075460e0820152826101008201520152565b929590919394804211612964575063ffffffff8091169046168103612933575073ffffffffffffffffffffffffffffffffffffffff938481166000948186527fc84b62be2e432010aa71cc1bbdba4c7b02245544521aa5beae20093c70622400976020948986526040998a8920828a52875260ff8b8a2054166128fd578489528652898820908852855288872080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561279291369190611ffa565b9061279d828661353d565b5060048199929910156128d0571597886128c4575b50505085156127f2575b5050505050156127c95750565b600490517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b849550908492939491875161286e81612842888201947f1626ba7e000000000000000000000000000000000000000000000000000000009a8b875260248401528c604484015260648301906121f8565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611f7f565b51915afa9261287b61350d565b90846128b7575b84612896575b5050505038808080806127bc565b909180939450828051810103126128b4575001511438808080612888565b80fd5b9350818151101593612882565b161495503880806127b2565b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b604485838d51917f17a63d2100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b602490604051907f16d5b96e0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907f627913020000000000000000000000000000000000000000000000000000000082526004820152fd5b519067ffffffffffffffff8216820361028e57565b979397969291909495966129bc6122fc565b986040988951987f611efc09000000000000000000000000000000000000000000000000000000008a5260a08a80612a1b8989600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa998a15612e315760009a8b90612d35575b73ffffffffffffffffffffffffffffffffffffffff91505116918215612ce85773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b15612ce457928a9273ffffffffffffffffffffffffffffffffffffffff60c4938f968f97839051998a9889977fb3836da900000000000000000000000000000000000000000000000000000000895260048901526024880152818c16604488015216606486015260848501521660a483015234905af18015612cda57612cc7575b5084612b54575b505050505050505090565b879850612b96858560a095969798999a5196879586957fce5263c300000000000000000000000000000000000000000000000000000000875260048701612659565b03818873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1918215612cbd5785918693612c71575b5090612c61612c50927f75abe44fdeadfdd67030f2daa67c1059ca29139b11a7474bc1b0ad0de3ef53e19495839951948580956060809173ffffffffffffffffffffffffffffffffffffffff8082511685526020820151166020850152604081015160408501520151910152565b60a0608085015260a084019161261a565b0390a43880808080808080612b49565b7f75abe44fdeadfdd67030f2daa67c1059ca29139b11a7474bc1b0ad0de3ef53e19350612c509250612cb4612c619160a03d60a01161042e5761041f8183611f7f565b94509250612be2565b86513d87823e3d90fd5b612cd390979197611f33565b9538612b42565b89513d8a823e3d90fd5b8b80fd5b8b517f2bcab40c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101889052604490fd5b5060a0813d60a011612e29575b81612d4f60a09383611f7f565b81010312612e25578b519060a0820182811067ffffffffffffffff821117612df8578d52805173ffffffffffffffffffffffffffffffffffffffff81168103612df4578252608090612da360208201612995565b60208401528d612db48183016125a2565b90840152612dc460608201612995565b606084015201518015158103612ce457608082015273ffffffffffffffffffffffffffffffffffffffff90612a67565b8c80fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8a80fd5b3d9150612d42565b8b513d6000823e3d90fd5b612e44613579565b90612e4d6135e3565b926040519360208501937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85526040860152606085015260808401523060a084015260a0835260c083019183831067ffffffffffffffff841117610b0a5760429360e29184604052815190207f1901000000000000000000000000000000000000000000000000000000000000855260c282015201522090565b60208183031261028e5780519067ffffffffffffffff821161028e570181601f8201121561028e578051612f1a81611fc0565b92612f286040519485611f7f565b8184526020828401011161028e5761204c91602080850191016121d5565b96949190939592612f556122fc565b9673ffffffffffffffffffffffffffffffffffffffff92837f00000000000000000000000000000000000000000000000000000000000000001691823b1561028e578a85939160e48a869460405195869485937fa836f32f00000000000000000000000000000000000000000000000000000000855260009c8d98166004860152602485015281891660448501528a606485015216608483015260c060a48301528460c483015234905af1801561319857613185575b508561301e575b50505050505050909150565b859798508385979a61306360a096986040519a8b97889687957fce5263c300000000000000000000000000000000000000000000000000000000875260048701612659565b03927f0000000000000000000000000000000000000000000000000000000000000000165af192831561317a57829361312e575b509061311d613107927fcedb5a75580654e29d3155d729722981b31eaf1430626b7c53aadf5b6e4c159b94958398604051958680966060809173ffffffffffffffffffffffffffffffffffffffff8082511685526020820151166020850152604081015160408501520151910152565b608085015260c060a085015260c084019161261a565b0390a2819038808080808080613012565b7fcedb5a75580654e29d3155d729722981b31eaf1430626b7c53aadf5b6e4c159b9350613107925061317161311d9160a03d60a01161042e5761041f8183611f7f565b94509250613097565b6040513d84823e3d90fd5b61319190949194611f33565b923861300b565b6040513d87823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361124457565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b90600182811c921680156132e0575b60208310146132b157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916132a6565b604051906000827fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029182549261331f84613297565b808452936020916001918281169081156133ae575060011461334d575b50505061334b92500383611f7f565b565b60009081527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d9590935091905b828410613396575061334b94505050810160200138808061333c565b8554888501830152948501948794509281019261337a565b9150506020935061334b9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138808061333c565b604051906000827fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1039182549261342884613297565b808452936020916001918281169081156133ae57506001146134535750505061334b92500383611f7f565b60009081527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b759590935091905b82841061349c575061334b94505050810160200138808061333c565b85548885018301529485019487945092810192613480565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156134e357565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fd5b3d15613538573d9061351e82611fc0565b9161352c6040519384611f7f565b82523d6000602084013e565b606090565b815191906041830361356e5761356792506020820151906060604084015193015160001a906136c8565b9192909190565b505060009160029190565b6135816132ea565b8051908115613591576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156135be5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6135eb6133f3565b80519081156135fb576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156135be5790565b90613667575080511561363d57805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b815115806136bf575b613678575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b15613670565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161375957926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561374d57805173ffffffffffffffffffffffffffffffffffffffff81161561374457918190565b50809160019190565b604051903d90823e3d90fd5b5050506000916003919056fea264697066735822122080c6c0f5e268da26d5ab5b7442310e0dffbb4b3bc58e5dd65132f3110881f9bd64736f6c634300081700330000000000000000000000007777777c2b3132e03a65721a41745c07170a5877000000000000000000000000777777722d078c97c6ad07d9f36801e653e356ae000000000000000000000000777777edf27ac61671e3d5718b10bf6a8802f9f1000000000000000000000000000000000000000000000000000000e8d4a51000