{"version":3,"sources":["hooks/useWindowDrag.js","utils/calculatePosition.js","constants/chains.js","ethereumFunctions.js","constants/coins.js","hooks/useWeb3Connection.js","Components/connectWalletPage.js","Components/Web3Provider.js","assets/images/ethereumlogo.png","assets/images/arbitrumlogo.png","assets/images/baselogo.png","assets/images/sepolialogo.png","Components/ConnectionStatus/ConnectionStatus.js","Components/Web3ProviderConnectionStatus.js","NavBar/MenuItems.js","assets/images/rewards.gif","NavBar/NavBar.js","Locker/MenuItemsLocker.js","Locker/NavBarLocker.js","Hardstake/MenuItemsStake.js","Hardstake/NavBarHardstake.js","hooks/useDraggable.js","Components/DesktopIcon.js","assets/images/lime.png","Components/Icons/LimeIcon.js","assets/images/powershell.png","Components/Icons/PowershellIcon.js","assets/images/clippylogo.png","Components/Icons/ClippyIcon.js","assets/images/ninjaicon.png","Components/Icons/NinjaIcon.js","assets/images/minesweeper.png","Components/Icons/MinesweeperIcon.js","assets/images/roverlogo.png","Components/Icons/RoverIcon.js","assets/images/degenlogo.png","Components/Icons/DegenIcon.js","assets/images/Folder.webp","Components/Icons/FolderIcon.js","assets/images/vistaStore.png","Components/Icons/VistaStore.js","assets/images/xp-fun.png","Components/Icons/XpFun.js","Components/DesktopIcons.js","Components/FolderIcons.js","Components/Window.js","assets/images/goldcoin.png","assets/images/dropdowniconn.png","CoinSwapper/CoinField.js","CoinSwapper/CoinButton.js","CoinSwapper/CoinDialog.js","Components/wrongNetwork.js","CoinSwapper/CoinSwapper.js","assets/images/swap.png","Locker/CoinLocker.js","assets/images/Remove.png","Locker/RewardsLocker.js","assets/images/lightning.png","assets/images/open-locker.png","Hardstake/Stake.js","Hardstake/StakeBoost.js","Hardstake/RewardsStake.js","Liquidity/SwitchButton.js","Liquidity/LiquidityFunctions.js","Components/LoadingButton.js","Liquidity/LiquidityDeployer.js","assets/images/deploy.png","Liquidity/RemoveLiquidity.js","Liquidity/Liquidity.js","Liquidity/Rewards.js","assets/images/channels3.png","assets/images/tokenanalytics.gif","Liquidity/Analytics.js","Components/LiveChat.js","hooks/useTokenData.js","Components/Boost.js","Components/Tools.js","assets/images/gooluck.gif","assets/images/rover.gif","assets/images/clippybounce.gif","Liquidity/Launcher.js","assets/images/interrogation.png","assets/images/moon.png","assets/images/lightTheme.jpg","assets/images/logo.png","assets/images/superchatgif.gif","assets/images/logoEthervista.gif","App.js","reportWebVitals.js","index.js","Components/ConnectionStatus/ConnectionStatus.module.css"],"names":["useWindowDrag","ref","isDragging","setIsDragging","useState","dragOffset","setDragOffset","x","y","useEffect","handleMouseMove","e","newX","clientX","newY","clientY","screenWidth","window","innerWidth","screenHeight","innerHeight","maxLeftPosition","maxRightPosition","current","offsetWidth","maxBottomPosition","offsetHeight","boundedX","Math","max","min","boundedY","style","left","top","handleMouseUp","document","body","userSelect","addEventListener","removeEventListener","offsetX","getBoundingClientRect","offsetY","calculateInitialPosition","xPercent","yPixels","networks","ChainId","routerAddress","Map","set","ROUTER","require","ERC20","FACTORY","PAIR","HARDLOCK","HARDSTAKE","TOKEN_FACTORY","async","getNetwork","provider","chainId","getAccount","ethereum","request","method","fetchReserves","address1","address2","pair","signer","coin1","Contract","abi","coin2","coin1Decimals","getDecimals","coin2Decimals","reservesRaw","getReserves","results","token0","token1","err","console","log","factory","accountAddress","getAddress","pairAddress","getPair","liquidityTokens_BN","balanceOf","liquidityTokens","Number","ethers","utils","formatEther","toPrecision","getStats","routerContract","WETH","pairContract","eth_price","usdcToEth","usrShare","viewShare","toString","total","totalCollected","pool","poolBalance","share","toFixed","token","decimals","then","result","catch","error","getBalanceAndSymbol","address","weth_address","coins","balanceRaw","getBalance","balance","symbol","abbr","tokenDecimals","getMetadata","metadata","fetchMetadata","buyFee","buyTotalFee","sellFee","sellTotalFee","total_rewards","creator","creation_date","unixTimestamp","date","Date","day","String","getDate","padStart","month","getMonth","year","getFullYear","concat","convertTimestampToDate","creation_time","renounced","name","supply","totalSupply","priceData","price","marketcap","total_liquidity","getPriceData","totalRewardsUSD","getStatsLOCK","network","lockerAddress","lockerContract","getStatsSTAKE","stakeAddress","stakeContract","getStakerInfoSTAKE","staker","providers","JsonRpcProvider","signant","Wallet","amountStaked","timeLeftToUnlock","currentShare","getStakerInfo","amount","timeLeftFormatted","seconds","hours","floor","minutes","convertUnixToTimeString","getMetadataBoosts","tokenAddr","t1","t2","COINS","chains","useWeb3Connection","isConnected","setConnected","setNetwork","account","chainID","router","weth","backgroundListener","useRef","setupConnection","Web3Provider","getSigner","includes","getRouter","get","wethAddress","getWeth","getFactory","alert","clearInterval","setInterval","createListener","useStyles","makeStyles","theme","paperContainer","borderRadius","spacing","padding","paddingBottom","maxWidth","margin","marginTop","fullWidth","width","title","textAlign","marginBottom","hr","overflow","buttonIcon","marginRight","footer","ConnectWalletPage","_jsxs","children","_jsx","container","direction","justifyContent","alignItems","className","src","alt","props","_Fragment","render","ConnectionStatus","_ref","undefined","logo","altText","EthereumLogo","ArbitrumLogo","BaseLogo","styles","connected","disconnected","image","text","Web3ProviderConnectionStatus","MenuItems","url","cName","NavItem","item","isSelected","onClick","role","aria-selected","Link","to","rewardsgif","NavBar","selectedTab","setSelectedTab","map","index","MenuItemsLocker","NavBarLocker","MenuItemsStake","NavBarHardstake","useDraggable","initialPosition","iconSize","arguments","length","height","position","setPosition","dragStart","hasMovedRef","initialRelativePosition","constrainPosition","useCallback","pos","maxX","maxY","calculatePosition","handleDragStart","handleDrag","newPosition","dx","dy","sqrt","handleDragEnd","handleResize","hasMoved","DesktopIcon","icon","Icon","label","onOpen","cursor","onMouseDown","preventDefault","stopPropagation","LimeIcon","lime","pointerEvents","PowershellIcon","powershell","ClippyIcon","Clippylogo","NinjaIcon","Ninjalogo","MinesweeperIcon","Minesweeperlogo","RoverIcon","rover","DegenIcon","Degenlogo","FolderIcon","folder","VistaStore","vistaStore","XpFun","xpFun","DesktopIcons","toggleWindow","open","iconsList","link","IconList","maxHeight","overflowY","scrollbarWidth","msOverflowStyle","marginLeft","href","target","rel","textDecoration","color","Window","RemoveLiquidityField1","value","onChange","activeField","size","variant","boxShadow","fontFamily","minHeight","dropdown","placeholder","disabled","goldcoin","RemoveLiquidityField2","CoinField","onMaxClick","showMaxButton","minWidth","fontSize","button","paddingTop","backgroundColor","COLORS","coinName","opacity","CoinButton","coinAbbr","other","classes","dialogContainer","titleSection","titleText","alignSelf","paddingLeft","paddingRight","coinList","coinContainer","DialogTitle","withStyles","onClose","class","aria-label","DialogActions","root","MuiDialogActions","CoinDialog","others","setAddress","React","setError","exit","Dialog","paper","Grid","alignContent","helperText","coin","xs","Button","autoFocus","submit","doesTokenExist","type","WrongNetwork","MuiDialogTitle","CoinSwapper","enqueueSnackbar","useSnackbar","dialog1Open","setDialog1Open","dialog2Open","setDialog2Open","wrongNetworkOpen","setwrongNetworkOpen","setCoin1","setCoin2","reserves","setReserves","field1Value","setField1Value","field2Value","setField2Value","loading","setLoading","isTokenSafe","setIsTokenSafe","switchFields","reverse","handleChange","field1","formatToFourDecimals","integerPart","decimalPart","split","paddedDecimal","padEnd","slice","formatBalance","parseFloat","formatReserve","reserve","showSlippageDiv","setShowSlippageDiv","slippageValue","setSlippageValue","toggleSlippageDiv","slippageDiv","for","id","bool","isWhitelisted","safeFactory","safeTokenFactory","whitelistedTokens","data","isNaN","amountIn","token1Decimals","token2","token2Decimals","amount_out","getAmountsOut","parseUnits","getAmountOut","coinTimeout","setTimeout","clearTimeout","handleMaxClick","formattedBalance","valid","isButtonEnabled","parsedInput1","parsedInput2","success","fail","swap","truncatedValue","truncatedDecimal","truncateToFourDecimals","slippage","tokens","time","now","deadline","BigNumber","from","amountOut","callStatic","liqFee","round","swapExactETHForTokensSupportingFeeOnTransferTokens","BigInt","allowance1","allowance","tx","approve","wait","sellfee","swapExactTokensForETHSupportingFeeOnTransferTokens","swapTokens","message","autoHideDuration","CoinLocker","setPairAddress","lockedAmount","setLockedAmount","hardstake","lock","RewardsLocker","userRewards","setUserRewards","allTimeRewards","setAllTimeRewards","totalRewards","setTotalRewards","dialogOpen","setDialogOpen","selectedToken","setSelectedToken","fetchRewards","stats","fetchR","fetchInterval","handleOpenDialog","claimShare","claimRewardsLOCK","remover","Stake","stakedAmount","setStakedAmount","setAmount","lockDuration","setLockDuration","timeLeft","setTimeLeft","fetchStakerInfo","VISTA","stake","lightningIcon","withdraw","unstake","openPadlock","StakeBoost","cost","setCost","spotAvailable","setSpotAvailable","isAvailable","isSpotAvailable","checkAvailable","fetchSpotAvailability","fontWeight","Fee","contributeETH","boostIt","RewardsStake","hardcodedAddress","tokenData","setTokenData","fetchTokenData","claimRewardsSTAKE","SwitchButton","setDeploy","selectedButton","setSelectedButton","changeStyles","querySelectorAll","forEach","setAttribute","removeAttribute","addLiquidityButton","getElementById","quote","amount1","reserve1","reserve2","quoteMintLiquidity","amountA","amountB","_reserveA","_reserveB","reserveA","reserveB","_totalSupply","valueA","valueB","wrapper","progress","green","values","LiquidityDeployer","setLiquidityTokens","liquidityOut","setLiquidityOut","oldField1Value","oldField2Value","field2","NaN","amountADesired","amountBDesired","amountBOptimal","amountAOptimal","quoteAddLiquidity","tooltipVisible","setTooltipVisible","networksigner","lineHeight","deploy","amount2","amount1min","amount2min","amountIn1","amountIn2","amount1Min","amount2Min","addLiquidityETH","addLiquidity","LiquidityRemover","tokensOut","setTokensOut","parsedInput","liquidity","quoteRemoveLiquidity","remove","liquidity_tokens","Getliquidity","removeLiquidityETHSupportingFeeOnTransferTokens","removeLiquidity","Liquidity","deploy_or_remove","Rewards","claimRewards","Analytics","_props$network11","_props$network12","_metadata$metadata","setMetadata","isLoading","setIsLoading","priceUpdateInterval","setPriceUpdateInterval","meta","fetchLivedata","_props$network4","_props$network5","_props$network6","getLivedata","fetchedMetadata","_props$network","_props$network2","_props$network3","_props$network7","_props$network8","_props$network9","_props$network10","tokengif","notfound","onError","onerror","app","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","auth","getAuth","db","getFirestore","LiveChat","user","setUser","displayName","setDisplayName","tempDisplayName","setTempDisplayName","setMessage","allMessages","setAllMessages","displayedMessages","setDisplayedMessages","setBalance","lastMessageTime","setLastMessageTime","isFirstLoad","setIsFirstLoad","messageListRef","fetchBalance","loadMessages","q","query","collection","orderBy","onSnapshot","querySnapshot","fetchedMessages","docs","doc","scrollToBottom","retryLoadMessages","attempts","unsubscribeAuth","onAuthStateChanged","unsubscribeMessages","force","scrollTop","scrollHeight","canSendMessage","currentTime","delay","getMessageDelay","canSend","flex","display","flexDirection","msg","emoji","getDisplayNameStyle","uid","onSubmit","trim","addDoc","createdAt","serverTimestamp","maxLength","confirmDisplayName","handleAnonymousLogin","signInAnonymously","userCredential","useTokenData","selectedTokens","i","privateKey","tokenMetadata","push","Boost","visibleUserIndex","setVisibleUserIndex","addresses","setAddresses","isLoadingAddresses","setIsLoadingAddresses","contributors","getContributors","zeroAddress","nonZeroAddresses","filter","addr","updatedContributors","fetchAddresses","interval","prevIndex","isTokenDataLoading","_addresses$index","_data$metadata","_addresses$index2","Tools","tokenaddress","setTokenaddress","spender","setSpender","lpaddress","setLpaddress","lpamount","setLpamount","recipient","setRecipient","pairaddress","setPairaddress","safeTransferLp","safeLPtransfer","updateSelf","update","inputBuyLiqValue","setInputBuyLiqValue","inputSellCreatorValue","setInputSellCreatorValue","inputBuyCreatorFeeValue","setInputBuyCreatorFeeValue","inputSellCreatorFeeValue","setInputSellCreatorFeeValue","inputProtocolAddressValue","setInputProtocolAddressValue","inputWebsiteURL","setInputWebsiteURL","inputTokenDescription","setInputTokenDescription","inputImageURL","setInputImageURL","inputChatURL","setInputChatURL","inputSocialURL","setInputSocialURL","setName","setSymbol","setSupply","vistaOnly","setVistaOnly","launchError","setLaunchError","displayAddress","setDisplayAddress","updateAddress","create","events","find","event","args","handleCoinFieldChange","handleInputChange","buyLiq","test","sellCreator","buyCreatorFee","sellCreatorFee","protocolAddress","websiteURL","description","imageURL","chatURL","InputSocialUrl","checked","margintop","border","borderTopColor","borderLeftColor","borderRightColor","borderBottomColor","onMouseEnter","onMouseLeave","zIndex","monke","buyLpFee","sellLpFee","launch","clippy","websiteUrl","Description","Image","Chat","setMeta","App","windowVisibility","setWindowVisibility","container1","container2","container3","container4","container5","container6","container7","container8","container9","container10","container11","showBackgroundImage","setShowBackgroundImage","containerRefs","Object","keys","key","updateContainerSize","delayedVisibility","setDelayedVisibility","windowName","prev","newVisibility","prevDelayed","handleMouseDown1","handleMouseDown2","handleMouseDown4","handleMouseDown5","handleMouseDown6","handleMouseDown7","handleMouseDown8","handleMouseDown9","handleMouseDown10","handleMouseDown11","getWindowStyle","centerX","centerY","getInitialPosition","networkState","setNetworkState","EthervistaProviderContent","useMemo","Route","exact","path","Launcher","FolderIcons","LockerProviderContent","StakeProviderContent","SnackbarProvider","maxSnack","backgroundImage","lightbg","backgroundSize","backgroundPosition","transform","logoEthervista","superchat","ethericon","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","BrowserRouter","StrictMode","module","exports"],"mappings":"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","file":"static/js/main.dd24ff89.chunk.js","sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport const useWindowDrag = (ref) => {\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n\n const handleMouseDown = (e) => {\n setIsDragging(true);\n const offsetX = e.clientX - ref.current.getBoundingClientRect().left;\n const offsetY = e.clientY - ref.current.getBoundingClientRect().top;\n setDragOffset({ x: offsetX, y: offsetY });\n document.body.style.userSelect = \"none\";\n };\n\n useEffect(() => {\n const handleMouseMove = (e) => {\n if (isDragging) {\n const newX = e.clientX - dragOffset.x;\n const newY = e.clientY - dragOffset.y;\n const screenWidth = window.innerWidth;\n const screenHeight = window.innerHeight;\n const containerWidth = ref.current.offsetWidth;\n const containerHeight = ref.current.offsetHeight;\n\n const maxLeftPosition = 0;\n const maxRightPosition = screenWidth - containerWidth;\n const maxBottomPosition = screenHeight - 35 - containerHeight;\n\n const boundedX = Math.max(\n Math.min(newX, maxRightPosition),\n maxLeftPosition\n );\n const boundedY = Math.max(Math.min(newY, maxBottomPosition), 0);\n\n ref.current.style.left = boundedX + \"px\";\n ref.current.style.top = boundedY + \"px\";\n }\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n document.body.style.userSelect = \"auto\";\n };\n\n if (isDragging) {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDragging, dragOffset]);\n\n return handleMouseDown;\n};","export const calculateInitialPosition = (xPercent, yPixels) => {\n return {\n x: (window.innerWidth * xPercent) / 100,\n y: yPixels\n };\n };\n \nexport const getInitialPosition = (key) => {\n const screenWidth = window.innerWidth;\n const screenHeight = window.innerHeight;\n const containerWidth = 600;\n const containerHeight = 400;\n\n if (screenWidth <= 800) {\n return { left: 0, top: 0 };\n }\n\n const centerX = (screenWidth - containerWidth) / 2;\n const centerY = (screenHeight - containerHeight) / 2;\n\n switch (key) {\n case \"container1\":\n return {\n left: centerX,\n top: 25,\n };\n case \"container2\":\n return {\n left: centerX + 50,\n top: centerY + 50,\n };\n case \"container3\":\n return {\n left: 0,\n top: 500,\n };\n case \"container4\":\n return {\n left: centerX - 100,\n top: centerY - 50,\n };\n case \"container5\":\n return {\n left: centerX + 100,\n top: centerY - 50,\n };\n case \"container6\":\n return {\n left: centerX,\n top: centerY + 100,\n };\n case \"container7\":\n return {\n left: screenWidth - 200 - containerWidth,\n top: 50,\n };\n case \"container8\":\n return {\n left: screenWidth - 300 - containerWidth,\n top: 100,\n };\n case \"container9\":\n return {\n left: centerX,\n top: 25,\n };\n case \"container10\":\n return {\n left: centerX,\n top: 25,\n };\n case \"container11\":\n return {\n left: centerX,\n top: 25,\n };\n default:\n return { left: 0, top: 0 };\n }\n};","export const networks = [1,42161,8453];\n\nexport const ChainId = {\n MAINNET: 1,\n //SEPOLIA: 11155111,\n BASE: 8453,\n ARBITRUM: 42161,\n //POLYGON: 137,\n //OP: 10,\n};\n\nexport const routerAddress = new Map();\nrouterAddress.set(ChainId.MAINNET,\"0xCEDd366065A146a039B92Db35756ecD7688FCC77\");\n//routerAddress.set(ChainId.SEPOLIA,\"0xb50908869e19791b7795d3f8383cDf139db170cA\");\nrouterAddress.set(ChainId.BASE, \"0x4Aab7db193bf3d0083e9db51735Ab3da0328C3d7\");\nrouterAddress.set(ChainId.ARBITRUM, \"0x1fD8A96D964b3169c083e292134378E17452C731\");\n//routerAddress.set(ChainId.POLYGON, \"0x07a1905D44feeA439ceFAabd11a63bEf684abE11\");\n//routerAddress.set(ChainId.OP, \"0x0F44AC51198D8F99847db6C431448dBC673428f1\");\n","import { Contract, ethers } from \"ethers\";\nimport * as chains from \"./constants/chains\";\n\nconst ROUTER = require(\"./build/UniswapV2Router02.json\"); \nconst ERC20 = require(\"./build/ERC20.json\"); //DO NOT CHANGE Erc20 token not lp\nconst FACTORY = require(\"./build/IUniswapV2Factory.json\");\nconst PAIR = require(\"./build/IUniswapV2Pair.json\"); \nconst HARDLOCK = require(\"./build/hardlock.json\");\nconst HARDSTAKE = require(\"./build/hardstake.json\");\nconst TOKEN_FACTORY = require(\"./build/TokenFactory.json\");\n\nexport function getProvider() {\n return new ethers.providers.Web3Provider(window.ethereum);\n}\n\nexport function getSigner(provider) {\n return provider.getSigner();\n}\n\nexport async function getNetwork(provider) {\n const network = await provider.getNetwork();\n return network.chainId;\n}\n\nexport function getRouter(address, signer) {\n return new Contract(address.toString(), ROUTER.abi, signer);\n}\n\nexport async function checkNetwork(provider) {\n const chainId = getNetwork(provider);\n if (chains.networks.includes(chainId)) {\n return true;\n }\n return false;\n}\n\nexport function getWeth(address, signer) {\n return new Contract(address, ERC20.abi, signer);\n}\n\nexport function getFactory(address, signer) {\n return new Contract(address, FACTORY.abi, signer);\n}\n\nexport async function getAccount() {\n const accounts = await window.ethereum.request({\n method: \"eth_requestAccounts\",\n });\n\n return accounts[0];\n}\n\n//=============== SWAP =================\n\nexport function doesTokenExist(address, signer) {\n try {\n return new Contract(address, ERC20.abi, signer);\n } catch (err) {\n console.log(\"token exist err?: \", err);\n return false;\n }\n}\n\nexport async function swapTokens( //add slippage uint, //need two new components Slippage text and Fee button EIP1559??\n address1, //ESTIMATE GAS???\n address2,\n amount,\n routerContract,\n accountAddress,\n signer,\n factory,\n slippage\n) {\n accountAddress = await signer.getAddress();\n\n const tokens = [address1, address2];\n const time = Math.floor(Date.now() / 1000) + 200000;\n const deadline = ethers.BigNumber.from(time);\n\n const token1 = new Contract(address1, ERC20.abi, signer);\n const tokenDecimals = await getDecimals(token1);\n\n const amountIn = ethers.utils.parseUnits(amount, tokenDecimals);\n const amountOut = await routerContract.callStatic.getAmountsOut(\n amountIn,\n tokens\n );\n\n const wethAddress = await routerContract.WETH();\n\n const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n\n if (address1 === wethAddress) {\n //buy\n let liqFee = await routerContract.usdcToEth(\n await pairContract.buyTotalFee()\n );\n\n /* global BigInt */\n\n console.log(Math.round(amountOut[1] * (1 - slippage / 100)));\n console.log(Math.round(Number(liqFee) + Number(amountIn)));\n await routerContract.swapExactETHForTokensSupportingFeeOnTransferTokens(\n BigInt(Math.round(amountOut[1] * (1 - slippage / 100))), //AmountoutMin: amountOut[1](1-slippage)\n tokens,\n accountAddress,\n deadline,\n { value: BigInt(Math.round(Number(liqFee) + Number(amountIn))) } //.toString()\n );\n } else if (address2 === wethAddress) {\n //sell\n const allowance1 = await token1.allowance(\n accountAddress,\n routerContract.address\n );\n console.log(\"allowance\", allowance1.toString());\n if (Number(allowance1) < amountIn) {\n console.log(\"approving...\");\n let tx = await token1.approve(\n routerContract.address,\n BigInt(amountIn * 2)\n );\n await tx.wait();\n }\n let sellfee = await pairContract.sellTotalFee();\n let liqFee = await routerContract.usdcToEth(sellfee); //totalSellFee actually\n await routerContract.swapExactTokensForETHSupportingFeeOnTransferTokens(\n BigInt(Number(amountIn)), //.toString(),\n BigInt(Math.round(amountOut[1] * (1 - slippage / 100))), //.toString(), //AmoutOutmin: amountOut[1](1-slippage)\n tokens,\n accountAddress.toString(),\n deadline,\n { value: BigInt(Math.round(Number(liqFee) * 1.03)) } //added feature , Number(liqFee).toString()?\n );\n\n /*\n console.log('liqFee', Number(liqFee)*1.1);\n console.log('amountIN:', Number(amountIn));\n console.log('AmountOutmin', Number(Math.round(amountOut[1] * (1 - slippage / 100))));\n console.log('ETH fee', Number(liqFee).toString() + 1);\n console.log('Deadline', Number(deadline));\n */\n }\n\n //Missing High priority: swapExactETHForTokensSupportingFeeOnTransferTokens\n // swapExactTokensForETHSupportingFeeOnTransferTokens\n\n //Missing SwapExactTokensForETH\n // SwapExactETHForTokens\n}\n\nexport async function getAmountOut(\n address1,\n address2,\n amountIn,\n routerContract,\n signer\n) {\n try {\n const token1 = new Contract(address1, ERC20.abi, signer);\n const token1Decimals = await getDecimals(token1);\n const token2 = new Contract(address2, ERC20.abi, signer);\n const token2Decimals = await getDecimals(token2);\n const values_out = await routerContract.getAmountsOut(\n ethers.utils.parseUnits(String(amountIn), token1Decimals),\n [address1, address2]\n );\n const amount_out = values_out[1] * 10 ** -token2Decimals;\n return Number(amount_out);\n } catch {\n return false;\n }\n}\n\nexport async function fetchReserves(address1, address2, pair, signer) {\n try {\n // Get decimals for each coin\n const coin1 = new Contract(address1, ERC20.abi, signer);\n const coin2 = new Contract(address2, ERC20.abi, signer);\n\n const coin1Decimals = await getDecimals(coin1);\n const coin2Decimals = await getDecimals(coin2);\n\n // Get reserves\n const reservesRaw = await pair.getReserves();\n\n // Put the results in the right order\n const results = [\n (await pair.token0()) === address1 ? reservesRaw[0] : reservesRaw[1],\n (await pair.token1()) === address2 ? reservesRaw[1] : reservesRaw[0],\n ];\n\n // Scale each to the right decimal place\n return [\n results[0] * 10 ** -coin1Decimals,\n results[1] * 10 ** -coin2Decimals,\n ];\n } catch (err) {\n console.log(\"error!\");\n console.log(err);\n return [0, 0];\n }\n}\n\nexport async function getReserves(\n address1,\n address2,\n factory,\n signer,\n accountAddress\n) {\n accountAddress = await signer.getAddress();\n try {\n const pairAddress = await factory.getPair(address1, address2);\n const pair = new Contract(pairAddress, PAIR.abi, signer);\n\n if (pairAddress !== \"0x0000000000000000000000000000000000000000\") {\n const reservesRaw = await fetchReserves(address1, address2, pair, signer);\n const liquidityTokens_BN = await pair.balanceOf(accountAddress);\n const liquidityTokens = Number(\n ethers.utils.formatEther(liquidityTokens_BN)\n );\n\n return [\n reservesRaw[0].toPrecision(6),\n reservesRaw[1].toPrecision(6),\n liquidityTokens,\n ];\n } else {\n console.log(\"no reserves yet\");\n return [0, 0, 0];\n }\n } catch (err) {\n console.log(\"error!\");\n console.log(err);\n return [0, 0, 0];\n }\n}\n\n// =============== LP REWARDS ==============\n\nexport async function getStats(\n address1,\n routerContract, //props.network.router\n factory, //props.network.factory\n signer\n) {\n try {\n const address2 = await routerContract.WETH();\n const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n const eth_price = (await routerContract.usdcToEth(1)) / 10 ** 18;\n\n if (pairAddress !== \"0x0000000000000000000000000000000000000000\") {\n let usrShare = (await pairContract.viewShare()).toString();\n let total = (await pairContract.totalCollected()).toString();\n let pool = (await pairContract.poolBalance()).toString();\n\n let share = (\n (Number(ethers.utils.formatEther(usrShare)) * 1) /\n eth_price\n ).toFixed(2);\n let totalCollected = (\n (Number(ethers.utils.formatEther(total)) * 1) /\n eth_price\n ).toFixed(2);\n let poolBalance = (\n (Number(ethers.utils.formatEther(pool)) * 1) /\n eth_price\n ).toFixed(2);\n //let lockTime = Number(ethers.utils.formatEther(await pairContract.lockTime()));\n\n return [\n share.toString(),\n totalCollected.toString(),\n poolBalance.toString(),\n ];\n } else {\n console.log(\"no rewards yet\");\n return [0, 0, 0];\n }\n } catch (err) {\n console.log(err);\n return [0, 0, 0];\n }\n}\n\nexport async function claimRewards(\n address1,\n routerContract, //props.network.router\n signer,\n factory //props.network.factory\n) {\n const address2 = await routerContract.WETH();\n const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n if (pairAddress !== \"0x0000000000000000000000000000000000000000\") {\n await pairContract.claimShare();\n }\n}\n\n//============= UTILS ===========\n\nfunction convertTimestampToDate(unixTimestamp) {\n // Create a new Date object with the Unix timestamp (in milliseconds)\n const date = new Date(unixTimestamp * 1000); // Multiply by 1000 to convert to milliseconds\n\n // Get day, month, and year\n const day = String(date.getDate()).padStart(2, \"0\"); // Add leading zero if necessary\n const month = String(date.getMonth() + 1).padStart(2, \"0\"); // Months are zero-indexed, so add 1\n const year = date.getFullYear();\n\n // Format the date as DD/MM/YYYY\n return `${day}/${month}/${year}`;\n}\n\nexport async function getDecimals(token) {\n const decimals = await token\n .decimals()\n .then((result) => {\n return result;\n })\n .catch((error) => {\n console.log(\"error setting to 18\", error);\n return 18;\n });\n return decimals;\n}\n\nexport async function getBalanceAndSymbol(\n accountAddress,\n address,\n provider,\n signer,\n weth_address,\n coins\n) {\n accountAddress = await signer.getAddress();\n try {\n if (address === weth_address) {\n const balanceRaw = await provider.getBalance(accountAddress.toString());\n return {\n balance: ethers.utils.formatEther(balanceRaw),\n symbol: coins[0].abbr,\n };\n } else {\n const token = new Contract(address, ERC20.abi, signer);\n const tokenDecimals = await getDecimals(token);\n const balanceRaw = await token.balanceOf(accountAddress.toString());\n const symbol = await token.symbol();\n\n return {\n balance: balanceRaw * 10 ** -tokenDecimals,\n symbol: symbol,\n };\n }\n } catch (error) {\n console.log(\"The getBalanceAndSymbol function had an error!\");\n console.log(error);\n return false;\n }\n}\n\nfunction convertUnixToTimeString(unixTimestamp) {\n let seconds = unixTimestamp;\n\n // Calculate hours\n const hours = Math.floor(seconds / 3600); // Get full hours\n seconds %= 3600; // Remainder for minutes\n\n // Calculate minutes\n const minutes = Math.floor(seconds / 60); // Get full minutes\n\n return `Hours: ${hours}, Minutes: ${minutes}`;\n}\n\n//============== ANALYTICS ===============\n//TO FIX address router\nexport async function getMetadata(\n address1,\n routerContract, //props.network.router\n factory, //props.network.factory\n signer\n) {\n try {\n const address2 = await routerContract.WETH();\n const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n\n //==================\n let metadata = await pairContract.fetchMetadata(); //website/logo/description/chat/social\n let buyFee = await pairContract.buyTotalFee();\n let sellFee = await pairContract.sellTotalFee();\n let total_rewards = await pairContract.totalCollected();\n let creator = await pairContract.creator();\n let creation = await pairContract.creation_time();\n let creation_date = convertTimestampToDate(creation);\n //==================\n let renounced = creator == 0x0000000000000000000000000000000000000000;\n //console.log('CREATION:', creation);\n const token = new Contract(address1, ERC20.abi, signer);\n const symbol = await token.symbol();\n const name = await token.name();\n const supply = (await token.totalSupply()) / 10 ** 18;\n\n const priceData = await getPriceData(\n address1,\n routerContract,\n pairContract,\n signer,\n supply\n );\n\n //now must return creation_date\n return {\n creation_date,\n metadata,\n symbol,\n name,\n supply,\n renounced,\n totalRewardsUSD: Number(total_rewards) / (priceData.eth_price * 10 ** 18),\n sellFee,\n buyFee,\n ...priceData,\n };\n } catch (err) {\n console.log(err);\n console.log(\"error fetch metadata\");\n }\n}\n\nasync function getPriceData(\n address1,\n routerContract,\n pairContract,\n signer,\n supply\n) {\n const coin1 = new Contract(address1, ERC20.abi, signer);\n const coin1Decimals = await coin1.decimals();\n const coin2Decimals = 18;\n\n let reservesRaw = await pairContract.getReserves();\n const results = [\n (await pairContract.token0()) === address1\n ? reservesRaw[0]\n : reservesRaw[1],\n (await pairContract.token1()) === (await routerContract.WETH())\n ? reservesRaw[1]\n : reservesRaw[0],\n ];\n\n const eth_price = (await routerContract.usdcToEth(1)) / 10 ** 18;\n let price = (\n (((results[1] * 10 ** -coin2Decimals) /\n (results[0] * 10 ** -coin1Decimals)) *\n 1) /\n eth_price\n ).toFixed(5);\n\n let marketcap = price * supply;\n const total_liquidity = (\n results[0] * 10 ** -coin1Decimals * price +\n (results[1] * 10 ** -coin2Decimals * 1) / eth_price\n ).toFixed(2);\n\n return {\n price,\n marketcap,\n total_liquidity,\n eth_price,\n };\n}\n\nexport async function getLivedata(address1, routerContract, factory, signer) {\n try {\n const address2 = await routerContract.WETH();\n const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n\n let total_rewards = await pairContract.totalCollected();\n\n const coin1 = new Contract(address1, ERC20.abi, signer);\n const coin1Decimals = await coin1.decimals();\n const coin2Decimals = 18;\n\n let reservesRaw = await pairContract.getReserves();\n const results = [\n (await pairContract.token0()) === address1\n ? reservesRaw[0]\n : reservesRaw[1],\n (await pairContract.token1()) === address2\n ? reservesRaw[1]\n : reservesRaw[0],\n ];\n const eth_price = (await routerContract.usdcToEth(1)) / 10 ** 18; //eth/$\n let price = (\n (((results[1] * 10 ** -coin2Decimals) /\n (results[0] * 10 ** -coin1Decimals)) *\n 1) /\n eth_price\n ).toFixed(5);\n const token = new Contract(address1, ERC20.abi, signer);\n const supply = (await token.totalSupply()) / 10 ** 18;\n console.log(\"supply\", supply);\n let marketcap = price * supply;\n const total_liquidity = (\n results[0] * 10 ** -coin1Decimals * price +\n (results[1] * 10 ** -coin2Decimals * 1) / eth_price\n ).toFixed(2);\n\n return {\n supply,\n price,\n totalRewardsUSD: Number(total_rewards) / (eth_price * 10 ** 18),\n marketcap,\n total_liquidity,\n };\n } catch (err) {\n console.log(err);\n console.log(\"error fetch metadata\");\n return null; // or an appropriate error object\n }\n}\n\nexport async function getFees(\n address1,\n routerContract, //props.network.router\n factory, //props.network.factory\n signer\n) {\n try {\n const address2 = await routerContract.WETH();\n const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n\n if (pairAddress !== \"0x0000000000000000000000000000000000000000\") {\n let sellFee = (await pairContract.sellTotalFee()).toString();\n let buyFee = (await pairContract.buyTotalFee()).toString();\n\n return [buyFee, sellFee];\n } else {\n console.log(\"no rewards yet\");\n return [0, 0];\n }\n } catch (err) {\n console.log(err);\n return [0, 0];\n }\n}\n\n//================ LOCK LP ======================\nexport async function lock (\n address1,\n amount,\n routerContract,\n signer\n) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n let lockerAddress;\n switch (chainId) {\n case 1:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\";\n break;\n case 8453:\n lockerAddress = \"0x3EdC8cda5610442a5708CDF5930DbE83C4173257\"\n break;\n case 42161:\n lockerAddress = \"0xC1a8De4D5eD59385218e957D7CeB2d41c7c74B26\"\n break;\n default:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\"\n }\n await routerContract.hardstake(lockerAddress, address1, BigInt(amount*(10**18)));\n \n}\n\nexport async function claimRewardsLOCK(\n address1,\n signer,\n) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n let lockerAddress;\n switch (chainId) {\n case 1:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\";\n break;\n case 8453:\n lockerAddress = \"0x3EdC8cda5610442a5708CDF5930DbE83C4173257\"\n break;\n case 42161:\n lockerAddress = \"0xC1a8De4D5eD59385218e957D7CeB2d41c7c74B26\"\n break;\n default:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\"\n }\n const lockerContract = new Contract(lockerAddress, HARDLOCK.abi, signer);\n await lockerContract.claimShare(address1);\n}\n\nexport async function getStatsLOCK(\n address1,\n routerContract, //props.network.router\n signer\n) {\n try {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n let lockerAddress;\n switch (chainId) {\n case 1:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\";\n break;\n case 8453:\n lockerAddress = \"0x3EdC8cda5610442a5708CDF5930DbE83C4173257\"\n break;\n case 42161:\n lockerAddress = \"0xC1a8De4D5eD59385218e957D7CeB2d41c7c74B26\"\n break;\n default:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\"\n }\n const lockerContract = new Contract(lockerAddress, HARDLOCK.abi, signer);\n const eth_price = (await routerContract.usdcToEth(1)) / 10 ** 18;\n\n let usrShare = (await lockerContract.viewShare(address1)).toString();\n let total = (await lockerContract.totalCollected()).toString();\n\n let share = (\n (Number(ethers.utils.formatEther(usrShare)) * 1) /\n eth_price\n ).toFixed(2);\n let totalCollected = (\n (Number(ethers.utils.formatEther(total)) * 1) /\n eth_price\n ).toFixed(2);\n let poolBalance = 0;\n\n return [\n share.toString(),\n totalCollected.toString(),\n poolBalance.toString(),\n ];\n } catch (err) {\n console.log(err);\n return [0, 0, 0];\n }\n}\n\nexport async function getStakerInfoLOCK(address1, signer) {\n try {\n const staker = await signer.getAddress();\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n let lockerAddress;\n switch (chainId) {\n case 1:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\";\n break;\n case 8453:\n lockerAddress = \"0x3EdC8cda5610442a5708CDF5930DbE83C4173257\"\n break;\n case 42161:\n lockerAddress = \"0xC1a8De4D5eD59385218e957D7CeB2d41c7c74B26\"\n break;\n default:\n lockerAddress = \"0xF6B510928ab880507246CD6946b7F061Eb8A9C78\"\n }\n const lockerContract = new ethers.Contract(lockerAddress, HARDLOCK.abi, signer);\n\n const [amountStaked, currentShare] = await lockerContract.getStakerInfo(staker, address1);\n\n return { amountStaked, currentShare };\n } catch (error) {\n console.error(\"Error fetching staker info:\", error);\n return { amountStaked: 0, currentShare: 0 }; // Return default values in case of error\n }\n}\n\n//============ HARDSTAKE ==================\n\n//approve logic here\n//nothing if not eth\nexport async function stake (\n amount,\n routerContract,\n signer\n) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n if (chainId == 1) {\n let accountAddress = await signer.getAddress();\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const VISTA = \"0xC9bCa88B04581699fAb5aa276CCafF7Df957cbbf\";\n const token = new Contract(VISTA, ERC20.abi, signer);\n const allowance1 = await token.allowance(\n accountAddress,\n routerContract.address\n );\n\n if (Number(allowance1) < amount) {\n let tx = await token.approve(\n routerContract.address,\n BigInt(amount*(10**18))\n );\n await tx.wait();\n }\n\n await routerContract.hardstake(stakeAddress, VISTA, BigInt(amount*(10**18)));\n } else {\n console.log(\"Can only stake VISTA in the ETH network\")\n }\n}\n\n//nothing if not eth\nexport async function unstake (\n amount,\n signer,\n) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n if (chainId == 1) {\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signer);\n await stakeContract.withdraw(BigInt(amount*(10**18)));\n } else {\n console.log(\"Can only stake VISTA in the ETH network\")\n }\n}\n\n//nothing if not ETH\nexport async function claimRewardsSTAKE(\n signer,\n) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n if (chainId == 1) {\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signer);\n await stakeContract.claimShare();\n } else {\n console.log(\"Can only stake VISTA in the ETH network\")\n }\n}\n\n//return 0 if on another network\nexport async function getStatsSTAKE(\n routerContract, //props.network.router\n signer\n) {\n try {\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signer);\n const eth_price = (await routerContract.usdcToEth(1)) / 10 ** 18;\n\n let usrShare = (await stakeContract.viewShare()).toString();\n let total = (await stakeContract.totalCollected()).toString();\n let pool = (await stakeContract.poolBalance()).toString();\n\n let share = (\n (Number(ethers.utils.formatEther(usrShare)) * 1) /\n eth_price\n ).toFixed(2);\n let totalCollected = (\n (Number(ethers.utils.formatEther(total)) * 1) /\n eth_price\n ).toFixed(2);\n let poolBalance = (\n (Number(ethers.utils.formatEther(pool)) * 1) /\n eth_price\n ).toFixed(2);\n\n return [\n share.toString(),\n totalCollected.toString(),\n poolBalance.toString(),\n ];\n } catch (err) {\n return [0, 0, 0];\n }\n}\n\n//dummy signer \nexport async function getStakerInfoSTAKE(signer) {\n const staker = await signer.getAddress();\n const provider = new ethers.providers.JsonRpcProvider('https://ethereum-rpc.publicnode.com');\n const privateKey = '0x93446dbfe2212b697dc281c7420d59ac9f613126487a66131c53450192757fe4';\n const signant = new ethers.Wallet(privateKey, provider);\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signant);\n\n let [amountStaked, timeLeftToUnlock, currentShare] = await stakeContract.getStakerInfo(staker);\n\n let amount = Number(amountStaked)/(10**18);\n let timeLeftFormatted = convertUnixToTimeString(timeLeftToUnlock).toString();\n\n return { amount, timeLeftFormatted, currentShare };\n}\n\n//nothing if not ETH\nexport async function boostIt(\n address1,\n routerContract,\n signer,\n) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n if (chainId == 1) {\n let cost = 99;\n let Fee = await routerContract.usdcToEth(cost); //totalSellFee actually\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signer);\n await stakeContract.contributeETH(\n address1,\n { value: BigInt(Math.round(Number(Fee) * 1.02)) }\n );\n } else {\n console.log(\"Can only stake VISTA in the ETH network\")\n }\n}\n\n//use default ETH node\nexport async function checkAvailable(signer) {\n const provider = new ethers.providers.JsonRpcProvider('https://ethereum-rpc.publicnode.com');\n const privateKey = '0x93446dbfe2212b697dc281c7420d59ac9f613126487a66131c53450192757fe4';\n const signant = new ethers.Wallet(privateKey, provider);\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signant);\n let isAvailable = await stakeContract.isSpotAvailable();\n return isAvailable;\n}\n\n//make it return the TOKEN addr\nexport async function getMetadataBoosts(\n pairAddress,\n signer\n) {\n try {\n let routerContract = new Contract(\"0xCEDd366065A146a039B92Db35756ecD7688FCC77\".toString(), ROUTER.abi, signer);\n let factory = new Contract(\"0x9a27cb5ae0B2cEe0bb71f9A85C0D60f3920757B4\".toString(), FACTORY.abi, signer);\n //const address2 = await routerContract.WETH();\n //const pairAddress = await factory.getPair(address1, address2);\n const pairContract = new Contract(pairAddress, PAIR.abi, signer);\n let tokenAddr;\n let t1 = await pairContract.token0();\n let t2 = await pairContract.token1();\n\n if (t1 == \"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1\" || t1 == \"0x4200000000000000000000000000000000000006\" || t1 == \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\") {\n tokenAddr = t2;\n } else {\n tokenAddr = t1;\n }\n //==================\n let metadata = await pairContract.fetchMetadata(); //website/logo/description/chat/social\n let buyFee = 10;\n let sellFee = tokenAddr;\n let total_rewards = 20;\n let creator = \"Ethervista\";\n let creation = \"Today\" //await pairContract.creation_time();\n let creation_date = \"Today\" //convertTimestampToDate(creation);\n //==================\n\n let renounced = creator == 0x0000000000000000000000000000000000000000;\n //console.log('CREATION:', creation);\n const token = new Contract(pairAddress, ERC20.abi, signer);\n const symbol = await token.symbol();\n const name = await token.name();\n const supply = \"100000\" //(await token.totalSupply()) / 10 ** 18;\n\n const priceData = getPriceDataDummy(\n\n );\n\n //now must return creation_date\n return {\n creation_date,\n metadata,\n symbol,\n name,\n supply,\n renounced,\n totalRewardsUSD: Number(total_rewards) / (priceData.eth_price * 10 ** 18),\n sellFee,\n buyFee,\n ...priceData,\n };\n } catch (err) {\n console.log(err);\n console.log(\"error fetch metadata\");\n }\n}\n\nfunction getPriceDataDummy(\n\n) {\n const eth_price = 10;\n let price = \"10\"\n let marketcap = \"10\";\n const total_liquidity = \"10\";\n\n return {\n price,\n marketcap,\n total_liquidity,\n eth_price,\n };\n}\n\n//eth dummy\nexport async function getContributors() {\n try {\n const provider = new ethers.providers.JsonRpcProvider('https://ethereum-rpc.publicnode.com');\n const privateKey = '0x93446dbfe2212b697dc281c7420d59ac9f613126487a66131c53450192757fe4';\n const signer = new ethers.Wallet(privateKey, provider);\n\n const stakeAddress = \"0xB0B5Ca8A3A258302558C5206f10af59bAAC57518\";\n const stakeContract = new Contract(stakeAddress, HARDSTAKE.abi, signer); \n const contributors = await stakeContract.getContributors();\n //console.log('Original Contributors:', contributors);\n\n // Filter out zero addresses and non-zero addresses\n const zeroAddress = '0x0000000000000000000000000000000000000000';\n const nonZeroAddresses = contributors.filter(addr => addr !== zeroAddress);\n\n // Combine non-zero addresses with themselves until the array is full\n const updatedContributors = [];\n let index = 0;\n while (updatedContributors.length < 10) {\n updatedContributors.push(nonZeroAddresses[index % nonZeroAddresses.length]);\n index++;\n }\n\n //console.log('Updated Contributors:', updatedContributors);\n //return updatedContributors;\n return [\n { address: updatedContributors[0]},\n { address: updatedContributors[1]},\n { address: updatedContributors[2]},\n { address: updatedContributors[3]},\n { address: updatedContributors[4]},\n { address: updatedContributors[5]},\n { address: updatedContributors[6]},\n { address: updatedContributors[7]},\n { address: updatedContributors[8]},\n { address: updatedContributors[9]}\n ];\n } catch (error) {\n console.error('Error fetching contributors:', error);\n }\n}\n\n//============= LAUNCHER ===============\nexport async function create(name, symbol, supply, vistaOnly, signer) {\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n let safeFactory;\n switch (chainId) {\n case 1:\n safeFactory = \"0x1a97A037A120Db530dDCe8370e24EaD0FE9cf5d0\";\n break;\n case 8453:\n safeFactory = \"0x273126bA6fb9C8E28CA47e50FdcEd6844994659c\"\n break;\n case 42161:\n safeFactory = \"0x5b181b1FA1b6cd5914ff31d6E0688a0F06774292\"\n break;\n default:\n console.log(\"NO NETWORK DETECTED DEFAULTING TO ETHEREUM\");\n safeFactory = \"0x1a97A037A120Db530dDCe8370e24EaD0FE9cf5d0\"\n }\n\n let safeTokenFactory = new Contract(\n safeFactory,\n TOKEN_FACTORY.abi,\n signer\n );\n\n let tx = await safeTokenFactory.create(\n name,\n symbol,\n Number(supply).toString(),\n vistaOnly\n );\n const receipt = await tx.wait();\n const event = receipt.events.find(\n (event) => event.event === \"safeTokenCreated\"\n );\n const address = event.args[0];\n\n return address;\n}\n\nexport async function isWhitelisted(address1, address2, signer) {\n let isWhitelisted;\n const network = await signer.provider.getNetwork();\n const chainId = network.chainId;\n let safeFactory;\n let weth;\n switch (chainId) {\n case 1:\n safeFactory = \"0x1a97A037A120Db530dDCe8370e24EaD0FE9cf5d0\";\n weth = \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\"\n break;\n case 8453:\n safeFactory = \"0x273126bA6fb9C8E28CA47e50FdcEd6844994659c\"\n weth = \"0x4200000000000000000000000000000000000006\";\n break;\n case 42161:\n safeFactory = \"0x5b181b1FA1b6cd5914ff31d6E0688a0F06774292\";\n weth = \"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1\";\n break;\n default:\n console.log(\"NO NETWORK DETECTED DEFAULTING TO ETHEREUM\");\n safeFactory = \"0x1a97A037A120Db530dDCe8370e24EaD0FE9cf5d0\"\n weth = \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\";\n }\n\n if (address1 == weth) {\n let safeTokenFactory = new Contract(\n safeFactory,\n TOKEN_FACTORY.abi,\n signer\n );\n isWhitelisted = await safeTokenFactory.whitelistedTokens(address2);\n } else {\n let safeTokenFactory = new Contract(\n safeFactory,\n TOKEN_FACTORY.abi,\n signer\n );\n isWhitelisted = await safeTokenFactory.whitelistedTokens(address1);\n }\n return isWhitelisted;\n}\n\n//====== TOOLS ======== \n\nexport async function approve(address1, amount, spender, signer) {\n const token1 = new Contract(address1, ERC20.abi, signer);\n let tx = await token1.approve(\n spender,\n BigInt(amount*(10**18))\n );\n await tx.wait();\n}\n\nexport async function update(pairAddress, router) {\n await router.updateSelf(pairAddress);\n}\n\nexport async function safeLPtransfer(pairAddress, amount, recipient, router) {\n await router.safeTransferLp(pairAddress, recipient, BigInt(amount*(10**18)));\n}","import * as chains from \"./chains\";\n\n// If you add coins for a new network, make sure Weth address (for the router you are using) is the first entry\nconst MAINNETCoins = [\n {\n name: \"Ether\",\n abbr: \"ETH\",\n address: \"\", // Weth address is fetched from the router\n },\n {\n name: \"Ethervista\",\n abbr: \"VISTA\",\n address: \"0xC9bCa88B04581699fAb5aa276CCafF7Df957cbbf\", // Weth address is fetched from the router\n },\n {\n name: \"Bonzi\",\n abbr: \"BONZI\",\n address: \"0xD6175692026BcD7Cb12A515e39cF0256eF35cb86\", // Weth address is fetched from the router\n },\n {\n name: \"Office Helper Clippy\",\n abbr: \"CLIPPY\",\n address: \"0x6304563F6639c077B519209f38611C0F67D6f10d\", // Weth address is fetched from the router\n },\n {\n name: \"Rover\",\n abbr: \"ROVER\",\n address: \"0x6aF84e3e9Fa8486b5cBb67c55ED1E7D9372a6d23\", // Weth address is fetched from the router\n },\n {\n name: \"Ninjacat\",\n abbr: \"NINJA\",\n address: \"0xF1a732FEEEb43450E4B35b54ea9D04eD994391AA\",\n },\n {\n name: \"Lime Audio\",\n abbr: \"LIME\",\n address: \"0x4Bd5E8Cd6A7642e93368B1eC900Eb6B02B6D5351\",\n },\n {\n name: \"DegenAds\",\n abbr: \"DEGEN\",\n address: \"0x7b20798866Fe3320EC5395e9978a3C98195c7c36\",\n },\n];\n\nconst ARBITRUMCoins = [\n {\n name: \"Ether\",\n abbr: \"ETH\",\n address: \"\", // Weth address is fetched from the router\n },\n];\n\nconst BASECoins = [\n {\n name: \"Ether\",\n abbr: \"ETH\",\n address: \"\", // Weth address is fetched from the router\n },\n];\n\n/*\nconst SEPOLIACoins = [\n {\n name: \"Ether\",\n abbr: \"ETH\",\n address: \"\", // Weth address is fetched from the router\n },\n {\n name: \"Ethervista\",\n abbr: \"VISTA\",\n address: \"0x637fe414b404C1274B2aCE377d016529B41dcDd6\", // Weth address is fetched from the router\n },\n {\n name: \"Tether USD\",\n abbr: \"USDT\",\n address: \"0x7169D38820dfd117C3FA1f22a697dBA58d90BA06\",\n },\n];\n*/\n\nconst COINS = new Map();\nCOINS.set(chains.ChainId.MAINNET, MAINNETCoins);\n//COINS.set(chains.ChainId.SEPOLIA, SEPOLIACoins);\nCOINS.set(chains.ChainId.BASE, BASECoins);\nCOINS.set(chains.ChainId.ARBITRUM, ARBITRUMCoins);\n\nexport default COINS;\n","import { useState, useEffect, useRef } from \"react\";\nimport { ethers } from \"ethers\";\nimport {\n getAccount,\n getFactory,\n getRouter,\n getNetwork,\n getWeth,\n} from \"../ethereumFunctions\";\nimport COINS from \"../constants/coins\";\nimport * as chains from \"../constants/chains\";\n\nexport const useWeb3Connection = () => {\n const [isConnected, setConnected] = useState(false);\n const [network, setNetwork] = useState({\n provider: null,\n signer: null,\n account: null,\n chainID: null,\n coins: [],\n router: null,\n factory: null,\n weth: null,\n });\n\n const backgroundListener = useRef(null);\n\n async function setupConnection() {\n try {\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n const signer = provider.getSigner();\n\n const account = await getAccount();\n const chainID = await getNetwork(provider);\n\n if (chains.networks.includes(chainID)) {\n const router = await getRouter(\n chains.routerAddress.get(chainID),\n signer\n );\n const coins = COINS.get(chainID);\n const wethAddress = await router.WETH();\n const weth = getWeth(wethAddress, signer);\n coins[0].address = wethAddress;\n\n const factoryAddress = await router.factory();\n const factory = getFactory(factoryAddress, signer);\n\n setNetwork({\n provider,\n signer,\n account,\n chainID,\n coins,\n router,\n factory,\n weth,\n });\n setConnected(true);\n } else {\n alert(\"Wrong network.\");\n setConnected(false);\n }\n } catch (e) {\n console.log(\"Error in setupConnection:\", e);\n setConnected(false);\n }\n }\n\n async function createListener() {\n return setInterval(async () => {\n try {\n const account = await getAccount();\n if (account !== network.account) {\n await setupConnection();\n }\n } catch (e) {\n console.log(\"Error in listener:\", e);\n setConnected(false);\n await setupConnection();\n }\n }, 5000);\n }\n\n useEffect(() => {\n setupConnection();\n\n if (backgroundListener.current != null) {\n clearInterval(backgroundListener.current);\n }\n backgroundListener.current = createListener();\n\n return () => clearInterval(backgroundListener.current);\n }, []);\n\n return { isConnected, network };\n};","import React from \"react\";\nimport {\n Container,\n Grid,\n makeStyles,\n Paper,\n Typography,\n} from \"@material-ui/core\";\n\nconst styles = (theme) => ({\n paperContainer: {\n borderRadius: theme.spacing(2),\n padding: theme.spacing(1),\n paddingBottom: theme.spacing(3),\n maxWidth: 700,\n margin: \"auto\",\n marginTop: \"200px\",\n },\n fullWidth: {\n width: \"100%\",\n },\n title: {\n textAlign: \"center\",\n padding: theme.spacing(0.5),\n marginBottom: theme.spacing(1),\n },\n hr: {\n width: \"100%\",\n },\n balance: {\n padding: theme.spacing(1),\n overflow: \"wrap\",\n textAlign: \"center\",\n },\n buttonIcon: {\n marginRight: theme.spacing(1),\n padding: theme.spacing(0.4),\n },\n footer: {\n marginTop: \"155px\",\n },\n});\n\nconst useStyles = makeStyles(styles);\n\nfunction ConnectWalletPage() {\n const classes = useStyles();\n return (\n
\n
\n
\n

Connect wallet for access

\n \n
\n \n );\n}\n\nexport default ConnectWalletPage;\n","import { useWeb3Connection } from \"../hooks/useWeb3Connection\";\nimport ConnectWalletPage from \"./connectWalletPage\";\n\nconst Web3Provider = (props) => {\n const { isConnected, network } = useWeb3Connection();\n\n const renderNotConnected = () => (\n
\n
\n \n
\n
\n );\n\n return (\n <>\n {!isConnected && renderNotConnected()}\n {isConnected &&
{props.render(network)}
}\n \n );\n};\n\nexport default Web3Provider;","export default __webpack_public_path__ + \"static/media/ethereumlogo.d96f6bf7.png\";","export default __webpack_public_path__ + \"static/media/arbitrumlogo.5c6bda7e.png\";","export default __webpack_public_path__ + \"static/media/baselogo.6f1b2ba0.png\";","export default __webpack_public_path__ + \"static/media/sepolialogo.039a3a1e.png\";","import React from 'react';\nimport styles from './ConnectionStatus.module.css';\nimport EthereumLogo from \"../../assets/images/ethereumlogo.png\"\nimport ArbitrumLogo from \"../../assets/images/arbitrumlogo.png\"\nimport BaseLogo from \"../../assets/images/baselogo.png\"\nimport SepoliaLogo from \"../../assets/images/sepolialogo.png\"\n\nconst ConnectionStatus = ({ network }) => {\n const chainId = network?.chainID;\n // const disconnectedState = \"Disconnected\"\n // const reloadOnDisconnected = window.location.reload((disconnectedState).toString);\n const isConnected = chainId !== undefined && chainId !== null;\n let logo, altText;\n \n if (isConnected) {\n switch(chainId) {\n case 1:\n logo = EthereumLogo;\n altText = \"Ethereum\";\n break;\n case 42161:\n logo = ArbitrumLogo;\n altText = \"Arbitrum\";\n break;\n case 8453:\n logo = BaseLogo;\n altText = \"Base\";\n break;\n default:\n logo = null;\n altText = \"Unknown\";\n }\n }\n \n return (\n
\n {isConnected && logo && (\n \n )}\n {isConnected ? 'Connected' : 'Disconnected'}\n
\n );\n};\n\n export default ConnectionStatus;","import { useWeb3Connection } from \"../hooks/useWeb3Connection\";\nimport ConnectionStatus from \"./ConnectionStatus/ConnectionStatus\";\n\nconst Web3ProviderConnectionStatus = (props) => {\n const { isConnected, network } = useWeb3Connection();\n\n const renderNotConnected = () => (\n
\n
\n \n
\n
\n );\n\n return (\n <>\n {!isConnected && renderNotConnected()}\n {isConnected &&
{props.render(network)}
}\n \n );\n};\n\nexport default Web3ProviderConnectionStatus;","export const MenuItems = [\r\n {\r\n title: \"Swap\",\r\n url: \"/\",\r\n cName: \"nav-links\",\r\n },\r\n {\r\n title: \"Liquidity\",\r\n url: \"/liquidity\",\r\n cName: \"nav-links\",\r\n },\r\n {\r\n title: \"Launcher\",\r\n url: \"/launcher\",\r\n cName: \"nav-links\",\r\n },\r\n {\r\n title: \" \",\r\n url: \"/rewards\",\r\n cName: \"nav-links\",\r\n },\r\n];\r\n","export default __webpack_public_path__ + \"static/media/rewards.648d2ba9.gif\";","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { MenuItems } from \"./MenuItems\";\nimport \"./NavBar.css\";\nimport rewardsgif from \"../assets/images/rewards.gif\";\n\nconst NavItem = ({ item, isSelected, onClick }) => (\n
  • \n \n {item.title === \" \" ? (\n \"Open\n ) : (\n item.title\n )}\n \n
  • \n);\n\nconst NavBar = () => {\n const [selectedTab, setSelectedTab] = useState(0);\n\n return (\n
    \n \n {MenuItems.map((item, index) => (\n setSelectedTab(index)}\n />\n ))}\n \n
    \n );\n};\n\nexport default NavBar;","export const MenuItemsLocker = [\n {\n title: \"Lock\",\n url: \"/locker\",\n cName: \"nav-links\",\n },\n {\n title: \" \",\n url: \"/rewardsLocker\",\n cName: \"nav-links\",\n },\n ];\n ","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { MenuItemsLocker } from \"./MenuItemsLocker\";\nimport \"../NavBar/NavBar.css\";\nimport rewardsgif from \"../assets/images/rewards.gif\";\n\nconst NavItem = ({ item, isSelected, onClick }) => (\n
  • \n \n {item.title === \" \" ? (\n \"Open\n ) : (\n item.title\n )}\n \n
  • \n);\n\nconst NavBarLocker = () => {\n const [selectedTab, setSelectedTab] = useState(0);\n\n return (\n
    \n \n {MenuItemsLocker.map((item, index) => (\n setSelectedTab(index)}\n />\n ))}\n \n
    \n );\n};\n\nexport default NavBarLocker;","export const MenuItemsStake = [\n {\n title: \"Stake\",\n url: \"/stake\",\n cName: \"nav-links\",\n },\n {\n title: \" \",\n url: \"/RewardsStake\",\n cName: \"nav-links\",\n },\n {\n title: \"Boost\",\n url: \"/stakeBoost\",\n cName: \"nav-links\",\n },\n ];\n ","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { MenuItemsStake } from \"./MenuItemsStake\";\nimport \"../NavBar/NavBar.css\";\nimport rewardsgif from \"../assets/images/rewards.gif\";\n\nconst NavItem = ({ item, isSelected, onClick }) => (\n
  • \n \n {item.title === \" \" ? (\n \"Open\n ) : (\n item.title\n )}\n \n
  • \n);\n\nconst NavBarHardstake = () => {\n const [selectedTab, setSelectedTab] = useState(0);\n\n return (\n
    \n \n {MenuItemsStake.map((item, index) => (\n setSelectedTab(index)}\n />\n ))}\n \n
    \n );\n};\n\nexport default NavBarHardstake;","import { useState, useCallback, useEffect, useRef } from 'react';\n\nconst useDraggable = (initialPosition, iconSize = { width: 64, height: 64 }, margin = 20) => {\n const [position, setPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n const dragOffset = useRef({ x: 0, y: 0 });\n const dragStart = useRef({ x: 0, y: 0 });\n const hasMovedRef = useRef(false);\n const initialRelativePosition = useRef({\n x: initialPosition.x / window.innerWidth,\n y: initialPosition.y / window.innerHeight\n });\n\n const constrainPosition = useCallback((pos) => {\n const maxX = window.innerWidth - iconSize.width - margin;\n const maxY = window.innerHeight - iconSize.height - margin;\n return {\n x: Math.max(margin, Math.min(pos.x, maxX)),\n y: Math.max(margin, Math.min(pos.y, maxY))\n };\n }, [iconSize.width, iconSize.height, margin]);\n\n const calculatePosition = useCallback(() => {\n const newX = initialRelativePosition.current.x * window.innerWidth;\n const newY = initialRelativePosition.current.y * window.innerHeight;\n return constrainPosition({ x: newX, y: newY });\n }, [constrainPosition]);\n\n const handleDragStart = useCallback((e) => {\n setIsDragging(true);\n dragOffset.current = {\n x: e.clientX - position.x,\n y: e.clientY - position.y\n };\n dragStart.current = { x: e.clientX, y: e.clientY };\n hasMovedRef.current = false;\n }, [position.x, position.y]);\n\n const handleDrag = useCallback((e) => {\n if (isDragging) {\n const newPosition = constrainPosition({\n x: e.clientX - dragOffset.current.x,\n y: e.clientY - dragOffset.current.y\n });\n setPosition(newPosition);\n initialRelativePosition.current = {\n x: newPosition.x / window.innerWidth,\n y: newPosition.y / window.innerHeight\n };\n\n const dx = e.clientX - dragStart.current.x;\n const dy = e.clientY - dragStart.current.y;\n if (Math.sqrt(dx*dx + dy*dy) > 5) {\n hasMovedRef.current = true;\n }\n }\n }, [isDragging, constrainPosition]);\n\n const handleDragEnd = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const handleResize = useCallback(() => {\n setPosition(calculatePosition());\n }, [calculatePosition]);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [handleResize]);\n\n useEffect(() => {\n if (isDragging) {\n window.addEventListener('mousemove', handleDrag);\n window.addEventListener('mouseup', handleDragEnd);\n } else {\n window.removeEventListener('mousemove', handleDrag);\n window.removeEventListener('mouseup', handleDragEnd);\n }\n\n return () => {\n window.removeEventListener('mousemove', handleDrag);\n window.removeEventListener('mouseup', handleDragEnd);\n };\n }, [isDragging, handleDrag, handleDragEnd]);\n\n // Initial position setup\n useEffect(() => {\n handleResize();\n }, [handleResize]);\n\n return { position, handleDragStart, isDragging, hasMoved: hasMovedRef.current };\n};\n\nexport default useDraggable;","import React from 'react';\nimport useDraggable from '../hooks/useDraggable';\n\nconst DesktopIcon = ({ icon: Icon, label, initialPosition, onOpen }) => {\n const iconSize = { width: 64, height: 64 }; // Ajustez selon la taille réelle de l'icône\n const margin = 40;\n const { position, handleDragStart, isDragging, hasMoved } = useDraggable(initialPosition, iconSize, margin);\n\n const handleMouseDown = (e) => {\n handleDragStart(e);\n };\n\n const handleClick = (e) => {\n if (!hasMoved) {\n e.preventDefault();\n e.stopPropagation();\n onOpen();\n }\n };\n\n return (\n
    \n
    \n \n
    \n {label}\n
    \n );\n};\n\nexport default DesktopIcon;","export default __webpack_public_path__ + \"static/media/lime.1221a1da.png\";","import React from \"react\";\nimport lime from \"../../assets/images/lime.png\";\nconst LimeIcon = () => {\n return (\n \n );\n};\n\nexport default LimeIcon;\n","export default __webpack_public_path__ + \"static/media/powershell.0ab5daef.png\";","import React from \"react\";\nimport powershell from \"../../assets/images/powershell.png\";\nconst PowershellIcon = () => {\n return (\n \n );\n};\n\nexport default PowershellIcon;\n","export default __webpack_public_path__ + \"static/media/clippylogo.6f0a67b7.png\";","import React from \"react\";\nimport Clippylogo from '../../assets/images/clippylogo.png';\n\nconst ClippyIcon = () => {\n return (\n \"Clippy\n );\n};\n\nexport default ClippyIcon;","export default __webpack_public_path__ + \"static/media/ninjaicon.033f6bc9.png\";","import React from \"react\";\nimport Ninjalogo from '../../assets/images/ninjaicon.png';\n\nconst NinjaIcon = () => {\n return (\n \"Ninja\n );\n};\n\nexport default NinjaIcon;","export default __webpack_public_path__ + \"static/media/minesweeper.de8f9725.png\";","import React from \"react\";\nimport Minesweeperlogo from '../../assets/images/minesweeper.png';\n\nconst MinesweeperIcon = () => {\n return (\n \"Ninja\n );\n};\n\nexport default MinesweeperIcon;","export default __webpack_public_path__ + \"static/media/roverlogo.d6cf882e.png\";","import React from \"react\";\nimport rover from \"../../assets/images/roverlogo.png\";\nconst RoverIcon = () => {\n return (\n \n );\n};\n\nexport default RoverIcon;","export default __webpack_public_path__ + \"static/media/degenlogo.f44c7354.png\";","import React from \"react\";\nimport Degenlogo from '../../assets/images/degenlogo.png';\n\nconst DegenIcon = () => {\n return (\n \"Degen\n );\n};\n\nexport default DegenIcon;","export default __webpack_public_path__ + \"static/media/Folder.5da2d72e.webp\";","import React from \"react\";\nimport folder from \"../../assets/images/Folder.webp\";\nconst FolderIcon = () => {\n return (\n \n );\n};\n\nexport default FolderIcon;","export default __webpack_public_path__ + \"static/media/vistaStore.637c7242.png\";","import React from \"react\";\nimport vistaStore from \"../../assets/images/vistaStore.png\";\nconst VistaStore = () => {\n return (\n \n );\n};\n\nexport default VistaStore;","export default __webpack_public_path__ + \"static/media/xp-fun.017ec445.png\";","import React from \"react\";\nimport xpFun from \"../../assets/images/xp-fun.png\";\nconst XpFun = () => {\n return (\n \n );\n};\n\nexport default XpFun;","import DesktopIcon from \"./DesktopIcon\";\nimport LimeIcon from \"../Components/Icons/LimeIcon\";\nimport PowershellIcon from \"../Components/Icons/PowershellIcon\";\nimport ClippyIcon from \"../Components/Icons/ClippyIcon\";\nimport NinjaIcon from \"../Components/Icons/NinjaIcon\";\nimport MinesweeperIcon from \"../Components/Icons/MinesweeperIcon\";\nimport RoverIcon from \"../Components/Icons/RoverIcon\";\nimport DegenIcon from \"../Components/Icons/DegenIcon\";\nimport FolderIcon from \"./Icons/FolderIcon\";\nimport VistaStore from \"./Icons/VistaStore\";\nimport XpFun from \"./Icons/XpFun\";\nimport { calculateInitialPosition } from \"../utils/calculatePosition\";\n\nconst DesktopIcons = ({ toggleWindow }) => {\n return (\n <>\n {/* window.open(\"https://lime.audio/\", \"_blank\")}\n />\n\n window.open(\"https://powershelltoken.com/\", \"_blank\")}\n />\n\n window.open(\"https://vistaclippy.xyz/\", \"_blank\")}\n />\n\n window.open(\"https://www.ninjacat.xyz/\", \"_blank\")}\n />\n\n window.open(\"https://www.mine-sweeper.fun/\", \"_blank\")}\n />\n\n window.open(\"https://www.vistarover.xyz/\", \"_blank\")}\n />\n\n window.open(\"https://degenads.com/vista/\", \"_blank\")}\n /> */}\n\n toggleWindow(\"container11\")}\n />\n\n window.open(\"http://xp.fun/\", \"_blank\")}\n />\n\n window.open(\"https://vistastore.fun/\", \"_blank\")}\n /> \n \n );\n};\n\nexport default DesktopIcons;","import React from \"react\";\nimport LimeIcon from \"../Components/Icons/LimeIcon\";\nimport PowershellIcon from \"../Components/Icons/PowershellIcon\";\nimport ClippyIcon from \"../Components/Icons/ClippyIcon\";\nimport NinjaIcon from \"../Components/Icons/NinjaIcon\";\nimport MinesweeperIcon from \"../Components/Icons/MinesweeperIcon\";\nimport RoverIcon from \"../Components/Icons/RoverIcon\";\nimport DegenIcon from \"../Components/Icons/DegenIcon\";\n\nconst iconsList = [\n {\n label: \"Degen Analytics\",\n link: \"https://degenads.com/vista/\",\n icon: ,\n },\n {\n label: \"Clippy Helper\",\n link: \"https://vistaclippy.xyz/\",\n icon: ,\n },\n {\n label: \"Lime Audio\",\n link: \"https://lime.audio/\",\n icon: ,\n },\n {\n label: \"Powershell\",\n link: \"https://powershelltoken.com/\",\n icon: ,\n },\n {\n label: \"Ninja\",\n link: \"https://www.ninjacat.xyz/\",\n icon: ,\n },\n {\n label: \"Mine Sweeper\",\n link: \"https://www.mine-sweeper.fun/\",\n icon: ,\n },\n {\n label: \"Roverswap\",\n link: \"https://www.vistarover.xyz/\",\n icon: ,\n },\n];\n\nconst IconList = () => {\n return (\n \n \n {iconsList.map((item, index) => (\n
    \n \n {item.icon}\n \n {item.label}\n \n \n
    \n ))}\n \n );\n};\n\nexport default IconList;\n","import { useWindowDrag } from \"../hooks/useWindowDrag\";\n\nconst Window = ({ title, children, containerRef, isVisible, onClose }) => {\n const handleMouseDown = useWindowDrag(containerRef);\n\n if (!isVisible) return null;\n\n return (\n
    \n
    \n
    {title}
    \n
    \n \n
    \n
    \n {children}\n
    \n );\n};\n\nexport default Window;","export default __webpack_public_path__ + \"static/media/goldcoin.8e219105.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAA4CAYAAABQZsDpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKCSURBVHgB7Zq5iiJhFIWP3dVN73s3tKAYGYhgYuADKL6C5oIYmPkQvoSRL2BqIoqaCQZiYCKC4oIGrrjjzP3BGm3QHq1y5tf+PxDupaqwTtWp5R5KY7FYFjhS5vM5ptMpFosF7u/voUmn04vhcIhjJJVKIRQKod/v4/PzE5LRaGTNMZLP59Hr9dBut9mZOcMJIa02Ly8vuL6+Bs/Q2cjlcqyu1+s4Pz+Xl62Juby8xMXFBXiGbFUsFlnd6XRwdvbHXKdrs1XoCDSbTfDGeDzeuGyjmMFggHK5DN7YJuakbCbE8IoQwytCDK8IMbwixPCKtOP6qFariEQi6Ha7UBOaFN1uN5up9mVnMZQXxGIxtFotqMnr6yucTqciMT/bZo+Pj3A4HCwEoagnmUyy2WcfaKq12+2QJInZ7OHhAUrYWczb2xu8Xi+rR6MRMpnM3mKen5/h9/txc3MDNfjZNluFwgSTyQStVsssVyqVvj1LT09P0Ol0LFWhejVdUYoiMeT5QCDAahqzg8Egstns1m3MZjOz1u3tLespEVILRWI0Gg3u7u7kmi7kb//w9zq0zVKMmigS8xW6Iy2fE/RQnc1mrKYL/OrqSl7nUKgmhnbY5/NhGcJToJ1IJFhttVrh8XhYTYmpWnevr6gmhmz2/v4u90v7EbTzer0eh0bcmv8Gl8vF3hQIJe9bu3AwMfQsod+/RAxnvCLE8IoQwytCDK8IMbwixPCKEMMrayMABXqVSkXuaXrkjW1R1pqYRqOBQqGAY+W0bBaPx+XgjsLwfXPj/0GtVmN59xIpGo0iHA6zhuJWHq+TTVAkPJlM5F6ir0+3fSl0TEgGgwE2mw3HzsfHB34BLVLH6g+BgKAAAAAASUVORK5CYII=\"","import React from \"react\";\nimport { Grid } from \"@material-ui/core\";\nimport PropTypes from \"prop-types\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport dropdown from \"../assets/images/dropdowniconn.png\";\n\nCoinField.propTypes = {\n onClick: PropTypes.func.isRequired,\n symbol: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n activeField: PropTypes.bool.isRequired,\n onMaxClick: PropTypes.func,\n showMaxButton: PropTypes.bool,\n};\n\nexport function RemoveLiquidityField1(props) {\n const { onClick, symbol, value, onChange, activeField } = props;\n return (\n
    \n
    \n \n {symbol}\n \n
    \n
    \n \n \"Gold\n
    \n
    \n \n );\n}\n\nexport function RemoveLiquidityField2(props) {\n const { onClick, symbol } = props;\n\n return (\n
    \n
    \n \n {symbol}\n \n
    \n
    \n \n );\n}\n\nexport default function CoinField(props) {\n const { onClick, symbol, value, onChange, activeField, onMaxClick, showMaxButton } = props;\n\n return (\n
    \n
    \n \n {symbol}\n \n
    \n {/* montrer le Max button seulement si showMaxButton est true */}\n {showMaxButton && (Max\n \n )}\n
    \n \n \"Gold\n
    \n
    \n \n );\n}\n","import React from \"react\";\nimport { makeStyles, } from \"@material-ui/core\";\nimport PropTypes from \"prop-types\";\nimport * as COLORS from \"@material-ui/core/colors\";\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n width: \"100%\",\n paddingTop: \"15px\",\n paddingBottom: 0,\n \"&:hover, &$focusVisible\": {\n backgroundColor: COLORS.grey[200],\n },\n },\n coinName: {\n opacity: 0.5,\n },\n}));\n\nCoinButton.propTypes = {\n coinName: PropTypes.string.isRequired,\n coinAbbr: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nexport default function CoinButton(props) {\n const { coinName, coinAbbr, onClick, ...other } = props;\n const classes = useStyles();\n\n return (\n \n \n );\n}\n","import React from \"react\";\nimport {\n Button,\n Dialog,\n Grid,\n IconButton,\n makeStyles,\n TextField,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\nimport MuiDialogActions from \"@material-ui/core/DialogActions\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport CoinButton from \"./CoinButton\";\nimport { doesTokenExist } from \"../ethereumFunctions\";\nimport PropTypes from \"prop-types\";\nimport * as COLORS from \"@material-ui/core/colors\";\nimport \"../assets/styles.css\";\n\nconst styles = (theme) => ({\n dialogContainer: {\n backgroundColor: \"#c0c0c0\",\n },\n titleSection: {\n padding: 0,\n backgroundColor: \"#c0c0c0\",\n },\n titleText: {\n alignSelf: \"center\",\n backgroundColor: \"#c0c0c0\",\n },\n hr: {\n margin: 0,\n },\n address: {\n paddingLeft: theme.spacing(2.5),\n paddingRight: theme.spacing(2.5),\n paddingBottom: theme.spacing(2),\n backgroundColor: \"#c0c0c0\",\n },\n coinList: {\n height: \"300px\",\n overflowY: \"scroll\",\n backgroundColor: \"#c0c0c0\",\n },\n coinContainer: {\n marginTop: theme.spacing(2),\n overflow: \"hidden\",\n backgroundColor: \"#c0c0c0\",\n },\n});\n\nconst useStyles = makeStyles(styles);\n\n// This is a modified version of MaterialUI's DialogTitle component, I've added a close button in the top right corner\nconst DialogTitle = withStyles(styles)((props) => {\n const { children, classes, onClose, ...other } = props;\n return (\n

    \n
    \n
    COINSELECTOR.exe
    \n\n {onClose ? (\n
    \n \n
    \n ) : null}\n
    \n

    \n );\n});\n\n// This is a modified version of MaterialUI's DialogActions component, the color has been changed by modifying the CSS\nconst DialogActions = withStyles((theme) => ({\n root: {\n margin: 0,\n backgroundColor: \"#c0c0c0\",\n },\n}))(MuiDialogActions);\n\nCoinDialog.propTypes = {\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n coins: PropTypes.array.isRequired,\n};\n\nexport default function CoinDialog(props) {\n // The CoinDialog component will display a dialog window on top of the page, allowing a user to select a coin\n // from a list (list can be found in 'src/constants/coins.js') or enter an address into a search field. Any entered\n // addresses will first be validated to make sure they exist.\n // When the dialog closes, it will call the `onClose` prop with 1 argument which will either be undefined (if the\n // user closes the dialog without selecting anything), or will be a string containing the address of a coin.\n\n const classes = useStyles();\n const { onClose, open, coins, signer, ...others } = props;\n\n const [address, setAddress] = React.useState(\"\");\n const [error, setError] = React.useState(\"\");\n\n // Called when the user tries to input a custom address, this function will validate the address and will either\n // then close the dialog and return the validated address, or will display an error.\n const submit = () => {\n if (doesTokenExist(address, signer)) {\n exit(address);\n } else {\n setError(\"This address is not valid\");\n }\n };\n\n // Resets any fields in the dialog (in case it's opened in the future) and calls the `onClose` prop\n const exit = (value) => {\n setError(\"\");\n setAddress(\"\");\n onClose(value);\n };\n\n return (\n exit(undefined)}\n fullWidth\n maxWidth=\"sm\"\n classes={{ paper: classes.dialogContainer }}\n >\n exit(undefined)}>Select Coin\n\n
    \n \n setAddress(e.target.value)}\n variant=\"outlined\"\n placeholder=\"Paste Address\"\n error={error !== \"\"}\n helperText={error}\n className=\"tokenadressbox inward-bevel\"\n />\n\n
    \n\n \n \n {/* Maps all of the tokens in the constants file to buttons */}\n {coins.map((coin, index) => (\n \n exit(coin.address)}\n />\n \n ))}\n \n \n
    \n
    \n\n
    \n\n \n \n \n \n );\n}\n","import React from \"react\";\nimport {\n Dialog,\n Grid,\n IconButton,\n makeStyles,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nconst styles = (theme) => ({\n dialogContainer: {\n borderRadius: theme.spacing(2),\n },\n});\n\nconst useStyles = makeStyles(styles);\n\nexport default function WrongNetwork(props) {\n\n const classes = useStyles();\n const {open} = props;\n return (\n \n Unsupported Network\n \n );\n}\n","import React, { useEffect } from \"react\";\n\nimport { useSnackbar } from \"notistack\";\nimport {\n getAccount,\n getFactory,\n getProvider,\n getRouter,\n getSigner,\n getNetwork,\n getAmountOut,\n getBalanceAndSymbol,\n getWeth,\n swapTokens,\n getReserves,\n getStats,\n isWhitelisted,\n} from \"../ethereumFunctions\";\nimport CoinField from \"./CoinField\";\nimport CoinDialog from \"./CoinDialog\";\nimport WrongNetwork from \"../Components/wrongNetwork\";\nimport COINS from \"../constants/coins\";\nimport * as chains from \"../constants/chains\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport swapicon from \"../assets/images/swap.png\";\n\nfunction CoinSwapper(props) {\n const { enqueueSnackbar } = useSnackbar();\n\n const [dialog1Open, setDialog1Open] = React.useState(false);\n const [dialog2Open, setDialog2Open] = React.useState(false);\n const [wrongNetworkOpen, setwrongNetworkOpen] = React.useState(false);\n\n const [coin1, setCoin1] = React.useState({\n address: undefined,\n symbol: undefined,\n balance: undefined,\n });\n const [coin2, setCoin2] = React.useState({\n address: undefined,\n symbol: undefined,\n balance: undefined,\n });\n\n const [reserves, setReserves] = React.useState([\"0.0\", \"0.0\"]);\n\n const [field1Value, setField1Value] = React.useState(\"\");\n const [field2Value, setField2Value] = React.useState(\"\");\n\n const [loading, setLoading] = React.useState(false);\n const [isTokenSafe, setIsTokenSafe] = React.useState(); // ne met pas bool value ici\n\n const switchFields = () => {\n setCoin1(coin2);\n setCoin2(coin1);\n setField1Value(\"\");\n setReserves(reserves.reverse());\n };\n\n const handleChange = {\n field1: (e) => {\n setField1Value(e.target.value);\n },\n };\n\n const formatToFourDecimals = (value) => {\n if (!value) return \"0.0000\";\n const [integerPart, decimalPart = \"\"] = value.toString().split(\".\");\n const paddedDecimal = decimalPart.padEnd(4, \"0\").slice(0, 4);\n return `${integerPart}.${paddedDecimal}`;\n };\n\n const handleMaxClick = () => {\n if (coin1.balance) { \n const formattedBalance = formatToFourDecimals(coin1.balance);\n setField1Value(formattedBalance);\n }\n };\n\n const formatBalance = (balance, symbol) => {\n if (balance && symbol) return formatToFourDecimals(parseFloat(balance));\n else return \"0.0000\";\n };\n\n const formatReserve = (reserve) => {\n if (reserve) return reserve;\n else return \"0.0\";\n };\n\n const isButtonEnabled = () => {\n const parsedInput1 = parseFloat(field1Value);\n const parsedInput2 = parseFloat(field2Value);\n return (\n coin1.address &&\n coin2.address &&\n !isNaN(parsedInput1) &&\n !isNaN(parsedInput2) &&\n 0 < parsedInput1 &&\n parsedInput1 <= coin1.balance &&\n (coin1.address === props.network.weth.address ||\n coin2.address === props.network.weth.address)\n );\n };\n\n const onToken1Selected = (address) => {\n setDialog1Open(false);\n\n if (address === coin2.address) {\n switchFields();\n } else if (address) {\n getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin1({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n });\n }\n };\n\n const [showSlippageDiv, setShowSlippageDiv] = React.useState(false);\n const [slippageValue, setSlippageValue] = React.useState(1);\n\n const toggleSlippageDiv = () => {\n setShowSlippageDiv(!showSlippageDiv);\n };\n\n const slippageDiv = (\n
    \n
    \n
    Select slippage amount
    \n
    \n \n
    \n
    \n\n
    \n \n setSlippageValue(e.target.value)}\n />\n \n
    \n

    Slippage : {slippageValue} %

    \n
    \n );\n\n const onToken2Selected = async (address) => {\n setDialog2Open(false);\n\n if (address === coin1.address) {\n switchFields();\n } else if (address) {\n getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then(async (data) => {\n setCoin2({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n });\n }\n };\n\n useEffect(() => {\n if (\n coin1.address &&\n coin1.address.length === 42 &&\n coin2.address &&\n coin2.address.length === 42\n ) {\n (async () => {\n let bool = await isWhitelisted(\n coin1.address,\n coin2.address,\n props.network.signer\n );\n setIsTokenSafe(bool);\n })();\n }\n }, [coin2.address, coin1.address, props.network.signer]);\n\n const truncateToFourDecimals = (value) => {\n if (value === '' || value == null || isNaN(value)) return '0';\n const [integerPart, decimalPart = ''] = value.toString().split('.');\n const truncatedDecimal = decimalPart.slice(0, 4);\n return `${integerPart}${truncatedDecimal ? '.' + truncatedDecimal : ''}`;\n };\n\n const swap = () => {\n console.log(\"Attempting to swap tokens...\");\n setLoading(true);\n\n const truncatedValue = truncateToFourDecimals(field1Value);\n console.log(\"Swap value (truncated to 4 decimals):\", truncatedValue);\n\n swapTokens(\n coin1.address,\n coin2.address,\n truncatedValue,\n props.network.router,\n props.network.account,\n props.network.signer,\n props.network.factory,\n slippageValue\n )\n .then(() => {\n setLoading(false);\n setField1Value(\"\");\n enqueueSnackbar(\"Transaction Successful\", { variant: \"success\" });\n })\n .catch((e) => {\n setLoading(false);\n enqueueSnackbar(\"Transaction Failed (\" + e.message + \")\", {\n variant: \"error\",\n autoHideDuration: 40000,\n });\n });\n };\n\n useEffect(() => {\n console.log(\n \"Trying to get Reserves between:\\n\" + coin1.address + \"\\n\" + coin2.address\n );\n\n if (coin1.address && coin2.address) {\n getReserves(\n coin1.address,\n coin2.address,\n props.network.factory,\n props.network.signer,\n props.network.account,\n props.network.router\n ).then((data) => setReserves(data));\n }\n }, [\n coin1.address,\n coin2.address,\n props.network.account,\n props.network.factory,\n props.network.router,\n props.network.signer,\n ]);\n\n useEffect(() => {\n if (isNaN(parseFloat(field1Value))) {\n setField2Value(\"\");\n } else if (parseFloat(field1Value) && coin1.address && coin2.address) {\n getAmountOut(\n coin1.address,\n coin2.address,\n field1Value,\n props.network.router,\n props.network.signer\n )\n .then((amount) => setField2Value(amount.toString()))\n .catch((e) => {\n console.log(e);\n setField2Value(\"NA\");\n });\n } else {\n setField2Value(\"\");\n }\n }, [field1Value, coin1.address, coin2.address]);\n\n useEffect(() => {\n const coinTimeout = setTimeout(() => {\n console.log(\"props: \", props);\n console.log(\"Checking balances...\");\n\n if (coin1.address && coin2.address) {\n getReserves(\n coin1.address,\n coin2.address,\n props.network.factory,\n props.network.signer,\n props.network.account,\n props.network.router\n ).then((data) => setReserves(data));\n }\n\n if (coin1.address && props.network.account && !wrongNetworkOpen) {\n getBalanceAndSymbol(\n props.network.account,\n coin1.address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin1({\n ...coin1,\n balance: formatToFourDecimals(data.balance),\n });\n });\n }\n if (coin2.address && props.network.account && !wrongNetworkOpen) {\n console.log(\"setting coin2\");\n getBalanceAndSymbol(\n props.network.account,\n coin2.address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then(async (data) => {\n setCoin2({\n ...coin2,\n balance: formatToFourDecimals(data.balance),\n });\n });\n }\n }, 12000);\n\n return () => clearTimeout(coinTimeout);\n });\n\n React.useEffect(() => {\n if (isTokenSafe === true) {\n setIsTokenSafe(true); // Token is safe\n } else if (isTokenSafe === false) {\n setIsTokenSafe(false); // Token is not safe\n } else {\n setIsTokenSafe(null); // Default to null if no value\n }\n }, [isTokenSafe]);\n\n return (\n
    \n \n \n \n\n
    \n \n\n
    \n {showSlippageDiv && slippageDiv}\n\n Swap Coins\n

    Coins

    \n
    \n setDialog1Open(true)}\n onChange={handleChange.field1}\n symbol={coin1.symbol !== undefined ? coin1.symbol : \"Select\"}\n // //////// MODIFICATION///////////\n showMaxButton={true}\n onMaxClick={handleMaxClick}\n />\n
    \n
    \n \"Switch\"\n
    \n \n
    \n setDialog2Open(true)}\n symbol={coin2.symbol !== undefined ? coin2.symbol : \"Select\"}\n // ////////MODIFICATION/////////\n showMaxButton={false}\n />\n
    \n

    Slippage : {slippageValue} %

    \n\n

    \n {isTokenSafe === null\n ? null\n : isTokenSafe\n ? \"Token is safe. Note: The creator could still hold a lot of tokens\"\n : \"This token may or may not be safe; DYOR\"}\n

    \n
    \n\n
    \n Details\n

    Your Balances

    \n
    \n
    \n

    \n {formatBalance(coin1.balance, coin1.symbol)}\n

    \n \"Gold\n
    \n
    \n

    \n {formatBalance(coin2.balance, coin2.symbol)}\n

    \n \"Gold\n
    \n
    \n\n

    Liquidity

    \n
    \n
    \n

    \n {formatReserve(reserves[0])}\n

    \n \"Gold\n
    \n
    \n

    \n {formatReserve(reserves[1])}\n

    \n \"Gold\n
    \n
    \n
    \n
    \n\n \n
    Swap
    \n \"swap\"\n \n
    \n );\n}\n\nexport default CoinSwapper;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAbCAYAAAD/G5bjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOOSURBVHgBvZdbaBRXGMe/75zZ1aQkpVQothZKEVrozRIQl3Qyk50WSdvQSov6pCgi3lBQHxQRV7w86IP4IAr64gUR8YpgiO7uZN3EFR98iPig+BD0QRAxGmJ2s5k5n9+s2agxmrObjD8Y5ly+c+Z/vvOdyyCEhGnOnS4M74byjDnZbPsjqAIB4WJIwz8fi8VmQhWELQ4I6GsjWrPXNJsdqBCsxNiynD9AUIuWMWEd9/7nyIcIcvw61NGRSoImWuJs2/nXB5omAS1CiEO1KEgqoY5lXTelY/5Bceyp2LDVLn6+g0mACLL+kNrR1eXeGc/WGKuwsbGxDqPRbzl5BiYZBPrFiMrVnFw1nu2YC8Iwpn4vQVyGMEDIZtzkuMIC3hE3O2bO5dILEAI8pbszbnq5rv1b02pZ8ZWAuHJMS0UbEVUWNPGF+FIQni/nkWhbbc2U0zptW1pa6vP5fP2IONOOL+MulrDbPx8u8tiDC8v1tVOn3Glra+sDTfiE8MHwXgkd8jbV1dVe1Gnf0NAQeTE4OEug2DMiDkH8wMP7ajjbQ4AHrqWSOZggHDe7evt62zs7M1oD+6T+s3ns5X0cBA9LMfebFW8VQN+URBI95Ng4d81NnoQJoFR/PyKeLBYLx7u7ux/rtOHZW4GktvOGfRNI/V/a5yy7uQ1Q/MxK7/uBsI7UfvjI8J66lZD+4QFND8TxSTLPsG17BgW1RH0cIcezHekjOp0FQTtQGEwUC/ktuVwuDxOgyY5v4rj6G6EkLMcCDwflvKDkWUQ5kys26wpzHOeLgUJxAwfBAs7WwASwmp31/O35nJwR5Nl7D1w32R6kSwtCoFqQdtO3dDpjT08r+tQqEJdBFQTtAeSscp5nbcMbh2gPe667nDGQ/P+eRKK9Oh0HHit6aqkQuKZcFonU/Gia8f73NorwM/Q6q5RqRgnrR5txvPd4BAd59k6Uy7SvTIlEQrhuZh0IsRFCgBfi4s5R1ymp29hTdERIuQhCQCK18rHWNbrc0GncZDun2MWzIQSGBuWvtZ/K52PVaYkTIHf6qphgz8VgEuCB3iYB24P09etXHn/ATg/b/n0OIixVQH9BlfDHLvG2cZUj7JmrcRuu9B/CZIHLR13Vj/KjtQkrUGm+oneBJhWJC7AcJ4Y+rGWBTUG+WBj4iU+IpxACFf8aZlKpnCdhG++edyFkqvpv7Uyl7pGSi4PzGELkJaurPk8Os2NKAAAAAElFTkSuQmCC\"","import React, { useState } from \"react\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport {lock, claimRewardsLOCK, getStatsLOCK, getStakerInfoLOCK} from \"../ethereumFunctions\"\n\nfunction CoinLocker(props) {\n const [pairAddress, setPairAddress] = useState(\"\");\n const [lockedAmount, setLockedAmount] = useState(\"\");\n\n const handleLock = async () => {\n await lock(pairAddress, lockedAmount, props.network.router, props.network.signer);\n };\n\n return (\n
    \n
    \n
    \n Lock\n\n

    Pair Address:

    \n
    \n setPairAddress(e.target.value)}\n />\n
    \n\n

    Lock Amount:

    \n
    \n setLockedAmount(e.target.value)}\n />\n \"Gold\n
    \n
    \n
    \n\n \n
    \n );\n}\n\nexport default CoinLocker;","export default \"data:image/png;base64,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\"","import React, { useState, useEffect } from \"react\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport remover from \"../assets/images/Remove.png\";\nimport {\n getBalanceAndSymbol,\n getStatsLOCK,\n claimRewardsLOCK,\n} from \"../ethereumFunctions\";\nimport CoinDialog from \"../CoinSwapper/CoinDialog\";\n\n\nfunction RewardsLocker(props) {\n const [userRewards, setUserRewards] = useState(0);\n const [allTimeRewards, setAllTimeRewards] = useState(0);\n const [totalRewards, setTotalRewards] = useState(0);\n\n // State for CoinDialog\n const [dialogOpen, setDialogOpen] = useState(false);\n const [selectedToken, setSelectedToken] = useState(null);\n\n useEffect(() => {\n if (selectedToken) {\n console.log(\"selectedToken updated: \", selectedToken);\n\n const fetchRewards = async () => {\n console.log(\"Signer:: \", props.network.signer);\n console.log(\"Account:: \", props.network.account);\n try {\n await fetchR();\n } catch (error) {\n console.error(\"Error fetching rewards:\", error);\n }\n };\n\n fetchRewards();\n const fetchInterval = setInterval(fetchRewards, 6000);\n return () => clearInterval(fetchInterval);\n }\n }, [selectedToken]);\n\n async function fetchR() {\n try {\n console.log(\"selectedtoken is:\", selectedToken);\n const stats = await getStatsLOCK(\n selectedToken.address,\n props.network.router,\n props.network.signer\n );\n setUserRewards(stats[0]);\n setAllTimeRewards(stats[1]);\n setTotalRewards(stats[2]);\n } catch (error) {\n console.error(\"Error fetching rewards:\", error);\n }\n }\n\n async function handleClaim() {\n await claimRewardsLOCK(\n selectedToken.address,\n props.network.signer,\n );\n const stats = await getStatsLOCK(\n selectedToken.address,\n props.network.router,\n props.network.signer\n );\n setUserRewards(stats[0]);\n setAllTimeRewards(stats[1]);\n setTotalRewards(stats[2]);\n }\n\n const handleOpenDialog = () => {\n setDialogOpen(true);\n };\n\n const handleCloseDialog = async (address) => {\n setDialogOpen(false);\n\n if (address && props.network.signer) {\n try {\n console.log(\"closing dialog with addr\", address);\n const data = await getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n );\n if (data != null) {\n console.log(\"setting selected token\");\n setSelectedToken({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n }\n } catch (err) {\n console.log(\"handleCLoseERR: \", err);\n }\n }\n };\n\n return (\n
    \n \n
    \n
    \n Your rewards (USD)\n
    \n

    {userRewards}

    \n \"Gold\n
    \n {selectedToken && (\n
    \n

    {selectedToken.symbol}

    \n
    \n )}\n \n\n \n
    \n
    \n All time rewards\n
    \n

    {allTimeRewards}

    \n \"Gold\n
    \n
    \n
    \n
    \n );\n}\n\nexport default RewardsLocker;\n","export default __webpack_public_path__ + \"static/media/lightning.62513983.png\";","export default __webpack_public_path__ + \"static/media/open-locker.cc15ab80.png\";","import React, { useState, useEffect } from \"react\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport lightningIcon from \"../assets/images/lightning.png\";\nimport openPadlock from \"../assets/images/open-locker.png\"\nimport { stake, unstake, getStakerInfoSTAKE } from \"../ethereumFunctions\"\n\nfunction Stake(props) {\n const [stakedAmount, setStakedAmount] = useState(\"\");\n const [amount, setAmount] = useState(\"\");\n const [lockDuration, setLockDuration] = useState(\"21 days\");\n const [timeLeft, setTimeLeft] = useState(\"\");\n\n useEffect(() => {\n const fetchStakerInfo = async () => {\n try {\n const { amount, timeLeftFormatted, currentShare } = await getStakerInfoSTAKE(props.network.signer);\n setStakedAmount(amount.toString());\n setTimeLeft(timeLeftFormatted.toString());\n } catch (error) {\n console.error(\"Error fetching staker info:\", error);\n }\n };\n\n if (props.network.signer) {\n fetchStakerInfo();\n }\n }, [props.network.signer]);\n\n const handleStake = async () => {\n await stake(amount, props.network.router, props.network.signer);\n };\n\n const handleUnstake = async () => {\n await unstake(amount, props.network.signer);\n };\n\n return (\n
    \n
    \n
    \n Stake\n

    Staked amount:\n \n {stakedAmount}\n \n

    \n\n

    \n Lock time: \n \n {lockDuration}\n \n

    \n \n

    \n Time left: \n \n {timeLeft}\n \n

    \n\n

    Amount:

    \n
    \n setAmount(e.target.value)}\n />\n \"Gold\n
    \n
    \n
    \n\n \n \n
    \n );\n}\n\nexport default Stake;","import React, { useState, useEffect } from \"react\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport lightningIcon from \"../assets/images/lightning.png\";\nimport { boostIt, checkAvailable } from \"../ethereumFunctions\"\n\nfunction StakeBoost(props) {\n const [cost, setCost] = useState(\"$99\");\n const [spotAvailable, setSpotAvailable] = useState(\"\");\n const [pairAddress, setPairAddress] = useState(\"\");\n\n useEffect(() => {\n const fetchSpotAvailability = async () => {\n try {\n if (props.network.signer) {\n const isAvailable = await checkAvailable(props.network.signer);\n setSpotAvailable(isAvailable ? \"Yes\" : \"No\");\n }\n } catch (error) {\n console.error(\"Error checking spot availability:\", error);\n setSpotAvailable(\"Error\");\n }\n };\n\n fetchSpotAvailability();\n }, [props.network.signer]);\n\n const handleBoost = async () => {\n await boostIt(pairAddress, props.network.router, props.network.signer)\n };\n\n return (\n
    \n
    \n
    \n Boost \n

    \n Is spot available: \n \n {spotAvailable}\n \n

    \n

    \n Cost: \n \n {cost}\n \n

    \n

    Pair Address:

    \n
    \n setPairAddress(e.target.value)}\n />\n
    \n
    \n
    \n\n \n
    \n );\n}\n\nexport default StakeBoost;","import React, { useState, useEffect } from \"react\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport remover from \"../assets/images/Remove.png\";\nimport { getBalanceAndSymbol, getStatsSTAKE, claimRewardsSTAKE } from \"../ethereumFunctions\";\n\nfunction RewardsStake(props) {\n const hardcodedAddress = \"0xfdd05552F1377aA488AFed744c8024358AF02041\"; // Hardcoded address\n\n const [userRewards, setUserRewards] = useState(0);\n const [allTimeRewards, setAllTimeRewards] = useState(0);\n const [totalRewards, setTotalRewards] = useState(0);\n const [tokenData, setTokenData] = useState(null); // Store token symbol and balance here\n\n useEffect(() => {\n const fetchRewards = async () => {\n console.log(\"Signer:: \", props.network.signer);\n console.log(\"Account:: \", props.network.account);\n try {\n await fetchR();\n } catch (error) {\n console.error(\"Error fetching rewards:\", error);\n }\n };\n\n fetchRewards();\n const fetchInterval = setInterval(fetchRewards, 6000);\n return () => clearInterval(fetchInterval);\n }, []);\n\n useEffect(() => {\n const fetchTokenData = async () => {\n if (props.network.account && props.network.signer) {\n try {\n const data = await getBalanceAndSymbol(\n props.network.account,\n hardcodedAddress,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n );\n if (data != null) {\n setTokenData({\n address: hardcodedAddress,\n symbol: data.symbol,\n balance: data.balance,\n });\n }\n } catch (err) {\n console.log(\"Error fetching token data: \", err);\n }\n }\n };\n\n fetchTokenData();\n }, [props.network]);\n\n async function fetchR() {\n try {\n const stats = await getStatsSTAKE(\n props.network.router,\n props.network.signer\n );\n setUserRewards(stats[0]);\n setAllTimeRewards(stats[1]);\n setTotalRewards(stats[2]);\n } catch (error) {\n console.error(\"Error fetching rewards:\", error);\n }\n }\n\n async function handleClaim() {\n await claimRewardsSTAKE(props.network.signer);\n const stats = await getStatsSTAKE(props.network.router, props.network.signer);\n setUserRewards(stats[0]);\n setAllTimeRewards(stats[1]);\n setTotalRewards(stats[2]);\n }\n\n return (\n
    \n
    \n
    \n Your rewards (USD)\n
    \n

    {userRewards}

    \n \"Gold\n
    \n {tokenData && (\n
    \n
    \n )}\n\n \n
    \n
    \n All time rewards\n
    \n

    {allTimeRewards}

    \n \"Gold\n
    \n
    \n
    \n Current Pool\n
    \n

    {totalRewards}

    \n \"Gold\n
    \n
    \n
    \n
    \n );\n}\n\nexport default RewardsStake;\n","import React, { useState, useEffect } from \"react\"; // Added useEffect to the import statement\nimport { ButtonGroup, Button } from \"@material-ui/core\";\n\n\nexport function SwitchButton(props) {\n const { setDeploy } = props;\n const [selectedButton, setSelectedButton] = useState(\"add-button\");\n\n const changeStyles = (id) => {\n const buttons = document.querySelectorAll(\".liqbuttons\");\n buttons.forEach((button) => {\n if (button.id === id) {\n button.setAttribute(\"aria-selected\", \"true\");\n } else {\n button.removeAttribute(\"aria-selected\");\n }\n });\n };\n\n // Set initial state of aria-selected for \"Add Liquidity\" button\n useEffect(() => { // Changed React.useEffect to useEffect\n const addLiquidityButton = document.getElementById(\"add-button\");\n if (addLiquidityButton) {\n addLiquidityButton.setAttribute(\"aria-selected\", \"true\");\n }\n }, []);\n\n return (\n
    \n \n {\n setDeploy(true);\n setSelectedButton(\"add-button\");\n changeStyles(\"add-button\");\n }}\n >\n Add Liquidity\n \n\n {\n setDeploy(false);\n setSelectedButton(\"remove-button\");\n changeStyles(\"remove-button\");\n }}\n >\n Remove Liquidity\n \n \n
    \n );\n}\n\nexport default SwitchButton","import { Contract, ethers } from \"ethers\";\nimport { fetchReserves, getDecimals } from \"../ethereumFunctions\";\nimport \"../assets/styles.css\";\nconst ERC20 = require(\"../build/ERC20.json\");\nconst PAIR = require(\"../build/IUniswapV2Pair.json\");\n\n /* global BigInt */\n\nexport async function addLiquidity(\n address1,\n address2,\n amount1,\n amount2,\n amount1min,\n amount2min,\n routerContract,\n account,\n signer\n) {\n account = await signer.getAddress();\n const token1 = new Contract(address1, ERC20.abi, signer);\n const token2 = new Contract(address2, ERC20.abi, signer);\n\n const token1Decimals = await getDecimals(token1);\n const token2Decimals = await getDecimals(token2);\n\n const amountIn1 = ethers.utils.parseUnits(amount1, token1Decimals);\n const amountIn2 = ethers.utils.parseUnits(amount2, token2Decimals);\n\n const amount1Min = ethers.utils.parseUnits(amount1min, token1Decimals);\n const amount2Min = ethers.utils.parseUnits(amount2min, token2Decimals);\n\n const time = Math.floor(Date.now() / 1000) + 200000;\n const deadline = ethers.BigNumber.from(time);\n\n const wethAddress = await routerContract.WETH();\n\n if (address1 === wethAddress) {\n const allowance2 = await token2.allowance(account, routerContract.address);\n\n if (allowance2 < amountIn2) {\n let tx = await token2.approve(routerContract.address, BigInt(amountIn2));\n await tx.wait();\n }\n\n await routerContract.addLiquidityETH(\n address2,\n BigInt(amountIn2),\n BigInt(amount2Min),\n BigInt(amount1Min),\n deadline,\n { value: BigInt(amountIn1) }\n );\n } else if (address2 === wethAddress) {\n const allowance1 = await token1.allowance(account, routerContract.address);\n\n if (allowance1 < amountIn1) {\n let tx = await token1.approve(routerContract.address, BigInt(amountIn1));\n await tx.wait();\n }\n\n await routerContract.addLiquidityETH(\n address1,\n BigInt(amountIn1),\n BigInt(amount1Min),\n BigInt(amount2Min),\n deadline,\n { value: BigInt(amountIn2) }\n );\n }\n}\n\nexport async function removeLiquidity(\n address1,\n address2,\n liquidity_tokens,\n amount1min,\n amount2min,\n routerContract,\n account,\n signer,\n factory\n) {\n account = await signer.getAddress();\n const token1 = new Contract(address1, ERC20.abi, signer);\n const token2 = new Contract(address2, ERC20.abi, signer);\n\n const token1Decimals = await getDecimals(token1);\n const token2Decimals = await getDecimals(token2);\n\n const Getliquidity = (liquidity_tokens) => {\n if (liquidity_tokens < 0.001) {\n return ethers.BigNumber.from(liquidity_tokens * 10 ** 18);\n }\n return ethers.utils.parseUnits(String(liquidity_tokens), 18);\n };\n\n const liquidity = Getliquidity(liquidity_tokens);\n console.log(\"liquidity: \", liquidity);\n\n const amount1Min = ethers.utils.parseUnits(\n String(amount1min),\n token1Decimals\n );\n const amount2Min = ethers.utils.parseUnits(\n String(amount2min),\n token2Decimals\n );\n\n const time = Math.floor(Date.now() / 1000) + 200000;\n const deadline = ethers.BigNumber.from(time);\n\n const wethAddress = await routerContract.WETH();\n const pairAddress = await factory.getPair(address1, address2);\n const pair = new Contract(pairAddress, PAIR.abi, signer);\n\n const allowance = await pair.allowance(account, routerContract.address);\n\n if (Number(allowance) < Number(liquidity)) {\n let tx = await pair.approve(routerContract.address, BigInt(liquidity));\n await tx.wait();\n }\n\n if (address1 === wethAddress) {\n await routerContract.removeLiquidityETHSupportingFeeOnTransferTokens(\n address2,\n BigInt(liquidity),\n BigInt(amount2Min),\n BigInt(amount1Min),\n deadline\n );\n } else if (address2 === wethAddress) {\n await routerContract.removeLiquidityETHSupportingFeeOnTransferTokens(\n address1,\n BigInt(liquidity),\n BigInt(amount1Min),\n BigInt(amount2Min),\n deadline\n );\n }\n}\nconst quote = (amount1, reserve1, reserve2) => {\n const amount2 = amount1 * (reserve2 / reserve1);\n return [amount2];\n};\nasync function quoteMintLiquidity(\n address1,\n address2,\n amountA,\n amountB,\n factory,\n signer\n) {\n const MINIMUM_LIQUIDITY = 1000;\n let _reserveA = 0;\n let _reserveB = 0;\n let totalSupply = 0;\n [_reserveA, _reserveB, totalSupply] = await factory\n .getPair(address1, address2)\n .then(async (pairAddress) => {\n if (pairAddress !== \"0x0000000000000000000000000000000000000000\") {\n const pair = new Contract(pairAddress, PAIR.abi, signer);\n\n const reservesRaw = await fetchReserves(\n address1,\n address2,\n pair,\n signer\n ); // Returns the reserves already formated as ethers\n const reserveA = reservesRaw[0];\n const reserveB = reservesRaw[1];\n\n const _totalSupply = await pair.totalSupply();\n const totalSupply = Number(ethers.utils.formatEther(_totalSupply));\n return [reserveA, reserveB, totalSupply];\n } else {\n return [0, 0, 0];\n }\n });\n\n const token1 = new Contract(address1, ERC20.abi, signer);\n const token2 = new Contract(address2, ERC20.abi, signer);\n\n // Need to do all this decimals work to account for 0 decimal numbers\n\n const token1Decimals = await getDecimals(token1);\n const token2Decimals = await getDecimals(token2);\n\n const valueA = amountA * 10 ** token1Decimals;\n const valueB = amountB * 10 ** token2Decimals;\n\n const reserveA = _reserveA * 10 ** token1Decimals;\n const reserveB = _reserveB * 10 ** token2Decimals;\n\n if (totalSupply == 0) {\n return Math.sqrt(valueA * valueB - MINIMUM_LIQUIDITY) * 10 ** -18;\n }\n\n return Math.min(\n (valueA * totalSupply) / reserveA,\n (valueB * totalSupply) / reserveB\n );\n}\n\nexport async function quoteAddLiquidity(\n address1,\n address2,\n amountADesired,\n amountBDesired,\n factory,\n signer\n) {\n const pairAddress = await factory.getPair(address1, address2);\n const pair = new Contract(pairAddress, PAIR.abi, signer);\n\n const reservesRaw = await fetchReserves(address1, address2, pair, signer); // Returns the reserves already formated as ethers\n const reserveA = reservesRaw[0];\n const reserveB = reservesRaw[1];\n\n if (reserveA === 0 && reserveB === 0) {\n const amountOut = await quoteMintLiquidity(\n address1,\n address2,\n amountADesired,\n amountBDesired,\n factory,\n signer\n );\n return [amountADesired, amountBDesired, amountOut.toPrecision(8)];\n } else {\n const amountBOptimal = quote(amountADesired, reserveA, reserveB);\n if (amountBOptimal <= amountBDesired) {\n const amountOut = await quoteMintLiquidity(\n address1,\n address2,\n amountADesired,\n amountBOptimal,\n factory,\n signer\n );\n return [amountADesired, amountBOptimal, amountOut.toPrecision(8)];\n } else {\n const amountAOptimal = quote(amountBDesired, reserveB, reserveA);\n const amountOut = await quoteMintLiquidity(\n address1,\n address2,\n amountAOptimal,\n amountBDesired,\n factory,\n signer\n );\n return [amountAOptimal, amountBDesired, amountOut.toPrecision(8)];\n }\n }\n}\n\nexport async function quoteRemoveLiquidity(\n address1,\n address2,\n liquidity,\n factory,\n signer\n) {\n const pairAddress = await factory.getPair(address1, address2);\n console.log(\"pair address\", pairAddress);\n const pair = new Contract(pairAddress, PAIR.abi, signer);\n\n const reservesRaw = await fetchReserves(address1, address2, pair, signer); // Returns the reserves already formated as ethers\n const reserveA = reservesRaw[0];\n const reserveB = reservesRaw[1];\n\n /*\n const feeOn =\n (await factory.feeTo()) !== 0x0000000000000000000000000000000000000000;\n */\n\n //const _kLast = await pair.kLast();\n //const kLast = Number(ethers.utils.formatEther(_kLast));\n\n const _totalSupply = await pair.totalSupply();\n let totalSupply = Number(ethers.utils.formatEther(_totalSupply));\n\n /*\n if (feeOn && kLast > 0) {\n const feeLiquidity =\n (totalSupply * (Math.sqrt(reserveA * reserveB) - Math.sqrt(kLast))) /\n (5 * Math.sqrt(reserveA * reserveB) + Math.sqrt(kLast));\n totalSupply = totalSupply + feeLiquidity;\n }\n*/\n\n const Aout = (reserveA * liquidity) / totalSupply;\n const Bout = (reserveB * liquidity) / totalSupply;\n\n return [liquidity, Aout, Bout];\n}\n\n//================== LAUNCHER ===================\n\nexport async function launch(\n address1,\n address2,\n amount1,\n amount2,\n amount1min,\n amount2min,\n routerContract,\n account,\n signer,\n buyLpFee,\n sellLpFee,\n buyCreatorFee,\n sellCreatorFee,\n protocolAddress\n) {\n account = await signer.getAddress();\n const token1 = new Contract(address1, ERC20.abi, signer);\n const token2 = new Contract(address2, ERC20.abi, signer);\n\n const token1Decimals = await getDecimals(token1);\n const token2Decimals = await getDecimals(token2);\n\n const amountIn1 = ethers.utils.parseUnits(amount1, token1Decimals);\n const amountIn2 = ethers.utils.parseUnits(amount2, token2Decimals);\n\n const amount1Min = ethers.utils.parseUnits(amount1min, token1Decimals);\n const amount2Min = ethers.utils.parseUnits(amount2min, token2Decimals);\n\n //const time = Math.floor(Date.now() / 1000) + 200000;\n //const deadline = ethers.BigNumber.from(time);\n\n const wethAddress = await routerContract.WETH();\n\n if (address1 === wethAddress) {\n const allowance2 = await token2.allowance(account, routerContract.address);\n\n if (allowance2 < amountIn2) {\n let tx = await token2.approve(routerContract.address, amountIn2);\n await tx.wait();\n }\n\n await routerContract.launch(\n address2,\n amountIn2,\n amount2Min,\n amount1Min,\n buyLpFee,\n sellLpFee,\n buyCreatorFee,\n sellCreatorFee,\n protocolAddress,\n { value: amountIn1 }\n );\n } else if (address2 === wethAddress) {\n const allowance1 = await token1.allowance(account, routerContract.address);\n\n if (allowance1 < amountIn1) {\n let tx = await token1.approve(routerContract.address, amountIn1);\n await tx.wait();\n }\n\n await routerContract.launch(\n address1,\n amountIn1,\n amount1Min,\n amount2Min,\n buyLpFee,\n sellLpFee,\n buyCreatorFee,\n sellCreatorFee,\n protocolAddress,\n { value: amountIn2 }\n );\n }\n}\n\nexport async function setMeta(\n address1,\n address2,\n websiteUrl,\n Description,\n Image,\n Chat,\n InputSocialUrl,\n factory,\n signer\n) {\n const pairAddress = await factory.getPair(address1, address2);\n const pair = new Contract(pairAddress, PAIR.abi, signer);\n\n await pair.setMetadata(websiteUrl, Image, Description, Chat, InputSocialUrl);\n}\n","import React from \"react\";\nimport { Button, CircularProgress, makeStyles } from \"@material-ui/core\";\nimport green from \"@material-ui/core/colors/green\";\nimport red from \"@material-ui/core/colors/red\";\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: 0,\n position: \"relative\",\n },\n progress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function LoadingButton(props) {\n const classes = useStyles();\n const { children, loading, valid, success, fail, onClick, ...other } = props;\n return (\n
    \n \n {children}\n \n {loading && }\n
    \n );\n}\n","import React, { useEffect } from \"react\";\nimport { Grid, makeStyles, Paper, Typography } from \"@material-ui/core\";\nimport AccountBalanceIcon from \"@material-ui/icons/AccountBalance\";\nimport { useSnackbar } from \"notistack\";\nimport { getBalanceAndSymbol, getReserves } from \"../ethereumFunctions\";\n\nimport { addLiquidity, quoteAddLiquidity } from \"./LiquidityFunctions\";\n\nimport CoinField from \"../CoinSwapper/CoinField\";\nimport CoinDialog from \"../CoinSwapper/CoinDialog\";\nimport LoadingButton from \"../Components/LoadingButton\";\nimport WrongNetwork from \"../Components/wrongNetwork\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport deployer from \"../assets/images/deploy.png\";\nimport question from \"../assets/images/interrogation.png\";\nconst styles = (theme) => ({\n paperContainer: {\n width: \"40%\",\n overflow: \"wrap\",\n marginTop: \"25px\",\n },\n fullWidth: {\n width: \"95%\",\n },\n values: {\n width: \"50%\",\n },\n\n hr: {\n width: \"100%\",\n },\n});\n\nconst useStyles = makeStyles(styles);\n\nfunction LiquidityDeployer(props) {\n const classes = useStyles();\n const { enqueueSnackbar } = useSnackbar();\n\n // Stores a record of whether their respective dialog window is open\n const [dialog1Open, setDialog1Open] = React.useState(false);\n const [dialog2Open, setDialog2Open] = React.useState(false);\n const [wrongNetworkOpen, setwrongNetworkOpen] = React.useState(false);\n\n // Stores data about their respective coin\n const [coin1, setCoin1] = React.useState({\n address: undefined,\n symbol: undefined,\n balance: undefined,\n });\n const [coin2, setCoin2] = React.useState({\n address: undefined,\n symbol: undefined,\n balance: undefined,\n });\n\n // Stores the current reserves in the liquidity pool between coin1 and coin2\n const [reserves, setReserves] = React.useState([\"0.0\", \"0.0\"]);\n\n // Stores the current value of their respective text box\n const [field1Value, setField1Value] = React.useState(\"\");\n const [field2Value, setField2Value] = React.useState(\"\");\n\n // Controls the loading button\n const [loading, setLoading] = React.useState(false);\n\n // Stores the user's balance of liquidity tokens for the current pair\n const [liquidityTokens, setLiquidityTokens] = React.useState(\"\");\n\n // Used when getting a quote of liquidity\n const [liquidityOut, setLiquidityOut] = React.useState([0, 0, 0]);\n\n // Switches the top and bottom coins, this is called when users hit the swap button or select the opposite\n // token in the dialog (e.g. if coin1 is TokenA and the user selects TokenB when choosing coin2)\n const switchFields = () => {\n let oldField1Value = field1Value;\n let oldField2Value = field2Value;\n\n setCoin1(coin2);\n setCoin2(coin1);\n setField1Value(oldField2Value);\n setField2Value(oldField1Value);\n setReserves(reserves.reverse());\n };\n\n // These functions take an HTML event, pull the data out and puts it into a state variable.\n const handleChange = {\n field1: (e) => {\n setField1Value(e.target.value);\n },\n field2: (e) => {\n setField2Value(e.target.value);\n },\n };\n\n // Turns the account's balance into something nice and readable\n const formatBalance = (balance, symbol) => {\n if (balance && symbol)\n return parseFloat(balance).toPrecision(8) + \" \" + symbol;\n else return \"0.0\";\n };\n\n // Turns the coin's reserves into something nice and readable\n const formatReserve = (reserve, symbol) => {\n if (reserve && symbol) return reserve + \" \" + symbol;\n else return \"0.0\";\n };\n\n // Determines whether the button should be enabled or not\n const isButtonEnabled = () => {\n // If both coins have been selected, and a valid float has been entered for both, which are less than the user's balances, then return true\n const parsedInput1 = parseFloat(field1Value);\n const parsedInput2 = parseFloat(field2Value);\n return (\n coin1.address &&\n coin2.address &&\n parsedInput1 !== NaN &&\n 0 < parsedInput1 &&\n parsedInput2 !== NaN &&\n 0 < parsedInput2 &&\n parsedInput1 <= coin1.balance &&\n parsedInput2 <= coin2.balance\n );\n };\n\n const deploy = () => {\n console.log(\"Attempting to deploy liquidity...\");\n setLoading(true);\n\n addLiquidity(\n coin1.address,\n coin2.address,\n field1Value,\n field2Value,\n \"0\",\n \"0\",\n props.network.router,\n props.network.account,\n props.network.signer\n )\n .then(() => {\n setLoading(false);\n\n // If the transaction was successful, we clear to input to make sure the user doesn't accidental redo the transfer\n setField1Value(\"\");\n setField2Value(\"\");\n enqueueSnackbar(\"Deployment Successful\", { variant: \"success\" });\n })\n .catch((e) => {\n setLoading(false);\n enqueueSnackbar(\"Deployment Failed (\" + e.message + \")\", {\n variant: \"error\",\n autoHideDuration: 10000,\n });\n });\n };\n\n // Called when the dialog window for coin1 exits\n const onToken1Selected = (address) => {\n // Close the dialog window\n setDialog1Open(false);\n\n // If the user inputs the same token, we want to switch the data in the fields\n if (address === coin2.address) {\n switchFields();\n }\n // We only update the values if the user provides a token\n else if (address) {\n // Getting some token data is async, so we need to wait for the data to return, hence the promise\n getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin1({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n });\n }\n };\n\n // Called when the dialog window for coin2 exits\n const onToken2Selected = (address) => {\n // Close the dialog window\n setDialog2Open(false);\n\n // If the user inputs the same token, we want to switch the data in the fields\n if (address === coin1.address) {\n switchFields();\n }\n // We only update the values if the user provides a token\n else if (address) {\n // Getting some token data is async, so we need to wait for the data to return, hence the promise\n getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin2({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n });\n }\n };\n\n // This hook is called when either of the state variables `coin1.address` or `coin2.address` change.\n // This means that when the user selects a different coin to convert between, or the coins are swapped,\n // the new reserves will be calculated.\n useEffect(() => {\n console.log(\n \"Trying to get reserves between:\\n\" + coin1.address + \"\\n\" + coin2.address\n );\n\n if (coin1.address && coin2.address && props.network.account) {\n getReserves(\n coin1.address,\n coin2.address,\n props.network.factory,\n props.network.signer,\n props.network.account\n ).then((data) => {\n setReserves([data[0], data[1]]);\n setLiquidityTokens(data[2]);\n });\n }\n }, [\n coin1.address,\n coin2.address,\n props.network.account,\n props.network.factory,\n props.network.signer,\n ]);\n\n // This hook is called when either of the state variables `field1Value`, `field2Value`, `coin1.address` or `coin2.address` change.\n // It will give a preview of the liquidity deployment.\n useEffect(() => {\n if (isButtonEnabled()) {\n console.log(\"Trying to preview the liquidity deployment\");\n\n quoteAddLiquidity(\n coin1.address,\n coin2.address,\n field1Value,\n field2Value,\n props.network.factory,\n props.network.signer\n ).then((data) => {\n // console.log(data);\n console.log(\"TokenA in: \", data[0]);\n console.log(\"TokenB in: \", data[1]);\n console.log(\"Liquidity out: \", data[2]);\n setLiquidityOut([data[0], data[1], data[2]]);\n });\n }\n }, [\n coin1.address,\n coin2.address,\n field1Value,\n field2Value,\n props.network.factory,\n props.network.signer,\n ]);\n\n // This hook creates a timeout that will run every ~10 seconds, it's role is to check if the user's balance has\n // updated has changed. This allows them to see when a transaction completes by looking at the balance output.\n useEffect(() => {\n const coinTimeout = setTimeout(() => {\n console.log(\"Checking balances & Getting reserves...\");\n\n if (coin1.address && coin2.address && props.network.account) {\n getReserves(\n coin1.address,\n coin2.address,\n props.network.factory,\n props.network.signer,\n props.network.account\n ).then((data) => {\n setReserves([data[0], data[1]]);\n setLiquidityTokens(data[2]);\n });\n }\n\n if (coin1.address && props.network.account && !wrongNetworkOpen) {\n getBalanceAndSymbol(\n props.network.account,\n coin1.address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin1({\n ...coin1,\n balance: data.balance,\n });\n });\n }\n if (coin2.address && props.network.account && !wrongNetworkOpen) {\n getBalanceAndSymbol(\n props.network.account,\n coin2.address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin2({\n ...coin2,\n balance: data.balance,\n });\n });\n }\n }, 10000);\n\n return () => clearTimeout(coinTimeout);\n });\n\n const [tooltipVisible, setTooltipVisible] = React.useState(false);\n\n return (\n
    \n {/* Liquidity deployer */}\n {/* Dialog Windows */}\n \n \n \n

    \n Liquidity Deployer\n

    \n
    \n
    \n setDialog1Open(true)}\n onChange={handleChange.field1}\n symbol={coin1.symbol !== undefined ? coin1.symbol : \"Select\"}\n className=\"row\"\n />\n
    \n\n
    \n setDialog2Open(true)}\n onChange={handleChange.field2}\n symbol={coin2.symbol !== undefined ? coin2.symbol : \"Select\"}\n />\n
    \n
    \n \n \n {/* Balance Display */}\n

    Your Balances

    \n
    \n
    \n

    \n {formatBalance(coin1.balance, coin1.symbol)}\n

    \n \"Gold\n
    \n
    \n

    \n {formatBalance(coin2.balance, coin2.symbol)}\n

    \n \"Gold\n
    \n
    \n\n {/* Reserves Display */}\n

    Liquidity

    \n
    \n
    \n

    \n {formatReserve(reserves[0], coin1.symbol)}\n

    \n \"Gold\n
    \n
    \n

    \n {formatReserve(reserves[1], coin2.symbol)}\n

    \n \"Gold\n
    \n
    \n\n {/* Liquidity Tokens Display */}\n
    \n
    \n {/*Red Display to show the quote */}\n {/* Tokens in */}\n

    Tokens in

    \n
    \n

    {formatBalance(liquidityOut[0], coin1.symbol)}

    \n
    \n

    {formatBalance(liquidityOut[1], coin2.symbol)}

    \n
    \n
    \n
    \n\n

    Your Liquidity Pool Tokens

    \n
    \n

    {formatReserve(liquidityTokens, \"VISTA-LP\")}

    \n
    \n\n {/* Liquidity Tokens Display */}\n
    \n\n

    Liquidity Pool Tokens Out

    \n

    {formatReserve(liquidityOut[2], \"VISTA-LP\")}

    \n
    \n \n \n Do not forget to claim rewards before
    \n adding/removing LP else they will be lost.\n

    \n \n
    Deploy
    \n \n \n \n );\n}\n\nexport default LiquidityDeployer;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMsAAAC5CAYAAACGEcv5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA8/SURBVHgB7Z3bb1zFHcfneK/22l7bcewYTAlQEpIoEoSiSuUiy1IhqKqoKoUqkaoqUluJBx76F4D6xgPigcc+NG+BItRQqVTtE1XTyhCUKqHlJiXQhMQhie+xvVdvv7+zc+zjZXfPLDr2rPd8P9Lk3MbnTM7Od+Y385uZoxQhhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhHQmjiI2cV555ZW7Y7HYgVwu11MqlRJycm1trSLbrq4uBxQzmczK5OTk54888shVHK8pYoW4ItY4duxY5t13330Muz9HOILQhxBDELFIQSbCWIJ4/n348OE3sL+IMKeIFSgWuyRTqdRDlUrlSdQYu1RVJBXfdRHMYLlc7ket8z72y4pYg2KxSwwiGcZ2SG2IpNY0ltplAKFfUSxW6VLEGr29vWmYWFlV/R0806vLFzxTTKH2YcFmGYrFIhBABjVLVh826mxhg75NoFgsglqlG5uMPmTPZJtDsVgEXcNiWiV8p+oJhiJqEygWi2ixxAKixXRcEVVCEWtQLHZJI/SYREwkEiOq2mtGLEGxbAFouDsIPQj9CH11wgDCd8fHx7+H6CMm9+zu7j6AzRP4uz367xvdV0JQbUW+BbSHQ0aEcvTo0T3JZPJh7D+IRnw/wqbMG4/H07h+T7FYPJzP5x9QG7VLvd9DesOcwcHBJfScfYb4/ykUCtNwVBa8CDhfgZlWRljZvXv3tddff/1sT0/PtJxXJDTYdx8yyKhJbA4hU59AZp2EYKTm2PSekdndoFxtVZTO1I0KLqn91+bm5nqxlZrosXqRIJ4SNrdzudx7EOcN2ZdHKRIaFEvIpFIp5NW1JATwMA736NP+TOt3OFYQT+n9ZrW8G9cnLAlrasMH0yWmF2qWEWyP4PlSU9HbHzIUS8hMT0+LAMTsGkCmlVHDksk39WJpgbi7NdtGOLV/p9slMd895TkOBJNFLSPPowkWMhRL+Egpn0bmjXu1ALZhdKRsEpRPOB7rz0KbSJHwYW9YyIyNjcVRusvARxvvlrXJFkKxhMzKyoo08AcR4mIWqW1+xzD9VCwWo2i2ANbXIZPNZqW90Ots2Enb2T0vj3XQZolt83MjAWuWkBkdHe2BGZZCrbLd79bxajIgc184NCZkKJYQkTknyKgyhKV2xuO2ARNMOhb2Y3eUnvxwoRlmgJTYs7OzffC4H4TnfQhmTleddkEX4qT7+/vvgWDE15Fudk/PShPfSVjguRWkK7W8vPwknKIrOP58fn5+FumeR3oWcLyK57n92TKIEz4hWQzjllhuigRCu9YAZLDkc8899/ji4uKvcfgQgjgA3ca0h26jOOi2FTNsFPsyV2U7329F+1oqEMcK0jaPY1ngYhVhGeEOLuVELEhfEdtbExMT51966aW/4NptDo0JhjWLGXHUKHsTicSjyFQPNovoE9F2Zz5Rivt8pLNXBlb6rtVLyxxqFlkk4wNVHRpDAqBYWkPel6kIbNTajs+s86ezXKlecPSQAlmQTIb7i/DZbjWEYjGkxkxpZ/O1Xtpifo+/NtekFuquHtIEM4FiMUQylM930myUcDvyjeWVfAM4iSGsggkxhGIhxBCKxRD0cHXSu/K8/RISep8EQLEYcPv27ZjMqVfBK7HsKGRYDjbiE2Lb1YBIvyRdokqGSepTRQSZnutfBbIrl8vtQoP4O6q6GovQtCSGh3+Tw9L/SP/fyryTOvNSWr3nJuDBd0MAbl8Fni++mEcRPsO7mFeNh+nIOXk3+Sj3nEVaLK+99lq6VCo9CSfeY2JmFQqFr/P5/I2lpaV5PXQklk6nh/r6+g7h+g+UwbJF/f396tq1a7+Bt39Bn9qUuSTTC5KhcV9Z7/j3QfeUbt6BgYEzn3zyyTtBcTOZjBoaGvoFdieC4l69erX/1KlTP0Za70a6xDFZrvNsWQxj9amnnvroyJEjf8epnIookRbLuXPnMleuXDmC/PBTHI6IQFBy5nGc11HEtpf59BmIpl+bLU3ZtWuXOnny5JmjR4/+z71BQEn89NNPB4pFapSJiYkLb7/99illAO45YRLv/PnzqampKVkrQJZZKtX5UJJUe3kUJjf27t2bgFg+kHcT1dol0mJBKRxDuA+7MkrXX2u4C0n4GsHuOZN7fouBkUY+G9SAKkTcBTCSyaSDIAVAs0GfFYhlCOGCingbN9L/+eXl5TJKbRkf1a1PuaumyGBDCaradqmozba8cc+RYQlc11zbBmoLgkZB6TUFdrt/FOE2S+R7w2BaeUNBvBJejqXGleB/P0HLFXmU0SHQSqa6YhJJBkhuAU5AqEaqEvm5MewyVHpBriq1ObIV/4N7DzSUc6itWrGZZkwimfSEbQHrH1MiEa9Z0A4I2xnniFAgGGNTxTH8+vAW1SykBSL9C2Sz2S49XD1M0YRu00vyLNUsxEdkxaJXb+zVi0t4SxY1y+i1y6ZKKOtQ8cVZS6VSoQomzKnH3i1V6+sEyAIYySgPjYlyzRKDA/FeZfbNE69XyPuchBfcNYt1ZnYbxaAI8y703A0npnHVgjTcUVWPu5vsOsFPUAHhgq5j8faPqQgP6+/IBv6tW7f6kLkGi8Viop6JBQdjbGFhITM4ODiBjD4esJK9m8Hg2S8h3hL2l2ASiWNOupcdvTSr13tWQXf0F3De7cO1WXFwNkvniRMn7kdag4a8uA+RNOsu3FxA6d41OTl5Ef/3KdSaY7XrLGvcAZTxeLwXIWMytwVi2bO6ujqJkLt582ZR1REZfDZr8imMoaEhmdPfcZ7+jhPLsWPHYi+++OLD3d3dx/GDSUmY0Jna/+NKOyUJAeyFqIb1uYZdw+LZf+GFF64hM/wJGeU9hK/wt3lkyK7e3t4U2j59PT09WWS8FJ47Mzo6eklVx5g1BXGHZdiLdoA2FI2c37dv3xPYfRTx/qUaD+h0Ll++3HPy5Ml/QNBfwhzMoJaTdpkM3ZF2T3VFC9SIcMaOXrx48fsffvjhD3Esgymb+pHefPPNkbfeeutX6Bb/EeLLIhi1NZ0UGrmxsbFrL7/88mnEmTLtvNgpdJxYDh065ExNTe1Bif04fqz71cYgyU2IgJC5u3xD7xuWrMho5QMHDlzev3//Gzg8j1D0xKdLecm83vchS/p6YEaB2NbHijVDGvcIkkFX9JTgchM/zgKuixl2WW2Iyl9reumKXbhw4QOk4S7s71L184JnWlYuXbqURhoewL3va/RsSRfudxXhn3i376sOo+PaLAcPHpTMlEUGH9cN+ES9IIvRqWoN46EaBVV1xcxhK6ZVwZ9Z9HRjGVeVQ1gW06uVElW6hJs927e+2Hp7wwlweMo6YDodKzqs+vZzXlpnZmbm5JweExeUDukQkfXS4k3eaRrm2l3Y78hvX3acWD7++GPJV9JrIzVKUKZShsg9S0H322no9pbJS3B02y8orrwfqc2SqgPpyAa+XrvLHSzonVI7nDZySjYSTKtd0TuOSDslW/Rf2MgM68+D+OVTe/xGpEUiLRYDM2y9jYCGuDSwi2r7cXsAIBZptC8rYo2oTyt2N75TzjejuM5HGcovAx5t+A7czgKIVXw8d9T2U1ub0ikZUTzTqrZbdd3noGufVYjlurI4pVZ/9z50M0x68lS1u9tzXnpzeGo/xtTIaRsZoiwWv5/EozaDCOIx/y+2Xyo7ZpiLbzJaaKDTQGpMmXx2C/e/S8/jadTr5WjHqaQhkuZ7VMXiCiWdThcQvl5dXf0CjrSbKL1r55fLEJfb8Nx/BE/9R8puAzv0zoU7d+4sQjB/w+4liEbE0u3UfFkZ15OpVGpYHJLw3osD01scPXK1TKTNsGeeeWb2+PHj70Aof5ienv4c23ztIMiBgYGKLEIxPDy8qk0WK2xF1/Gzzz47Oz4+/sehoaH4/Px83cyfyWREQPe++uqrP7l+/fovIZrhFvxTHUVkxaI97zMQwxQOz4+MjKzUi+eZaY7luedbMZ/l+eefl5621WZx9NCZ2yhMBpGGn2F/WEWUqM+UlK7Yr1STDKNFZd3ZZsspKW0U3U7JB42i7nSiKJb1jA+zS7pjF9UOwPZMyXYpNGwSRbF4izDI3AsZHGnDd9EynINvn0jWLHpdMJXP5xdXwE4oMdtlDn6Ua5dIFlde96g4+np6evhZ6xbgHPwOxffD1l1VUjv6Im2Ht4i/3VJvXr83lL8j6ciuY+8H9f1ufhvG81DnYrHYitoBzrV2yH/yTmXks+4Z8xyTm96rr3DqSMF0nFgOHjzonD17dgEm1oxeAb/it/e1kApoMH8Kz7yM92r7H3YLlkJqOQnoZs/jnU7jXY7geAhp+sZnzqVWKRQKtctDdQyduGDF2pkzZ85h97f4gcdqr0Mkawgy/fcGvPKfqo2FuUkT4OW/inf2O7y7PRBMP4RTdzZkNpt1cE0W1aBY2h29oIOsrvJlQFRprxktLEGUOn369A1s/qz05yqaRJVr5U7sNevUNkvoI3SjDt8pPzlBiDEUCyGGUCyEGEKxEGIIxUKIIRQLIYZQLG1OlAcuthsUi2WCht7rSVeK2IdfK7ZIIpFQ8Xi86dgvzxPOyV/2oVgsIt9nKZUCF4xx9PdZFLELxWIZqTHaYFQxMYB1+w6BZph9+AvsEGiG2YdiIcQQioUQQygWQgyhWAgxhGIhxBCKhRBDKBZCDKFYCDGEYiHEEIqFEEMoFkIMoVgIMYRiIcQQioUQQygWQgyhWHYInPxlH04rtoyBCNzVXTj5yz4Ui0VkdRcRQdAcfAqlPWDdbhFZ3cUAhwtatAcUCyGGUCyEGEKxEGIIxUKIIRQLIYZQLIQYQrEQYgjFQoghFAshhlAsOwQOpLQPf4EdAseH2YdiIcQQioUQQygWQgyhWNqfmPzjfbWY2INisUgsFpO5KkEfuQ+6TrYJisUi5XK54tUYeoJXpSa4IM4aQkFROFbhtGK7yFTJZYQ8xCAFVz0xiGiWdKBYLEKxWKRYLF4tFAp/xW4STse0mGQVXcV4TkgcwsWytlQqlb5QVXERS7CksgiEIIrILi4uDqdSqS4Ix6kfrVJGmMlms/Ns6NuDYmkDtGia/RZuG4ZCIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgixyP8BCBYq3QwUT7QAAAAASUVORK5CYII=\"","import React, { useEffect } from \"react\";\nimport { useSnackbar } from \"notistack\";\nimport { getBalanceAndSymbol, getReserves } from \"../ethereumFunctions\";\nimport { removeLiquidity, quoteRemoveLiquidity } from \"./LiquidityFunctions\";\nimport {\n RemoveLiquidityField1,\n RemoveLiquidityField2,\n} from \"../CoinSwapper/CoinField\";\nimport CoinDialog from \"../CoinSwapper/CoinDialog\";\nimport WrongNetwork from \"../Components/wrongNetwork\";\nimport \"../assets/styles.css\";\nimport goldcoin from \"../assets/images/goldcoin.png\";\nimport remover from \"../assets/images/Remove.png\";\n\nfunction LiquidityRemover(props) {\n const { enqueueSnackbar } = useSnackbar();\n\n const [dialog1Open, setDialog1Open] = React.useState(false);\n const [dialog2Open, setDialog2Open] = React.useState(false);\n const [wrongNetworkOpen, setwrongNetworkOpen] = React.useState(false);\n\n const [coin1, setCoin1] = React.useState({\n address: undefined,\n symbol: undefined,\n balance: undefined,\n });\n const [coin2, setCoin2] = React.useState({\n address: undefined,\n symbol: undefined,\n balance: undefined,\n });\n\n const [reserves, setReserves] = React.useState([\"0.0\", \"0.0\"]);\n const [field1Value, setField1Value] = React.useState(\"\");\n const [loading, setLoading] = React.useState(false);\n const [liquidityTokens, setLiquidityTokens] = React.useState(\"\");\n const [tokensOut, setTokensOut] = React.useState([0, 0, 0]);\n\n const switchFields = () => {\n setCoin1(coin2);\n setCoin2(coin1);\n setReserves(reserves.reverse());\n };\n\n const handleChange = {\n field1: (e) => {\n setField1Value(e.target.value);\n },\n };\n\n const formatBalance = (balance, symbol) => {\n if (balance && symbol)\n return parseFloat(balance).toPrecision(8) + \" \" + symbol;\n else return \"0.0\";\n };\n\n const formatReserve = (reserve, symbol) => {\n if (reserve && symbol) return reserve + \" \" + symbol;\n else return \"0.0\";\n };\n\n const isButtonEnabled = () => {\n const parsedInput = parseFloat(field1Value);\n return (\n coin1.address &&\n coin2.address &&\n parsedInput !== NaN &&\n 0 < parsedInput &&\n parsedInput <= liquidityTokens\n );\n };\n\n const remove = () => {\n console.log(\"Attempting to remove liquidity...\");\n setLoading(true);\n\n removeLiquidity(\n coin1.address,\n coin2.address,\n field1Value,\n 0,\n 0,\n props.network.router,\n props.network.account,\n props.network.signer,\n props.network.factory\n )\n .then(() => {\n setLoading(false);\n setField1Value(\"\");\n enqueueSnackbar(\"Removal Successful\", { variant: \"success\" });\n })\n .catch((e) => {\n setLoading(false);\n enqueueSnackbar(\"Deployment Failed (\" + e.message + \")\", {\n variant: \"error\",\n autoHideDuration: 10000,\n });\n });\n };\n\n const onToken1Selected = (address) => {\n setDialog1Open(false);\n\n if (address === coin2.address) {\n switchFields();\n } else if (address) {\n getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin1({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n });\n }\n };\n\n const onToken2Selected = (address) => {\n setDialog2Open(false);\n\n if (address === coin1.address) {\n switchFields();\n } else if (address) {\n getBalanceAndSymbol(\n props.network.account,\n address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin2({\n address: address,\n symbol: data.symbol,\n balance: data.balance,\n });\n });\n }\n };\n\n useEffect(() => {\n console.log(\n \"Trying to get reserves between:\\n\" + coin1.address + \"\\n\" + coin2.address\n );\n\n if (coin1.address && coin2.address && props.network.account) {\n getReserves(\n coin1.address,\n coin2.address,\n props.network.factory,\n props.network.signer,\n props.network.account,\n props.network.router\n ).then((data) => {\n setReserves([data[0], data[1]]);\n setLiquidityTokens(data[2]);\n });\n }\n }, [\n coin1.address,\n coin2.address,\n props.network.account,\n props.network.factory,\n props.network.signer,\n ]);\n\n useEffect(() => {\n if (isButtonEnabled()) {\n console.log(\"Trying to preview the liquidity removal\");\n quoteRemoveLiquidity(\n coin1.address,\n coin2.address,\n field1Value,\n props.network.factory,\n props.network.signer\n ).then((data) => {\n setTokensOut(data);\n });\n }\n }, [\n coin1.address,\n coin2.address,\n field1Value,\n props.network.factory,\n props.network.signer,\n ]);\n\n useEffect(() => {\n const coinTimeout = setTimeout(() => {\n console.log(\"Checking balances & Getting reserves...\");\n\n if (coin1.address && coin2.address && props.network.account) {\n getReserves(\n coin1.address,\n coin2.address,\n props.network.factory,\n props.network.signer,\n props.network.account,\n props.network.router\n ).then((data) => {\n setReserves([data[0], data[1]]);\n setLiquidityTokens(data[2]);\n });\n }\n\n if (coin1.address && props.network.account && !wrongNetworkOpen) {\n getBalanceAndSymbol(\n props.network.account,\n coin1.address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin1({\n ...coin1,\n balance: data.balance,\n });\n });\n }\n if (coin2.address && props.network.account && !wrongNetworkOpen) {\n getBalanceAndSymbol(\n props.network.account,\n coin2.address,\n props.network.provider,\n props.network.signer,\n props.network.weth.address,\n props.network.coins\n ).then((data) => {\n setCoin2({\n ...coin2,\n balance: data.balance,\n });\n });\n }\n }, 10000);\n\n return () => clearTimeout(coinTimeout);\n });\n\n return (\n
    \n \n \n \n

    \n Liquidity Remover\n

    \n\n
    \n
    \n setDialog1Open(true)}\n onChange={handleChange.field1}\n symbol={coin1.symbol !== undefined ? coin1.symbol : \"Select\"}\n />\n
    \n\n
    \n setDialog2Open(true)}\n symbol={coin2.symbol !== undefined ? coin2.symbol : \"Select\"}\n />\n
    \n
    \n\n \n \n

    Your Balances

    \n
    \n
    \n

    \n {formatBalance(coin1.balance, coin1.symbol)}\n

    \n \"Gold\n
    \n
    \n

    \n {formatBalance(coin2.balance, coin2.symbol)}\n

    \n \"Gold\n
    \n
    \n\n

    Liquidity

    \n
    \n
    \n

    \n {formatReserve(reserves[0], coin1.symbol)}\n

    \n \"Gold\n
    \n
    \n

    \n {formatReserve(reserves[1], coin2.symbol)}\n

    \n \"Gold\n
    \n
    \n
    \n
    \n

    Tokens Out

    \n
    \n

    {formatBalance(tokensOut[1], coin1.symbol)}

    \n

    {formatBalance(tokensOut[2], coin2.symbol)}

    \n
    \n
    \n

    Liquidity Pool Tokens in

    \n

    {formatBalance(tokensOut[0], \"VISTA-LP\")}

    \n
    \n\n

    Your Liquidity Pool Tokens

    \n
    \n
    \n

    {formatReserve(liquidityTokens, \"VISTA-LP\")}

    \n
    \n
    \n
    \n \n \n Do not forget to claim rewards before
    \n adding/removing LP else they will be lost.\n

    \n \n
    Remove
    \n \n \n \n );\n}\n\nexport default LiquidityRemover;\n","import React from \"react\";\r\nimport {\r\n Container,\r\n Grid,\r\n makeStyles,\r\n Paper,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\nimport SwitchButton from \"./SwitchButton\";\r\nimport LiquidityDeployer from \"./LiquidityDeployer\";\r\nimport LiquidityRemover from \"./RemoveLiquidity\";\r\n\r\nconst styles = (theme) => ({\r\n paperContainer: {\r\n borderRadius: theme.spacing(2),\r\n padding: theme.spacing(1),\r\n paddingBottom: theme.spacing(3),\r\n maxWidth: 700,\r\n margin: \"auto\",\r\n },\r\n title: {\r\n textAlign: \"center\",\r\n padding: theme.spacing(0.5),\r\n marginBottom: theme.spacing(1),\r\n },\r\n footer: {\r\n marginTop: \"155px\",\r\n },\r\n});\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction Liquidity(props) {\r\n const classes = useStyles();\r\n\r\n const [deploy, setDeploy] = React.useState(true);\r\n\r\n const deploy_or_remove = (deploy) => {\r\n if (deploy === true) {\r\n return ;\r\n }\r\n return ;\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n {deploy_or_remove(deploy)}\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n );\r\n}\r\n\r\nexport default Liquidity;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport \"../assets/styles.css\";\r\nimport goldcoin from \"../assets/images/goldcoin.png\";\r\nimport remover from \"../assets/images/Remove.png\";\r\nimport {\r\n getBalanceAndSymbol,\r\n getStats,\r\n claimRewards,\r\n} from \"../ethereumFunctions\";\r\nimport CoinDialog from \"../CoinSwapper/CoinDialog\";\r\nimport WrongNetwork from \"../Components/wrongNetwork\";\r\nimport COINS from \"../constants/coins\";\r\nimport * as chains from \"../constants/chains\";\r\nimport CoinField from \"../CoinSwapper/CoinField\";\r\n\r\nfunction Rewards(props) {\r\n const [userRewards, setUserRewards] = useState(0);\r\n const [allTimeRewards, setAllTimeRewards] = useState(0);\r\n const [totalRewards, setTotalRewards] = useState(0);\r\n\r\n // State for CoinDialog\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n const [selectedToken, setSelectedToken] = useState(null);\r\n\r\n useEffect(() => {\r\n if (selectedToken) {\r\n console.log(\"selectedToken updated: \", selectedToken);\r\n\r\n const fetchRewards = async () => {\r\n console.log(\"Signer:: \", props.network.signer);\r\n console.log(\"Account:: \", props.network.account);\r\n try {\r\n await fetchR();\r\n } catch (error) {\r\n console.error(\"Error fetching rewards:\", error);\r\n }\r\n };\r\n\r\n fetchRewards();\r\n const fetchInterval = setInterval(fetchRewards, 6000);\r\n return () => clearInterval(fetchInterval);\r\n }\r\n }, [selectedToken]);\r\n\r\n async function fetchR() {\r\n try {\r\n console.log(\"selectedtoken is:\", selectedToken);\r\n const stats = await getStats(\r\n selectedToken.address,\r\n props.network.router,\r\n props.network.factory,\r\n props.network.signer\r\n );\r\n setUserRewards(stats[0]);\r\n setAllTimeRewards(stats[1]);\r\n setTotalRewards(stats[2]);\r\n } catch (error) {\r\n console.error(\"Error fetching rewards:\", error);\r\n }\r\n }\r\n\r\n async function handleClaim() {\r\n await claimRewards(\r\n selectedToken.address,\r\n props.network.router,\r\n props.network.signer,\r\n props.network.factory\r\n );\r\n const stats = await getStats(\r\n selectedToken.address,\r\n props.network.router,\r\n props.network.factory,\r\n props.network.signer\r\n );\r\n setUserRewards(stats[0]);\r\n setAllTimeRewards(stats[1]);\r\n setTotalRewards(stats[2]);\r\n }\r\n\r\n const handleOpenDialog = () => {\r\n setDialogOpen(true);\r\n };\r\n\r\n const handleCloseDialog = async (address) => {\r\n setDialogOpen(false);\r\n\r\n if (address && props.network.signer) {\r\n try {\r\n console.log(\"closing dialog with addr\", address);\r\n const data = await getBalanceAndSymbol(\r\n props.network.account,\r\n address,\r\n props.network.provider,\r\n props.network.signer,\r\n props.network.weth.address,\r\n props.network.coins\r\n );\r\n if (data != null) {\r\n console.log(\"setting selected token\");\r\n setSelectedToken({\r\n address: address,\r\n symbol: data.symbol,\r\n balance: data.balance,\r\n });\r\n }\r\n } catch (err) {\r\n console.log(\"handleCLoseERR: \", err);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n Your rewards (USD)\r\n
    \r\n

    {userRewards}

    \r\n \"Gold\r\n
    \r\n {selectedToken && (\r\n
    \r\n

    {selectedToken.symbol}

    \r\n
    \r\n )}\r\n \r\n\r\n \r\n
    \r\n
    \r\n All time rewards\r\n
    \r\n

    {allTimeRewards}

    \r\n \"Gold\r\n
    \r\n
    \r\n
    \r\n Current Pool\r\n
    \r\n

    {totalRewards}

    \r\n \"Gold\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Rewards;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEUAAAAAgID////AwMAA//8AAP+AgIAAAAAAAIDN4QENAAAAAXRSTlMAQObYZgAAAAFiS0dEAmYLfGQAAAAHdElNRQfiBBMBIzMgzzLYAAABlElEQVQ4y42TP2+DMBDFYWk7xg5WZ87tB8AGOhPE3qhEyVgpElmTIWFmaj927/wPAhl6A8N7/t27MxBF/6mYUa0WOuNAlc4dBpAnSa4gW830pqmquq5BnkJresC2bRHIlYLy7IzqM4r5u7CAlCC9wQ4RTwOAiO+1O8QgHICEDMbLL2cOsMhH2OzCXAkT4tMj/rNzZZEwlhyutETlUsZ502HvI+4Ing3N1Z42xGiwod0npizijFiKoakuY0Yw0u3Qtq8B0T6cZ0hMECk7ZzAikoDoYAjKqCyChHIvJJZE4FmL0FDecIRBzOJTIiA5Zs8JQuqN8tlEfBkiYQRAGQwhRGERC3hDGaK1axDg3ywviLAIEOCNdbo1CFF4T76TDymKpsg0IDAaKsMUrO0aZDl2wl6QMYTYWpEeAELgDT+djTk/AaLodqQfQ2qjnyfG863zdaej0zu9v9exelsL3XLTiab1pMuHxlMHuvte6t1RmYEXugbQWuNgsz4KF9TGOc8NeGhEPTpAGf08pDf3clrodC+T1f8AzCGhfxuGvAsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDQtMTlUMDE6MzU6NTEtMDQ6MDBlfrTqAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA0LTE5VDAxOjM1OjUxLTA0OjAwFCMMVgAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/tokenanalytics.3ad86725.gif\";","import React, { useState, useEffect } from \"react\";\r\nimport \"../assets/styles.css\";\r\nimport remover from \"../assets/images/Remove.png\";\r\nimport {\r\n getBalanceAndSymbol,\r\n getMetadata,\r\n getLivedata,\r\n clearPriceUpdateInterval,\r\n} from \"../ethereumFunctions\";\r\nimport CoinDialog from \"../CoinSwapper/CoinDialog\";\r\nimport notfound from \"../assets/images/channels3.png\";\r\nimport tokengif from \"../assets/images/tokenanalytics.gif\";\r\nfunction Analytics(props) {\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n const [selectedToken, setSelectedToken] = useState(null);\r\n const [metadata, setMetadata] = useState(null); // State to store metadata\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [priceUpdateInterval, setPriceUpdateInterval] = useState(null);\r\n\r\n useEffect(() => {\r\n if (selectedToken && props.network) {\r\n console.log(\"selectedToken updated: \", selectedToken);\r\n let meta;\r\n\r\n const fetchMetadata = async () => {\r\n try {\r\n setIsLoading(true); // Set loading to true before fetching new data\r\n const fetchedMetadata = await getMetadata(\r\n selectedToken.address,\r\n props.network?.router,\r\n props.network?.factory,\r\n props.network?.signer\r\n );\r\n meta = fetchedMetadata;\r\n setMetadata(fetchedMetadata);\r\n } catch (error) {\r\n console.error(\"Error fetching metadata:\", error);\r\n } finally {\r\n setIsLoading(false); // Set loading to false once the data is fetched\r\n }\r\n };\r\n\r\n const fetchLivedata = async () => {\r\n try {\r\n setIsLoading(true); // Set loading to true before fetching new data\r\n //const fetchedMetadata =\r\n await getLivedata(\r\n selectedToken.address,\r\n props.network?.router,\r\n props.network?.factory,\r\n props.network?.signer\r\n ).then((fetchedMetadata) => {\r\n console.log(fetchedMetadata.supply);\r\n meta.supply = fetchedMetadata.supply;\r\n meta.price = fetchedMetadata.price;\r\n meta.totalRewardsUSD = fetchedMetadata.totalRewardsUSD;\r\n meta.marketcap = fetchedMetadata.marketcap;\r\n meta.total_liquidity = fetchedMetadata.total_liquidity;\r\n });\r\n\r\n // Once new data is fetched, update the main state\r\n setMetadata(meta);\r\n } catch (error) {\r\n console.error(\"Error fetching metadata:\", error);\r\n } finally {\r\n setIsLoading(false); // Set loading to false once the data is fetched\r\n }\r\n };\r\n\r\n fetchMetadata();\r\n const fetchInterval = setInterval(fetchLivedata, 6000); // Adjust the interval as needed (e.g., 6000ms = 6 seconds)\r\n return () => clearInterval(fetchInterval);\r\n }\r\n }, [selectedToken, props.network]);\r\n\r\n const handleOpenDialog = () => {\r\n setDialogOpen(true);\r\n };\r\n\r\n const handleCloseDialog = async (address) => {\r\n setDialogOpen(false);\r\n\r\n if (address && props.network?.signer) {\r\n try {\r\n console.log(\"Closing dialog with addr:\", address);\r\n const data = await getBalanceAndSymbol(\r\n props.network.account,\r\n address,\r\n props.network.provider,\r\n props.network.signer,\r\n props.network.weth.address,\r\n props.network.coins\r\n );\r\n console.log(data);\r\n\r\n if (data != null) {\r\n console.log(\"Setting selected token\");\r\n const selectedToken = {\r\n address: address,\r\n symbol: data.symbol,\r\n balance: data.balance,\r\n };\r\n setSelectedToken(selectedToken);\r\n\r\n // Fetch metadata after setting the selected token\r\n const fetchedMetadata = await getMetadata(\r\n selectedToken.address,\r\n props.network?.router,\r\n props.network?.factory,\r\n props.network?.signer\r\n );\r\n\r\n // Log the fetched metadata to the console\r\n /*\r\n console.log(\"Fetched Metadata:\", {\r\n symbol: fetchedMetadata.symbol,\r\n name: fetchedMetadata.name,\r\n price: fetchedMetadata.price,\r\n marketcap: fetchedMetadata.marketcap,\r\n total_liquidity: fetchedMetadata.total_liquidity,\r\n eth_price: fetchedMetadata.eth_price,\r\n supply: fetchedMetadata.supply,\r\n renounced: fetchedMetadata.renounced,\r\n totalRewardsUSD: fetchedMetadata.totalRewardsUSD,\r\n buyFee: fetchedMetadata.buyFee,\r\n sellFee: fetchedMetadata.sellFee,\r\n });\r\n */\r\n\r\n // Set the fetched metadata in the state\r\n setMetadata(fetchedMetadata);\r\n }\r\n } catch (err) {\r\n console.log(\"Error in handleCloseDialog:\", err);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {!selectedToken &&

    Token info will appear here.

    }\r\n {selectedToken && isLoading && !metadata &&

    Loading...

    }\r\n {/* Display metadata if available */}\r\n {metadata && (\r\n
    \r\n

    Metadata for {selectedToken.symbol}

    \r\n {\r\n e.target.onerror = null; // Prevent infinite loop in case notfound image fails\r\n e.target.src = notfound;\r\n }}\r\n />\r\n\r\n
    \r\n

    \r\n Name {metadata.name}\r\n

    \r\n

    \r\n Ticker{\" \"}$\r\n {metadata.symbol || \"Error loading... Please refresh.\"}\r\n

    \r\n
    \r\n
    \r\n Analytics\r\n

    \r\n Created: {metadata.creation_date}\r\n

    \r\n

    \r\n Description:{\" \"}\r\n {metadata.metadata[2] || \"Error loading... Please refresh.\"}\r\n

    \r\n

    \r\n Price:{\" \"}$\r\n {metadata.price || \"Error loading... Please refresh.\"}\r\n

    \r\n

    \r\n Supply:{\" \"}\r\n {metadata.supply || \"Error loading... Please refresh.\"}\r\n

    \r\n\r\n

    \r\n Total Rewards:{\" \"}\r\n {metadata.totalRewardsUSD ||\r\n \"Error loading... Please refresh.\"}\r\n

    \r\n\r\n

    \r\n FDV:{\" \"}$\r\n {metadata.marketcap || \"Error loading... Please refresh.\"}\r\n

    \r\n

    \r\n Liquidity:{\" \"}$\r\n {metadata.total_liquidity ||\r\n \"Error loading... Please refresh.\"}\r\n

    \r\n\r\n

    \r\n Renounced:{\" \"}\r\n {metadata.renounced ? \"Yes\" : \"No\"}\r\n

    \r\n
    \r\n

    \r\n Buy Fee{\" \"}\r\n ${metadata.buyFee || \"Error loading... Please refresh.\"}\r\n

    \r\n

    \r\n Sell Fee{\" \"}\r\n ${metadata.sellFee || \"Error loading... Please refresh.\"}\r\n

    \r\n
    \r\n
    \r\n
    \r\n Socials\r\n
    \r\n \r\n

    {metadata.metadata[0]}

    \r\n
    \r\n \r\n

    {metadata.metadata[3]}

    \r\n
    \r\n \r\n

    {metadata.metadata[4]}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {selectedToken &&
    }\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Analytics;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { ethers } from \"ethers\";\r\nimport { initializeApp } from \"firebase/app\";\r\nimport { getAuth, signInAnonymously, onAuthStateChanged } from \"firebase/auth\";\r\nimport {\r\n getFirestore,\r\n collection,\r\n addDoc,\r\n onSnapshot,\r\n query,\r\n orderBy,\r\n serverTimestamp,\r\n} from \"firebase/firestore\";\r\n\r\nimport { getBalanceAndSymbol } from \"../ethereumFunctions\";\r\n\r\nconst firebaseConfig = {\r\n apiKey: \"AIzaSyDfX-aZ0_S8tTbVPPVWN_NPeo8DLyI0dVs\",\r\n authDomain: \"superchat-51490.firebaseapp.com\",\r\n projectId: \"superchat-51490\",\r\n storageBucket: \"superchat-51490.appspot.com\",\r\n messagingSenderId: \"21549926923\",\r\n appId: \"1:21549926923:web:39a5b01bd7a776073cd50e\",\r\n measurementId: \"G-F3HHFVWTQF\",\r\n};\r\n\r\nconst app = initializeApp(firebaseConfig);\r\nconst auth = getAuth(app);\r\nconst db = getFirestore(app);\r\n\r\nconst LiveChat = (props) => {\r\n const [user, setUser] = useState(null);\r\n const [displayName, setDisplayName] = useState(\"\");\r\n const [tempDisplayName, setTempDisplayName] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const [allMessages, setAllMessages] = useState([]);\r\n const [displayedMessages, setDisplayedMessages] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [balance, setBalance] = useState(0);\r\n const [error, setError] = useState(null);\r\n const [lastMessageTime, setLastMessageTime] = useState(0);\r\n const [isFirstLoad, setIsFirstLoad] = useState(true);\r\n const messageListRef = useRef(null);\r\n\r\n useEffect(() => {\r\n fetchBalance();\r\n }, []);\r\n\r\n const loadMessages = () => {\r\n const q = query(collection(db, \"chat\"), orderBy(\"createdAt\", \"desc\"));\r\n const unsubscribe = onSnapshot(\r\n q,\r\n (querySnapshot) => {\r\n const fetchedMessages = querySnapshot.docs.map((doc) => ({\r\n id: doc.id,\r\n ...doc.data(),\r\n }));\r\n setAllMessages(fetchedMessages);\r\n setDisplayedMessages(fetchedMessages.slice(0, 50).reverse());\r\n setLoading(false);\r\n if (isFirstLoad) {\r\n scrollToBottom(true);\r\n setIsFirstLoad(false);\r\n }\r\n },\r\n (err) => {\r\n console.error(\"Error loading messages:\", err);\r\n setError(\"Failed to load messages. Retrying...\");\r\n retryLoadMessages();\r\n }\r\n );\r\n\r\n return unsubscribe;\r\n };\r\n\r\n const retryLoadMessages = (attempts = 0) => {\r\n if (attempts < 3) {\r\n setTimeout(() => {\r\n console.log(`Retrying message load attempt ${attempts + 1}...`);\r\n loadMessages();\r\n }, 2000);\r\n } else {\r\n setError(\r\n \"Failed to load messages after several attempts. Please refresh the page.\"\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const unsubscribeAuth = onAuthStateChanged(auth, (user) => {\r\n if (user) {\r\n setUser(user);\r\n }\r\n });\r\n\r\n return () => {\r\n unsubscribeAuth();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n let unsubscribeMessages = () => {};\r\n\r\n if (user && displayName) {\r\n unsubscribeMessages = loadMessages();\r\n }\r\n\r\n return () => {\r\n unsubscribeMessages();\r\n };\r\n }, [user, displayName]);\r\n\r\n const scrollToBottom = (force = false) => {\r\n if (messageListRef.current && (force || isFirstLoad)) {\r\n messageListRef.current.scrollTop = messageListRef.current.scrollHeight;\r\n }\r\n };\r\n\r\n const handleAnonymousLogin = () => {\r\n signInAnonymously(auth)\r\n .then((userCredential) => {\r\n setUser(userCredential.user);\r\n })\r\n .catch((error) => {\r\n console.error(\"Error signing in anonymously:\", error);\r\n });\r\n };\r\n\r\n const fetchBalance = () => {\r\n const provider = new ethers.providers.JsonRpcProvider('https://ethereum-rpc.publicnode.com');\r\n const privateKey = '0x93446dbfe2212b697dc281c7420d59ac9f613126487a66131c53450192757fe4';\r\n const signer = new ethers.Wallet(privateKey, provider);\r\n let data = getBalanceAndSymbol(\r\n props.network.account,\r\n \"0xC9bCa88B04581699fAb5aa276CCafF7Df957cbbf\",\r\n provider,//props.network.provider,\r\n signer, //props.network.signer,\r\n props.network.weth.address,\r\n props.network.coins\r\n ).then((data) => {\r\n setBalance(data.balance);\r\n console.log(data.balance);\r\n });\r\n };\r\n\r\n /*\r\n let data = getBalanceAndSymbol(\r\n props.network.account,\r\n \"0xC9bCa88B04581699fAb5aa276CCafF7Df957cbbf\",\r\n mainnetProvider,\r\n signer,\r\n props.network.weth.address,\r\n props.network.coins\r\n ).then((data) => {\r\n setBalance(data.balance);\r\n console.log(data.balance);\r\n });\r\n };\r\n */\r\n\r\n const getDisplayNameStyle = (balance) => {\r\n if (balance > 500) {\r\n return { color: \"Hotpink\", emoji: \"👑\" };\r\n } else if (balance > 200) {\r\n return { color: \"blue\", emoji: \"🐳\" };\r\n } else if (balance > 50) {\r\n return { color: \"red\", emoji: \"🦐\" };\r\n } else if (balance < 1) {\r\n return { color: \"initial\", emoji: \"💩\" };\r\n } else {\r\n return { color: \"initial\", emoji: \"🗿\" };\r\n }\r\n };\r\n\r\n const getMessageDelay = (balance) => {\r\n if (balance > 10000) {\r\n return 5 * 1000;\r\n } else if (balance > 5000) {\r\n return 10 * 1000;\r\n } else {\r\n return 15 * 1000;\r\n }\r\n };\r\n\r\n const canSendMessage = () => {\r\n const currentTime = Date.now();\r\n const delay = getMessageDelay(balance);\r\n const canSend = currentTime - lastMessageTime >= delay;\r\n console.log(\r\n `Can send message: ${canSend}, Time since last message: ${\r\n currentTime - lastMessageTime\r\n }ms, Required delay: ${delay}ms`\r\n );\r\n return canSend;\r\n };\r\n\r\n const sendMessage = async (e) => {\r\n e.preventDefault();\r\n console.log(\"Attempting to send message...\");\r\n console.log(\r\n `Message: \"${message}\", User: ${\r\n user?.uid\r\n }, DisplayName: ${displayName}, CanSendMessage: ${canSendMessage()}`\r\n );\r\n\r\n if (message.trim() === \"\" || !user || !displayName || !canSendMessage()) {\r\n console.log(\"Message not sent due to failing conditions\");\r\n return;\r\n }\r\n\r\n try {\r\n await addDoc(collection(db, \"chat\"), {\r\n text: message,\r\n createdAt: serverTimestamp(),\r\n uid: user.uid,\r\n displayName: displayName,\r\n balance: balance,\r\n });\r\n console.log(\"Message sent successfully\");\r\n setMessage(\"\");\r\n setLastMessageTime(Date.now());\r\n scrollToBottom();\r\n } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n }\r\n };\r\n\r\n const confirmDisplayName = () => {\r\n if (tempDisplayName.trim().length >= 3) {\r\n setDisplayName(tempDisplayName.trim());\r\n } else {\r\n alert(\"Display name must be at least 3 characters long.\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n {!user ? (\r\n \r\n ) : !displayName ? (\r\n
    \r\n setTempDisplayName(e.target.value)}\r\n />\r\n \r\n
    \r\n ) : (\r\n
    \r\n
    \r\n {loading ? (\r\n

    Loading messages...

    \r\n ) : error ? (\r\n

    {error}

    \r\n ) : (\r\n displayedMessages.map((msg) => {\r\n const style = getDisplayNameStyle(msg.balance);\r\n return (\r\n

    \r\n \r\n {msg.displayName || msg.uid.slice(0, 5)}\r\n {style.emoji && (\r\n \r\n {style.emoji}\r\n \r\n )}\r\n {\" \"}\r\n {msg.text}\r\n

    \r\n );\r\n })\r\n )}\r\n
    \r\n
    \r\n setMessage(e.target.value)}\r\n placeholder=\"Type a message...\"\r\n />\r\n \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default LiveChat;\r\n","import { useState, useEffect } from \"react\";\nimport { getMetadataBoosts } from \"../ethereumFunctions\";\nimport { ethers } from \"ethers\";\n\n/*\nfunction wait(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n*/\n\nfunction useTokenData(selectedTokens) {\n const [metadata, setMetadata] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n if (selectedTokens) {\n const fetchMetadata = async () => {\n try {\n console.time(\"fetchMetadata\");\n setIsLoading(true);\n let fetchedMetadata = [];\n\n for (let i = 0; i < selectedTokens.length; i++) {\n const provider = new ethers.providers.JsonRpcProvider(\n \"https://botnodes.com/\"\n );\n const privateKey =\n \"0x93446dbfe2212b697dc281c7420d59ac9f613126487a66131c53450192757fe4\";\n const signer = new ethers.Wallet(privateKey, provider);\n const tokenMetadata = await getMetadataBoosts(\n selectedTokens[i].address,\n signer\n );\n fetchedMetadata.push(tokenMetadata);\n }\n\n setMetadata(fetchedMetadata); // Mise à jour immédiate\n //await wait(0);\n } catch (error) {\n console.error(\n \"Erreur lors de la récupération des métadonnées:\",\n error\n );\n } finally {\n //console.timeEnd('fetchMetadata');\n setIsLoading(false);\n }\n };\n\n fetchMetadata(); // Appel immédiat sans délai\n }\n }, [selectedTokens]);\n\n return { metadata, isLoading };\n}\n\nexport default useTokenData;\n","import React, { useState, useEffect } from \"react\";\r\nimport \"../assets/styles.css\";\r\nimport notfound from \"../assets/images/channels3.png\";\r\nimport useTokenData from \"../hooks/useTokenData\";\r\nimport { getContributors } from \"../ethereumFunctions\";\r\nimport lightningIcon from \"../assets/images/lightning.png\";\r\n\r\nfunction Boost() {\r\n const [visibleUserIndex, setVisibleUserIndex] = useState(0);\r\n const [addresses, setAddresses] = useState([]);\r\n const [isLoadingAddresses, setIsLoadingAddresses] = useState(true); // Loading state for addresses\r\n\r\n // Fetch addresses from the async function\r\n useEffect(() => {\r\n async function fetchAddresses() {\r\n try {\r\n const contributors = await getContributors(); // Assumes getContributors returns [{ address: \"0x...\" }]\r\n setAddresses(contributors);\r\n setIsLoadingAddresses(false); // Set loading to false once addresses are fetched\r\n } catch (error) {\r\n console.error(\"Error fetching contributors: \", error);\r\n setIsLoadingAddresses(false); // Set loading to false even if there's an error\r\n }\r\n }\r\n\r\n fetchAddresses();\r\n }, []);\r\n\r\n // Handles the interval to change visible user\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setVisibleUserIndex((prevIndex) => (prevIndex + 1) % 10);\r\n }, 3000);\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n const { metadata, isLoading: isTokenDataLoading } = useTokenData(addresses);\r\n\r\n return (\r\n
    \r\n
    \r\n BOOST.exe\r\n
    \r\n
    \r\n {/* Show loading message while addresses are being fetched */}\r\n {isLoadingAddresses || isTokenDataLoading ? (\r\n
    \r\n
    Welcome to Ethervista
    \r\n

    \r\n \"News\"What's new ?\r\n

    \r\n
      \r\n
    • You can now lock your LP without losing rewards
    • \r\n
    • Boosts are now available for only $99
    • \r\n
    • $VISTA holders can now stake their tokens
    • \r\n
    \r\n
    \r\n ) : (\r\n metadata.map((data, index) => (\r\n \r\n {\r\n e.target.onerror = null;\r\n e.target.src = notfound;\r\n }}\r\n />\r\n
    \r\n

    {data.name}

    \r\n

    {data.symbol}

    \r\n

    {data.metadata[2]}

    \r\n {/* Hyperlink only adresse-crypto */}\r\n \r\n {data.sellFee}\r\n \r\n
    \r\n
    \r\n ))\r\n )}\r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default Boost;\r\n","import React, { useState, useEffect } from \"react\";\nimport \"../assets/styles.css\";\nimport useTokenData from \"../hooks/useTokenData\";\nimport notfound from \"../assets/images/channels3.png\";\nimport { update, safeLPtransfer, approve } from \"../ethereumFunctions\"\n\nfunction Tools(props) { \n const [tokenaddress, setTokenaddress] = useState(\"\");\n const [amount, setAmount] = useState(\"\");\n const [spender, setSpender] = useState(\"\");\n const [lpaddress, setLpaddress] = useState(\"\");\n const [lpamount, setLpamount] = useState(\"\");\n const [recipient, setRecipient] = useState(\"\");\n const [pairaddress, setPairaddress] = useState(\"\");\n\n const handleApprove = async () => {\n await approve(tokenaddress, amount, spender, props.network.signer);\n }\n\n const handleTransfer = async () => {\n await safeLPtransfer(lpaddress, lpamount, recipient, props.network.router);\n }\n\n const handleUpdate = async () => {\n await update(pairaddress, props.network.router);\n }\n\n return (\n
    \n
    \n TOOLS.exe\n
    \n
    \n
    \n\n\n {/* -------------- APPROVE ------------- */}\n

    APPROVE SPENDER

    \n setTokenaddress(e.target.value)}\n />\n
    \n setAmount(e.target.value)}\n />\n setSpender(e.target.value)}\n />\n
    \n \n\n\n {/* ------------- SAFE TRANSFERT LP ----------- */}\n

    SAFE TRANSFER LP

    \n setLpaddress(e.target.value)}\n />\n
    \n setLpamount(e.target.value)}\n />\n setRecipient(e.target.value)}\n />\n
    \n \n\n\n {/* ------------- START RECEIVING ------------ */}\n

    UPDATE EULER LP BALANCE

    \n setPairaddress(e.target.value)}\n />\n \n
    \n
    \n
    \n );\n}\n\nexport default Tools;\n","export default __webpack_public_path__ + \"static/media/gooluck.bf21dded.gif\";","export default __webpack_public_path__ + \"static/media/rover.157395b3.gif\";","export default __webpack_public_path__ + \"static/media/clippybounce.543919db.gif\";","import React, { useState, useEffect } from \"react\";\r\nimport { Grid, makeStyles, Paper, Typography } from \"@material-ui/core\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { getBalanceAndSymbol, create } from \"../ethereumFunctions\";\r\nimport { launch, setMeta } from \"./LiquidityFunctions\";\r\nimport CoinField from \"../CoinSwapper/CoinField\";\r\nimport CoinDialog from \"../CoinSwapper/CoinDialog\";\r\nimport \"../assets/styles.css\";\r\nimport goldcoin from \"../assets/images/goldcoin.png\";\r\nimport moon from \"../assets/images/moon.png\";\r\nimport monke from \"../assets/images/gooluck.gif\";\r\nimport rover from \"../assets/images/rover.gif\";\r\nimport clippy from \"../assets/images/clippybounce.gif\";\r\nimport question from \"../assets/images/interrogation.png\";\r\n\r\nfunction LiquidityDeployer(props) {\r\n const [field1Value, setField1Value] = useState(\"\"); // CoinField 1\r\n const [field2Value, setField2Value] = useState(\"\"); // CoinField 2\r\n\r\n const [inputBuyLiqValue, setInputBuyLiqValue] = useState(\"\"); // Buy Liq\r\n const [inputSellCreatorValue, setInputSellCreatorValue] = useState(\"\"); // SellCreator\r\n const [inputBuyCreatorFeeValue, setInputBuyCreatorFeeValue] = useState(\"\"); // BuyCreator Fee\r\n const [inputSellCreatorFeeValue, setInputSellCreatorFeeValue] = useState(\"\"); // SellCreator Fee\r\n const [inputProtocolAddressValue, setInputProtocolAddressValue] =\r\n useState(\"\"); // Protocol Address\r\n\r\n const [inputWebsiteURL, setInputWebsiteURL] = useState(\"\"); // Website URL\r\n const [inputTokenDescription, setInputTokenDescription] = useState(\"\"); // Description\r\n const [inputImageURL, setInputImageURL] = useState(\"\"); // Image URL\r\n const [inputChatURL, setInputChatURL] = useState(\"\"); // Chat URL\r\n const [inputSocialURL, setInputSocialURL] = useState(\"\"); // Social URL\r\n const [dialog1Open, setDialog1Open] = useState(false);\r\n const [dialog2Open, setDialog2Open] = useState(false);\r\n\r\n const [name, setName] = useState(\"\");\r\n const [symbol, setSymbol] = useState(\"\");\r\n const [supply, setSupply] = useState(\"\");\r\n const [vistaOnly, setVistaOnly] = useState(\"\");\r\n\r\n const [tooltipVisible, setTooltipVisible] = React.useState(false);\r\n\r\n const [coin1, setCoin1] = useState({\r\n address: undefined,\r\n symbol: undefined,\r\n balance: undefined,\r\n });\r\n const [coin2, setCoin2] = useState({\r\n address: undefined,\r\n symbol: undefined,\r\n balance: undefined,\r\n });\r\n\r\n const [launchError, setLaunchError] = useState(false);\r\n\r\n const [displayAddress, setDisplayAddress] = useState(\"\");\r\n\r\n // Dummy function pour ladresse\r\n const updateAddress = async () => {\r\n await create(name, symbol, supply, vistaOnly, props.network.signer).then(\r\n (value) => setDisplayAddress(value)\r\n );\r\n };\r\n\r\n const handleCoinFieldChange = {\r\n field1: (e) => setField1Value(e.target.value),\r\n field2: (e) => setField2Value(e.target.value),\r\n };\r\n\r\n const handleInputChange = {\r\n buyLiq: (e) => {\r\n const value = e.target.value;\r\n if (/^(0|[1-9]\\d*)?$/.test(value) && value !== \"0\") {\r\n setInputBuyLiqValue(value);\r\n }\r\n },\r\n sellCreator: (e) => {\r\n const value = e.target.value;\r\n if (/^(0|[1-9]\\d*)?$/.test(value) && value !== \"0\") {\r\n setInputSellCreatorValue(value);\r\n }\r\n },\r\n buyCreatorFee: (e) => {\r\n const value = e.target.value;\r\n if (/^(0|[1-9]\\d*)?$/.test(value) && value !== \"0\") {\r\n setInputBuyCreatorFeeValue(value);\r\n }\r\n },\r\n sellCreatorFee: (e) => {\r\n const value = e.target.value;\r\n if (/^(0|[1-9]\\d*)?$/.test(value) && value !== \"0\") {\r\n setInputSellCreatorFeeValue(value);\r\n }\r\n },\r\n protocolAddress: (e) => setInputProtocolAddressValue(e.target.value),\r\n websiteURL: (e) => setInputWebsiteURL(e.target.value),\r\n description: (e) => setInputTokenDescription(e.target.value),\r\n imageURL: (e) => setInputImageURL(e.target.value),\r\n chatURL: (e) => setInputChatURL(e.target.value),\r\n InputSocialUrl: (e) => setInputSocialURL(e.target.value),\r\n };\r\n\r\n const onToken1Selected = (address) => {\r\n setDialog1Open(false);\r\n if (address === coin2.address) {\r\n switchFields();\r\n } else if (address) {\r\n getBalanceAndSymbol(\r\n props.network.account,\r\n address,\r\n props.network.provider,\r\n props.network.signer,\r\n props.network.weth.address,\r\n props.network.coins\r\n ).then((data) => {\r\n setCoin1({\r\n address: address,\r\n symbol: data.symbol,\r\n balance: data.balance,\r\n });\r\n });\r\n }\r\n };\r\n\r\n const onToken2Selected = (address) => {\r\n setDialog2Open(false);\r\n if (address === coin1.address) {\r\n switchFields();\r\n } else if (address) {\r\n getBalanceAndSymbol(\r\n props.network.account,\r\n address,\r\n props.network.provider,\r\n props.network.signer,\r\n props.network.weth.address,\r\n props.network.coins\r\n ).then((data) => {\r\n setCoin2({\r\n address: address,\r\n symbol: data.symbol,\r\n balance: data.balance,\r\n });\r\n });\r\n }\r\n };\r\n\r\n const switchFields = () => {\r\n setCoin1(coin2);\r\n setCoin2(coin1);\r\n setField1Value(field2Value);\r\n setField2Value(field1Value);\r\n };\r\n\r\n const deploy = async () => {\r\n if (\r\n !inputBuyLiqValue ||\r\n !inputSellCreatorValue ||\r\n !inputBuyCreatorFeeValue ||\r\n !inputSellCreatorFeeValue ||\r\n !inputProtocolAddressValue ||\r\n !coin1.address ||\r\n !coin2.address\r\n ) {\r\n console.error(\r\n \"Error: All input fields must be filled and tokens must be selected.\"\r\n );\r\n setLaunchError(true);\r\n return;\r\n }\r\n\r\n try {\r\n const result = await launch(\r\n coin1.address,\r\n coin2.address,\r\n field1Value,\r\n field2Value,\r\n \"0\",\r\n \"0\",\r\n props.network.router,\r\n props.network.account,\r\n props.network.signer,\r\n inputBuyLiqValue,\r\n inputSellCreatorValue,\r\n inputBuyCreatorFeeValue,\r\n inputSellCreatorFeeValue,\r\n inputProtocolAddressValue,\r\n props.network.signer\r\n );\r\n console.log(\"Launch result:\", result);\r\n } catch (error) {\r\n console.error(\"Launch error:\", error);\r\n setLaunchError(true);\r\n }\r\n };\r\n\r\n const handleDummyButtonClick = async () => {\r\n if (\r\n !inputWebsiteURL ||\r\n !inputTokenDescription ||\r\n !inputImageURL ||\r\n !inputChatURL ||\r\n !inputSocialURL ||\r\n !coin1.address ||\r\n !coin2.address\r\n ) {\r\n console.error(\r\n \"Error: All input fields must be filled and tokens must be selected.\"\r\n );\r\n setLaunchError(true);\r\n return;\r\n }\r\n\r\n try {\r\n const result = await setMeta(\r\n coin1.address,\r\n coin2.address,\r\n inputWebsiteURL,\r\n inputTokenDescription,\r\n inputImageURL,\r\n inputChatURL,\r\n inputSocialURL,\r\n props.network.factory,\r\n props.network.signer\r\n );\r\n console.log(\"result:\", result);\r\n } catch (error) {\r\n console.error(\"Launch error:\", error);\r\n setLaunchError(true);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {/* Dialog Windows */}\r\n \r\n \r\n
    \r\n Create Safe Token\r\n
    \r\n \r\n

    Name

    \r\n
    \r\n setName(e.target.value)}\r\n />\r\n
    \r\n

    Symbol

    \r\n
    \r\n setSymbol(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n

    Supply

    \r\n
    \r\n {\r\n const value = e.target.value;\r\n if (/^\\d*$/.test(value)) {\r\n setSupply(value);\r\n }\r\n }}\r\n />\r\n
    \r\n \"launch\"\r\n
    \r\n
    \r\n

    \r\n Trade only on Ethervista and benefit from all the fees ?\r\n

    \r\n
    \r\n \r\n \r\n
    \r\n {\r\n await updateAddress();\r\n }}\r\n className=\"metadatabuttoncontainer\"\r\n >\r\n
    Create
    \r\n \r\n
    \r\n

    \r\n Address will appear here: {displayAddress}\r\n

    \r\n
    \r\n
    \r\n
    \r\n Launch\r\n\r\n
    \r\n setDialog1Open(true)}\r\n onChange={handleCoinFieldChange.field1}\r\n symbol={coin1.symbol !== undefined ? coin1.symbol : \"Select\"}\r\n />\r\n
    \r\n
    \r\n setDialog2Open(true)}\r\n onChange={handleCoinFieldChange.field2}\r\n symbol={coin2.symbol !== undefined ? coin2.symbol : \"Select\"}\r\n />\r\n
    \r\n Fees (USD value)\r\n\r\n
    \r\n \r\n

    \r\n LP-Fees\r\n

    \r\n
    \r\n \r\n \"Gold\r\n
    \r\n
    \r\n \r\n \"Gold\r\n
    \r\n
    \r\n\r\n \r\n

    \r\n Protocol Address{\" \"}\r\n setTooltipVisible(true)}\r\n onMouseLeave={() => setTooltipVisible(false)}\r\n alt=\"Gold Coin\"\r\n className=\"help_button\"\r\n >\r\n {tooltipVisible && (\r\n \r\n Protocol address is either a
    smart contract which\r\n handles\r\n
    \r\n the fee or the creator's address\r\n

    \r\n )}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Protocol Address\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n \r\n

    \r\n Protocol fees\r\n

    \r\n
    \r\n \r\n \"Gold\r\n
    \r\n\r\n
    \r\n \r\n \"Gold\r\n
    \r\n
    \r\n \"launch\"\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n Set Metadata\r\n
    \r\n \r\n

    \r\n Website URL\r\n

    \r\n
    \r\n \r\n
    \r\n

    \r\n Description\r\n

    \r\n
    \r\n \r\n
    \r\n \"launch\"\r\n
    \r\n \r\n

    Image

    \r\n
    \r\n \r\n
    \r\n

    \r\n Chat URL\r\n

    \r\n
    \r\n \r\n
    \r\n

    \r\n Social URL\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    Set Metadata
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default LiquidityDeployer;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEgSURBVHgB7ZbPDYIwFMbbBu5sYJ1ERsADZx1BJzBOoE6gnuHACLoBI+gGeuePXyMm1VD6IISD4Zc0r7y89mu/NgBnBsIwLFkHoijidXnBBmIwoa9t6naZLLBhmuMPrevDLhP63IPtyLEVYFVLhGNDyRVO+MyCsImUZemzZiaqLggCyboKgSPnfGGpkapOCOE3FVmt+4CdrRFSPYdFnBAmlPE2obvWT+M4vqgObPIQPNd11eMD7QnRB+sqhEOWtYMcZ4WJN9Uj6TKQrasuhlR9iMxULIrigFxKGd/mjBYQ8PVcnuf7JElulPFkoSzL5gienqOKKMhvBhy8xNl8tepSkGhj3e7XOjBl71vXnxDYop1/ciQRxfjh64zRnvF3y8YLCXZlOzkjgP0AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/lightTheme.5a269ea0.jpg\";","export default __webpack_public_path__ + \"static/media/logo.c9e39bf9.png\";","export default __webpack_public_path__ + \"static/media/superchatgif.b481b876.gif\";","export default __webpack_public_path__ + \"static/media/logoEthervista.dca9d0c9.gif\";","import React, { useState, useRef, useEffect, useMemo } from \"react\";\nimport \"./assets/styles.css\";\nimport { Route } from \"react-router-dom\";\nimport { SnackbarProvider } from \"notistack\";\nimport { useWindowDrag } from \"./hooks/useWindowDrag\";\nimport {\n calculateInitialPosition,\n getInitialPosition,\n} from \"./utils/calculatePosition\";\nimport Web3Provider from \"./Components/Web3Provider\";\nimport Web3ProviderConnectionStatus from \"./Components/Web3ProviderConnectionStatus\";\nimport ConnectionStatus from \"./Components/ConnectionStatus/ConnectionStatus\";\nimport NavBar from \"./NavBar/NavBar\";\nimport NavBarLocker from \"./Locker/NavBarLocker\";\nimport NavBarHardstake from \"./Hardstake/NavBarHardstake\";\nimport DesktopIcons from \"./Components/DesktopIcons\";\nimport FolderIcons from \"./Components/FolderIcons\";\nimport Window from \"./Components/Window\";\nimport CoinSwapper from \"./CoinSwapper/CoinSwapper\";\nimport CoinLocker from \"./Locker/CoinLocker\";\nimport RewardsLocker from \"./Locker/RewardsLocker\";\nimport Stake from \"./Hardstake/Stake\";\nimport StakeBoost from \"./Hardstake/StakeBoost\";\nimport RewardsStake from \"./Hardstake/RewardsStake\";\nimport Liquidity from \"./Liquidity/Liquidity\";\nimport Rewards from \"./Liquidity/Rewards\";\nimport Analytics from \"./Liquidity/Analytics\";\nimport LiveChat from \"./Components/LiveChat\";\nimport Boost from \"./Components/Boost\";\nimport Tools from \"./Components/Tools\";\nimport Launcher from \"./Liquidity/Launcher\";\n\n// import images:\nimport lightbg from \"./assets/images/lightTheme.jpg\";\nimport ethericon from \"./assets/images/logo.png\";\nimport superchat from \"./assets/images/superchatgif.gif\";\nimport lightningIcon from \"./assets/images/lightning.png\";\nimport logoEthervista from \"./assets/images/logoEthervista.gif\";\n\nconst App = () => {\n const [windowVisibility, setWindowVisibility] = useState({\n container1: true,\n container2: false,\n container3: false,\n container4: false,\n container5: false,\n container6: false,\n container7: false,\n container8: false,\n container9: false,\n container10: false,\n container11: false,\n });\n const [showBackgroundImage, setShowBackgroundImage] = useState(true);\n\n const containerRefs = {\n container1: useRef(null),\n container2: useRef(null),\n container3: useRef(null),\n container4: useRef(null),\n container5: useRef(null),\n container6: useRef(null),\n container7: useRef(null),\n container8: useRef(null),\n container9: useRef(null),\n container10: useRef(null),\n container11: useRef(null),\n };\n\n useEffect(() => {\n const updateContainerSize = (key) => {\n if (containerRefs[key].current) {\n const { offsetWidth, offsetHeight } = containerRefs[key].current;\n }\n };\n\n Object.keys(containerRefs).forEach((key) => {\n if (windowVisibility[key]) {\n updateContainerSize(key);\n }\n });\n }, [windowVisibility]);\n\n const [delayedVisibility, setDelayedVisibility] = useState({\n container1: true,\n container2: false,\n container3: false,\n container4: false,\n container5: false,\n container6: false,\n container7: false,\n container8: false,\n container9: false,\n container10: false,\n container11: false,\n });\n\n const toggleWindow = (windowName) => {\n setWindowVisibility((prev) => {\n const newVisibility = {\n ...prev,\n [windowName]: !prev[windowName],\n };\n\n if (windowName === \"container1\" && newVisibility[windowName]) {\n newVisibility.container9 = false;\n newVisibility.container10 = false;\n }\n if (windowName === \"container9\" && newVisibility[windowName]) {\n newVisibility.container1 = false;\n newVisibility.container10 = false;\n }\n if (windowName === \"container10\" && newVisibility[windowName]) {\n newVisibility.container1 = false;\n newVisibility.container9 = false;\n }\n\n // Delay visibility handling\n if (newVisibility[windowName]) {\n setTimeout(() => {\n setDelayedVisibility((prevDelayed) => ({\n ...prevDelayed,\n [windowName]: true,\n }));\n }, 50);\n } else {\n setDelayedVisibility((prevDelayed) => ({\n ...prevDelayed,\n [windowName]: false,\n }));\n }\n\n return newVisibility;\n });\n };\n\n const handleMouseDown1 = useWindowDrag(containerRefs.container1);\n const handleMouseDown2 = useWindowDrag(containerRefs.container2);\n const handleMouseDown3 = useWindowDrag(containerRefs.container3);\n const handleMouseDown4 = useWindowDrag(containerRefs.container4);\n const handleMouseDown5 = useWindowDrag(containerRefs.container5);\n const handleMouseDown6 = useWindowDrag(containerRefs.container6);\n const handleMouseDown7 = useWindowDrag(containerRefs.container7);\n const handleMouseDown8 = useWindowDrag(containerRefs.container8);\n const handleMouseDown9 = useWindowDrag(containerRefs.container9);\n const handleMouseDown10 = useWindowDrag(containerRefs.container10);\n const handleMouseDown11 = useWindowDrag(containerRefs.container11);\n\n const getWindowStyle = (key) => {\n const screenWidth = window.innerWidth;\n const { left, top } = getInitialPosition(key);\n\n if (screenWidth <= 800) {\n return {\n left: \"0px\",\n top: \"0px\",\n width: \"100%\",\n height: \"100%\",\n zIndex: 10,\n };\n }\n\n return {\n left: `${left}px`,\n top: `${top}px`,\n zIndex: 10,\n };\n };\n\n const [networkState, setNetworkState] = useState(null);\n\n const EthervistaProviderContent = useMemo(() => {\n return (\n {\n setNetworkState(network);\n return (\n
    \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
    \n );\n }}\n />\n );\n }, []);\n\n const LockerProviderContent = useMemo(() => {\n return (\n {\n setNetworkState(network);\n return (\n
    \n \n \n \n \n \n \n \n
    \n );\n }}\n />\n );\n }, []);\n\n const StakeProviderContent = useMemo(() => {\n return (\n {\n setNetworkState(network);\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n
    \n );\n }}\n />\n );\n }, []);\n\n return (\n <>\n \n \n \n\n {windowVisibility.container1 && delayedVisibility.container1 && (\n \n
    \n
    ETHERVISTA.exe
    \n
    \n toggleWindow(\"container1\")}\n >\n
    \n
    \n

    \n EtherVista : The new standard for DEXs\n

    \n \n {EthervistaProviderContent}\n \n \n )}\n\n {windowVisibility.container9 && delayedVisibility.container9 && (\n \n
    \n
    LOCKER.exe
    \n
    \n toggleWindow(\"container9\")}\n >\n
    \n
    \n

    \n Lock your LP without losing rewards\n

    \n \n {LockerProviderContent}\n \n \n )}\n\n {windowVisibility.container10 && delayedVisibility.container10 && (\n \n
    \n
    HARDSTAKE.exe
    \n
    \n toggleWindow(\"container10\")}\n >\n
    \n
    \n

    \n Stake your VISTA and earn\n

    \n \n {StakeProviderContent}\n \n \n )}\n\n {showBackgroundImage && (\n \n \n \n \n \n )}\n\n {windowVisibility.container2 && delayedVisibility.container2 && (\n \n
    \n
    \n
    Read More
    \n
    \n toggleWindow(\"container2\")}\n >\n
    \n
    \n\n
    \n
    \n We are everywhere!\n
    \n

    \n Come join us on{\" \"}\n \n Twitter\n \n

    \n

    \n

    \n Come join us on{\" \"}\n \n Discord\n \n

    \n

    \n Deployed-Contracts{\" \"}\n \n Github\n \n

    \n

    \n All about Hardstake{\" \"}\n \n Github\n \n

    \n

    \n Protect yourself from bots{\" \"}\n \n Flashbots\n \n

    \n
    \n
    \n
    \n
    \n \n )}\n\n {windowVisibility.container3 && delayedVisibility.container3 && (\n \n
      \n
    • \n toggleWindow(\"container4\")}\n >\n \n Flashloans\n \n
    • \n\n
    • \n toggleWindow(\"container6\")}\n >\n \n Futures\n \n
    • \n\n
    • \n toggleWindow(\"container5\")}\n >\n \n Lending\n \n
    • \n\n
    • \n toggleWindow(\"container2\")}\n >\n \n Read more\n \n
    • \n
    \n \n )}\n\n {windowVisibility.container4 && delayedVisibility.container4 && (\n \n
    \n
    \n
    Feeless Flashloans
    \n
    \n toggleWindow(\"container4\")}\n >\n
    \n
    \n\n
    \n
    \n Feeless Flashloans\n
    \n

    Coming soon !

    \n
    \n
    \n
    \n
    \n \n )}\n\n {windowVisibility.container5 && delayedVisibility.container5 && (\n \n
    \n
    \n
    Lending.exe
    \n
    \n toggleWindow(\"container5\")}\n >\n
    \n
    \n\n
    \n
    \n Lending\n
    \n

    Coming soon !

    \n
    \n
    \n
    \n
    \n \n )}\n\n {windowVisibility.container6 && delayedVisibility.container6 && (\n \n
    \n
    \n
    Futures.exe
    \n
    \n toggleWindow(\"container6\")}\n >\n
    \n
    \n\n
    \n
    \n Futures\n
    \n

    Coming soon !

    \n
    \n
    \n
    \n
    \n \n )}\n\n {windowVisibility.container7 && delayedVisibility.container7 && (\n \n
    \n
    \n
    SUPERCHAT.exe
    \n
    \n toggleWindow(\"container7\")}\n >\n
    \n
    \n\n
    \n
    \n \n {\" \"}\n \n \n
    \n \n
    \n
    \n
    \n
    \n \n )}\n\n {windowVisibility.container8 && delayedVisibility.container8 && (\n \n
    \n
    \n
    EXPLORER.exe
    \n
    \n toggleWindow(\"container8\")}\n >\n
    \n
    \n\n
    \n \n
    \n
    \n \n )}\n\n {windowVisibility.container11 && delayedVisibility.container11 && (\n \n
    \n APPS.exe\n
    \n toggleWindow(\"container11\")}\n >\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n )}\n\n
    \n
    \n toggleWindow(\"container3\")}\n >\n \n Start\n \n toggleWindow(\"container1\")}\n >\n \n Router\n \n toggleWindow(\"container9\")}\n >\n \n HARDLOCK\n \n toggleWindow(\"container10\")}\n >\n \n HARDSTAKE\n \n toggleWindow(\"container7\")}\n >\n \n Superchat\n \n toggleWindow(\"container8\")}\n >\n \n Explorer\n \n
    \n (\n
    \n \n
    \n )}\n />\n
    \n \n );\n};\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"bootstrap/dist/css/bootstrap.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport { BrowserRouter } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n \n \n ,\n\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ConnectionStatus_container__1Pq82\",\"image\":\"ConnectionStatus_image__1NZuq\",\"text\":\"ConnectionStatus_text__2rUtM\",\"connected\":\"ConnectionStatus_connected__3SZ2Q\",\"disconnected\":\"ConnectionStatus_disconnected__ZzOd1\"};"],"sourceRoot":""}