{"version":3,"sources":["../../../packages/nftanvil_tools/cjs/pricing.js","../../../packages/nftanvil_canisters/cjs/ledger.js","../../../packages/nftanvil_canisters/cjs/history.js","../../../packages/nftanvil_tools/cjs/items.js","../../../packages/nftanvil_tools/cjs/principal.js","../../../packages/nftanvil_canisters/cjs/account.js","../../../packages/nftanvil_tools/cjs/image.js","../../../packages/nftanvil_tools/cjs/data.js","../../../packages/nftanvil_canisters/cjs/declarations/nft/nft.did.js","../../../packages/nftanvil_canisters/cjs/declarations/router/router.did.js","../../../packages/nftanvil_canisters/cjs/declarations/ledger/ledger.did.js","../../../packages/nftanvil_canisters/cjs/declarations/pwr/pwr.did.js","../../../packages/nftanvil_canisters/cjs/declarations/account/account.did.js","../../../packages/nftanvil_canisters/cjs/declarations/history/history.did.js","assets/anvillogo.svg","assets/anvillogowhite.svg","assets/blueflame.svg","auth.js","components/Code.js","components/TransactionToast.js","reducers/user.js","reducers/nft.js","reducers/inventory.js","assets/itemgrid.png","assets/itemgrid_light.png","reducers/history.js","components/History.js","components/Confetti.js","assets/dfinity.svg","components/LoginRequired.js","icons.js","assets/default.png","assets/over.png","config.js","components/NFT.js","reducers/dashboard.js","components/Dashboard.js","components/Disclaimer.js","assets/powered.dark.svg","assets/powered.light.svg","assets/logo-nft.storage.svg","components/Nftstorage.js","components/FileInput.js","components/PricingPresets.js","components/Mint.js","components/Inventory.js","App.js","reportWebVitals.js","store.js","theme.js","index.js","../../../packages/nftanvil_canisters/cjs/nft.js","../../../packages/nftanvil_tools/cjs/transactionid.js","../../../packages/nftanvil_tools/cjs/validate.js","../../../packages/nftanvil_tools/cjs/accountidentifier.js","../../../packages/nftanvil_canisters/cjs/router.js","../../../packages/nftanvil_canisters/cjs/pwr.js","../../../packages/nftanvil_tools/cjs/token.js"],"names":["Object","defineProperty","exports","value","priceStorage","priceOps","STORAGE_KB_PER_MIN","QUALITY_PRICE","FULLY_CHARGED_MINUTES","FULLY_CHARGED_MESSAGES","AVG_MESSAGE_COST","_ref","custom","content","thumb","quality","ttl","cost_per_min","BigInt","internal","size","Math","pow","_ref2","canisterId","enumerable","get","_ledgerDid","idlFactory","ledgerCanister","_agent","require","options","agent","HttpAgent","agentOptions","process","REACT_APP_LOCAL_BACKEND","fetchRootKey","catch","err","console","warn","error","Actor","createActor","actorOptions","historyCanister","_historyDid","toText","itemUse","itemTransfer","itemQuality","itemHold","light","label","color","dark","val","PrincipalToSlot","PrincipalToIdx","PrincipalFromSlot","PrincipalFromIdx","_principal","_data","idx","Principal","fromUint8Array","numberToBytesArray","space","start","Number","p","a","toUint8Array","slice","bytesArrayToNumber","accountCanister","_accountDid","snapVideoImage","resizeImageP","resizeImage","getImgSize","filesize2text","extractVideoThumb","challengeDraw","ctx","bitmap","w","length","imd","createImageData","Array","fill","map","x","src","toString","padStart","y","chp","num","floor","data","putImageData","MAX_WIDTH","MAX_HEIGHT","crop","arguments","undefined","Promise","resolve","img","Image","already_url","startsWith","onload","canvas","document","createElement","getContext","drawImage","width","height","ctx2","scale","toBlob","blob","url","URL","createObjectURL","type","tmpUrl","max_w","max_h","opts","resp","video","videoWidth","videoHeight","image","toDataURL","objurl","async","reject","capture","delay","pause","removeEventListener","info","duration","addEventListener","muted","preload","playsInline","play","h","ms","setTimeout","bytes","lbl","i","metrics","round","uploadFile","toHexString","jsonToNat8","generateKeyHashPair","fromHexString","encodeLink","encodeArrayBuffer","djb2xor","decodeLink","chunkBlob","bytesToBase58","blobPrepare","base58ToBytes","BigIntToString","obj","_baseX","__esModule","default","_sha","bs58","n","isArray","fromEntries","keys","k","Uint8Array","reverse","getRandomValues","key","window","crypto","hash","sha224","code","buf","decode","slot","tokenIndex","b","encode","file","from","bl","Blob","JSON","stringify","json","buffer","arrayBuffer","hexString","match","byte","parseInt","reduce","str","url_or_blob","fetch","then","r","chunkSize","chunks","ceil","push","chunk","len","charCodeAt","nft","position","subaccount","tried","all","upload_chunk","chunkIdx","re","e","init","IDL","TokenIdentifier","Nat64","AccountIdentifier","Vec","Nat8","User","Variant","Request__1","Record","Balance","CommonError","Null","Text","Response__1","SubAccount","ApproveRequest","Opt","TransactionId","ApproveResponse","BalanceRequest","BalanceResponse","BearerResponse","Memo","BurnRequest","TransferResponseError","BurnResponse","ClaimLinkRequest","ClaimLinkResponse","CanisterSlot","CanisterRange","Tuple","Config","TokenIndex","Nat16","FetchChunkRequest","Nat32","HeaderField","Request","Token","Nat","CallbackFunc","Func","StreamingStrategy","Response","Callback","ContentType","IPFS_CID","ExternalUrl","Content","DomainName","Share","CustomData","Quality","ItemLore","ItemName","Tag","Tags","Attribute","Attributes","ItemTransfer","Metadata","Bool","Sockets","Price","MetavarsFrozen","MetadataResponse","CustomVar","MetadataInput","MintRequest","MintResponse","Oracle","PlugRequest","SocketError","PlugResponse","PurchaseRequest","Time","Int","NFTPurchase","PurchaseResponse","RechargeRequest","RechargeResponse","SetPriceRequest","SetPriceResponse","SocketRequest","SocketResponse","SupplyResponse","TransferRequest","TransferResponse","TransferLinkRequest","TransferLinkResponse","UnsocketRequest","UnplugError","UnplugResponse","UnsocketResponse","UploadChunkRequest","Cooldown","ItemUse","UseRequest","UseResponse","Service","Config__1","LogEvent","Oracle__1","AccountBalanceArgs","account","Tokens","e8s","TimeStamp","timestamp_nanos","TransferArgs","to","fee","memo","from_subaccount","created_at_time","amount","BlockIndex","TransferError","TxTooOld","allowed_window_nanos","BadFee","expected_fee","TxDuplicate","duplicate_of","TxCreatedInFuture","InsufficientFunds","balance","TransferResult","Ok","Err","NotifyArgs","to_subaccount","to_canister","max_fee","block_height","NotifyResult","account_balance","transfer","notify_dfx","User__2","Balance__1","AccountIdentifier__2","Balance__3","SubAccount__2","Balance__2","User__1","SubAccount__1","PurchaseClaimRequest","ICP","PurchaseClaimResponse","PurchaseIntentRequest","AccountIdentifier__1","PurchaseIntentResponse","WithdrawRequest","WithdrawResponse","TokenIdentifier__1","AddressInfo","AccountMeta","Timestamp","EventFungibleTransaction","AnvEvent","NftEvent","PwrWithdraw","EventFungibleMint","PwrEvent","EventInfo__1","AddResponse","EventIndex","EventInfo","Event","InfoResponse","ListRequest","ListResponse","auth","client","MyStorage","AuthClient","create","hw_identity","LedgerIdentity","identity","getIdentity","host","constructor","this","my","Stx","styled","span","TX","children","Sacc","props","mode","hexColors","A","B","C","D","E","F","ACC","short","useColorModeValue","toUpperCase","split","style","c","Snfta","NFTA","Sicp","digits","icpCycles","useSelector","state","user","oracle","xdr","substring","hasArrow","placement","toFixed","Shash","HASH","txt","TransactionToast","dispatch","useDispatch","onClick","tokenId","transactionId","title","fontSize","TransactionFailed","message","initialState","address","principal","anonymous","focused","icp","anv","acccan","icpFee","pwrFee","anvFee","pro","modal_nftstorage","key_nftstorage","disclaimer","userSlice","createSlice","name","reducers","resetReducer","balancesSet","action","payload","focusSet","proSet","authSet","mapSet","setNftStorageModal","setNftSotrageKey","setDisclaimer","actions","proModeSet","v","localStorage","setItem","login","allowAnonymous","getState","authentication","authClient","isAuthenticated","REACT_APP_IDENTITY_PROVIDER","identityProvider","onSuccess","onError","getPrincipal","principalToAccountIdentifier","getSubAccountArray","loadNftStorageKey","loadDisclaimer","log","getItem","router","setOptions","getAgentOptions","config_get","nft_avail","join","refresh_balances","refresh_icp_balance","refresh_pwr_balance","Cookies","logout","ledger","pwr_buy","s","pwrcan","pwrCanister","pwr","includes","filter","Boolean","toastId","toast","TYPE","INFO","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","isLoading","intent","pwr_purchase_intent","paymentAddress","ok","ledger_result","update","ERROR","render","claim","pwr_purchase_claim","SUCCESS","nftSlice","nftSet","id","meta","nftFetch","tid","tokenFromText","index","decodeTokenId","canister","nftcan","nftCanister","metadata","Error","bearer","vars","now","Date","domain","created","lore","author","secret","entropy","attributes","authorShare","tags","cooldownUntil","boundUntil","pwrOps","pwrStorage","sockets","tokenToText","price","history","rechargeable","transferable","unrestricted","bindsDuration","tokenUrl","ipfs","ipfsTokenUrl","cid","nftMediaGet","contentType","fetchFile","_","fetch_chunk","set_price","t","token","toAddress","uploadIPFS","up","NFTStorage","storeBlob","mint","vals","available","random","mrez","nft_mint","OutOfMemory","dismiss","InsufficientBalance","encodeTokenId","inventorySlice","pageSet","produce","draft","aid","pageIdx","list","metaSet","verifiedDomainSet","loadInventory","max","can","acc","lastUpdated","total","events","setEvents","setInfo","loadInfo","previous","loadHistory","fromText","mapValuesDeep","cb","innerObj","isObject","mapValues","HistoryRedirect","setLoading","useState","useEffect","load","mt","KeyVal","Key","Val","div","HistoryEvent","ev","showThumb","boxColor","etype","details","timestamp","inner","bg","borderRadius","border","mb","moment","format","share","_arr","marketplace","direction","spacing","mr","NFTLarge","History","params","isTailing","setTailing","useInterval","evlist","maxW","variant","disabled","SHOW","colorScheme","HistoryTx","tx","NftHistory","transactions","evs","tx_id","loadNftHistory","Conf","useWindowSize","LoginRequired","rightIcon","alt","Dfinity","createIcon","displayName","viewBox","path","points","d","transform","UploadIcon","fillRule","VerifiedIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","MARKETPLACE_AID","ContentBox","mw","mh","Thumb","thumb_bg","thumb_over","ThumbLarge","NFTMenu","owner","nobuy","maxWidth","textAlign","UseButton","RechargeButton","TransferButton","ApproveButton","TransferLinkButton","SetPriceButton","BurnButton","SocketButton","UnsocketButton","BuyButton","isOpen","onOpen","onClose","useDisclosure","initialRef","React","useRef","initialFocusRef","isCentered","preserveScrollBarGap","precision","step","min","ref","ml","priceval","parseFloat","current","MARKETPLACE_SHARE","alertOpen","setAlertOpen","isDisabled","fontWeight","status","placeholder","toLowerCase","indexOf","spender","rez","approve","allowance","plug_id","socket_id","unsocket","plug","socket","setIsOpen","cancelRef","leastDestructiveRef","useData","cooldown","use","customVar","msg","creatingLink","setCreateLink","link","setLink","transfer_link","prez","nft_purchase","affiliate","burn","rechargeCost","setRechargeCost","diff","recharge_quote","nft_recharge","recharge","NFTPopover","NFTInfo","className","external","MetaDomainTwitter","showLink","MetaDomain","NFT","thumbSize","popoverOpen","setPopover","zIndex","onMouseOver","onMouseOut","sx","pointerEvents","top","left","NFTClaim","nftEnterCode","NFTPage","claimed","setClaimed","setError","claiming","setClaiming","NFTContent","NFTThumb","NFTProInfo","loadingText","claim_link","ctype","crossOrigin","controls","loop","autoPlay","NFTPreview","NFTThumbLarge","marginLeft","surl","href","replace","domainInfo","inventory","verified","response","text","urlSafe","as","rel","target","hostname","pathname","capitalize","charAt","textColor","isDark","qcolor","nowMinutes","things","humanize","consumable","desc","hold","pt","pr","lineHeight","pb","NFTBattery","NFTBatFull","avg_msg_cost_pwr","msg_full","perc","avg_num_ops_left","colorEmpty","wordBreak","textTransform","router_stats","routerCanister","stats","MeterNumber","metric","align","tc","AccountStats","setStats","account_stats","heap_mb","rts_heap_size","mem_mb","rts_memory_size","SLOT","total_accounts","cycles","cycles_recieved","PwrStats","pwr_stats","RouterStats","NftStats","nft_stats","minted","burned","transfers","icall_errors","onCopy","useClipboard","HistoryStats","history_stats","Orchestration","refuel","jobs_success","jobs_fail","DashboardPage","log_get","total_range","total_nft","total_account","total_pwr","total_history","history_range","nft_available","history_available","justify","templateColumns","gap","time","Disclaimer","onAgree","set","closeOnOverlayClick","pl","Nftstorage","open","logo","textDecoration","NftstorageForm","currentKey","validateKey","initialValues","onSubmit","values","validate","field","form","isInvalid","errors","touched","htmlFor","isSubmitting","FileInput","inputRef","createRef","accept","display","multiple","onChange","files","button","click","DUR_IN_MINUTES","presets","storage","PwrPrice","record","valid","pwrPrice","setPwrPrice","useDebounce","ops","speed","changeToStorage","OptionIpfs","changed","fontFamily","OptionIcLite","OptionIcPremium","PricingPresets","getRootProps","getRadioProps","useRadioGroup","defaultValue","group","radio","PresetBox","getInputProps","getCheckboxProps","useRadio","input","checkbox","cursor","borderWidth","boxShadow","_checked","borderColor","_focus","px","py","Mint","MintForm","ProToggle","alignItems","isChecked","checked","form2record","transfer_bind_duration","preset","change","record2request","isDesktop","NFTStorageAPIKey","boxHeadColor","mintFormValidate","collectionId","use_duration","use_id","hold_desc","hold_id","maxChildren","setSubmitting","borderTopLeftRadius","borderTopRightRadius","File","buttonLabel","setFieldValue","f","validateInternal","validateContentInternal","validateExternal","validateExternalType","FormTip","validateThumbInternal","validateDomain","validateName","validateDescriptionOrNone","resize","maxLength","insert","remove","friend","validateAttributeChange","hasError","errText","validateAttributeName","icon","SmallClose","validateTagName","paddingTop","right","boxSize","validateCooldown","dirty","isValid","Check","devGetRecord","keyInternal","InventoryBox","Inventory","maxItems","itemgrid_light","itemgrid","items","cols","rows","Pagination","end","InventoryLarge","lg","prev_page","next_page","Hamburger","ChevronLeft","ChevronRight","ICP_FEE","PageTabs","ICPBOX","mobile","amountRef","trez","pwr_withdraw","transfer_icp","LoginBox","colorMode","toggleColorMode","useColorMode","trigger","Copy","casing","justifyContent","IconButton","ExternalLink","Sun","Moon","InfoOutline","Logo","theme","anvillogo","DesktopMenu","MobileMenu","location","myroot","ArrowBack","MainMenu","App","mapLoaded","anvillogowhite","bottom","opacity","component","exact","margin","PoweredDark","PoweredLight","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","createBrowserHistory","configureStore","reducer","connectRouter","userReducer","nftReducer","historyReducer","inventoryReducer","devTools","middleware","getDefaultMiddleware","concat","routerMiddleware","extendTheme","textStyles","colors","brand","config","initialColorMode","useSystemColorMode","styles","global","body","backgroundAttachment","html","scrollbarWidth","scrollbarColor","background","backgroundColor","wordWrap","store","ReactDOM","StrictMode","getElementById","lockdown","consoleTaming","overrideTaming","localeTaming","errorTaming","errorTrapping","innerHTML","_nftDid","bs","validateDescription","trim","validateExtensionCanister","isNaN","validateHoldId","search","validateUseId","extensionCanister","content_storage","thumb_storage","ArrayToText","TextToArray","TextToSlot","range","anvToE","e8sToIcp","e8sToPwr","eToAnv","icpToE8s","pwrToE8s","_routerDid","defaultRouter","_pwrDid","tokenFromBlob","neuronStakeAccountIdentifier","encodeChunkId","_getCrc","_principal2","token_base","array","checksum","to32bits","getCrc32","array2","ArrayBuffer","DataView","setUint32","splice","bitUnsignedFix","chunkIndex","l","bitShiftRight"],"mappings":"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","file":"static/js/main.a9541da7.chunk.js","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.priceStorage = exports.priceOps = exports.STORAGE_KB_PER_MIN = exports.QUALITY_PRICE = exports.FULLY_CHARGED_MINUTES = exports.FULLY_CHARGED_MESSAGES = exports.AVG_MESSAGE_COST = void 0;\nconst QUALITY_PRICE = 1000n; // max quality price per min\n\nexports.QUALITY_PRICE = QUALITY_PRICE;\nconst STORAGE_KB_PER_MIN = 8n; // prices are in cycles\n\nexports.STORAGE_KB_PER_MIN = STORAGE_KB_PER_MIN;\nconst AVG_MESSAGE_COST = 4000000n; // prices are in cycles\n\nexports.AVG_MESSAGE_COST = AVG_MESSAGE_COST;\nconst FULLY_CHARGED_MINUTES = 8409600n; //(16 * 365 * 24 * 60) 16 years\n\nexports.FULLY_CHARGED_MINUTES = FULLY_CHARGED_MINUTES;\nconst FULLY_CHARGED_MESSAGES = 5840n; // 1 message per day\n\nexports.FULLY_CHARGED_MESSAGES = FULLY_CHARGED_MESSAGES;\n\nconst priceStorage = _ref => {\n let {\n custom,\n content,\n thumb,\n quality,\n ttl\n } = _ref;\n // WARNING: Has to mirror motoko calulcations in nft_interface\n let cost_per_min = STORAGE_KB_PER_MIN * 100n;\n cost_per_min += BigInt(custom) * STORAGE_KB_PER_MIN / 1024n;\n if (content && content.internal) cost_per_min += BigInt(content.internal.size) * STORAGE_KB_PER_MIN / 1024n;\n if (thumb && thumb.internal) cost_per_min += BigInt(thumb.internal.size) * STORAGE_KB_PER_MIN / 1024n;\n cost_per_min += BigInt(Math.pow(quality, 3)) * QUALITY_PRICE;\n return 2n * cost_per_min * (ttl ? BigInt(ttl) : FULLY_CHARGED_MINUTES);\n};\n\nexports.priceStorage = priceStorage;\n\nconst priceOps = _ref2 => {\n let {\n ttl\n } = _ref2;\n return 2n * (ttl ? AVG_MESSAGE_COST * 100n + BigInt(ttl) * AVG_MESSAGE_COST / 60n / 24n : FULLY_CHARGED_MESSAGES * AVG_MESSAGE_COST);\n};\n\nexports.priceOps = priceOps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canisterId = void 0;\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _ledgerDid.idlFactory;\n }\n});\nexports.ledgerCanister = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _ledgerDid = require(\"./declarations/ledger/ledger.did.js\");\n\n// Imports and re-exports candid interface\nconst canisterId = \"ryjl3-tyaaa-aaaaa-aaaba-cai\"; //process.env.NFT_CANISTER_ID;\n\nexports.canisterId = canisterId;\n\nconst ledgerCanister = options => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_ledgerDid.idlFactory, {\n agent,\n canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.ledgerCanister = ledgerCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.historyCanister = void 0;\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _historyDid.idlFactory;\n }\n});\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _historyDid = require(\"./declarations/history/history.did.js\");\n\n// Imports and re-exports candid interface\nconst historyCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_historyDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.historyCanister = historyCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.itemUse = exports.itemTransfer = exports.itemQuality = exports.itemHold = void 0;\nconst itemQuality = {\n light: [{\n label: \"Poor\",\n color: \"#777777\"\n }, {\n label: \"Common\",\n color: \"#000000\"\n }, {\n label: \"Uncommon\",\n color: \"#25a014\"\n }, {\n label: \"Rare\",\n color: \"#0e58a0\"\n }, {\n label: \"Epic\",\n color: \"#851ecc\"\n }, {\n label: \"Legendary\",\n color: \"#bc6104\"\n }, {\n label: \"Artifact\",\n color: \"#c79810\"\n }],\n dark: [{\n label: \"Poor\",\n color: \"#9d9d9d\"\n }, {\n label: \"Common\",\n color: \"#ffffff\"\n }, {\n label: \"Uncommon\",\n color: \"#1eff00\"\n }, {\n label: \"Rare\",\n color: \"#0070dd\"\n }, {\n label: \"Epic\",\n color: \"#a335ee\"\n }, {\n label: \"Legendary\",\n color: \"#ff8000\"\n }, {\n label: \"Artifact\",\n color: \"#e6cc80\"\n }]\n};\nexports.itemQuality = itemQuality;\nconst itemTransfer = [{\n val: \"unrestricted\",\n label: \"Unrestricted transfer\"\n}, {\n val: \"bindsForever\",\n label: \"Binds on transfer\"\n}, {\n val: \"bindsDuration\",\n label: \"Binds on transfer for duration\"\n}];\nexports.itemTransfer = itemTransfer;\nconst itemUse = [{\n val: \"cooldown\",\n label: \"Cooldown\"\n}, {\n val: \"consumable\",\n label: \"Consumable\"\n}];\nexports.itemUse = itemUse;\nconst itemHold = [{\n val: \"external\",\n label: \"Extension managed\"\n}];\nexports.itemHold = itemHold;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrincipalToSlot = exports.PrincipalToIdx = exports.PrincipalFromSlot = exports.PrincipalFromIdx = void 0;\n\nvar _principal = require(\"@dfinity/principal\");\n\nvar _data = require(\"./data\");\n\nconst PrincipalFromIdx = idx => {\n return _principal.Principal.fromUint8Array([...(0, _data.numberToBytesArray)(idx, 8), 1, 1]);\n};\n\nexports.PrincipalFromIdx = PrincipalFromIdx;\n\nconst PrincipalFromSlot = (space, idx) => {\n let start = Number(space[0][0]);\n return PrincipalFromIdx(start + Number(idx));\n};\n\nexports.PrincipalFromSlot = PrincipalFromSlot;\n\nconst PrincipalToIdx = p => {\n let a = [...p.toUint8Array()].slice(0, -2);\n let idx = (0, _data.bytesArrayToNumber)(a);\n return idx;\n};\n\nexports.PrincipalToIdx = PrincipalToIdx;\n\nconst PrincipalToSlot = (space, p) => {\n let idx = PrincipalToIdx(p);\n let start = Number(space[0][0]);\n return idx - start;\n}; // let can = \"pfrbz-maaaa-aaaai-qcmiq-cai\";\n// console.log(can, PrincipalToIdx(Principal.fromText(can)));\n\n\nexports.PrincipalToSlot = PrincipalToSlot;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.accountCanister = void 0;\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _accountDid.idlFactory;\n }\n});\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _accountDid = require(\"./declarations/account/account.did.js\");\n\n// Imports and re-exports candid interface\nconst accountCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_accountDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.accountCanister = accountCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.snapVideoImage = exports.resizeImageP = exports.resizeImage = exports.getImgSize = exports.filesize2text = exports.extractVideoThumb = exports.challengeDraw = void 0;\n\nconst challengeDraw = (ctx, bitmap) => {\n const packedInBits = 16;\n const charWidthBits = 16;\n const packsPerChar = 16;\n const numChar = bitmap.length / packsPerChar;\n let w = numChar * charWidthBits;\n let h = charWidthBits;\n var imd = ctx.createImageData(w, h);\n let a = Array(h).fill(0).map(x => Array(w).fill(0));\n let src = bitmap.map(x => {\n let z = x.toString(2).padStart(16, 0);\n return z;\n });\n\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n let ch = Math.floor(x / charWidthBits);\n let chp = y * 16 + x % 16;\n let num = ch * packsPerChar + Math.floor(chp / packedInBits);\n a[y][x] = src[num][16 - chp % 16] == \"1\" ? 1 : 0; // a[y][x] = Math.floor(Math.random() * 2);\n }\n }\n\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n let p = (y * w + x) * 4;\n imd.data[p + 0] = 0;\n imd.data[p + 1] = 0;\n imd.data[p + 2] = 0;\n imd.data[p + 3] = a[y][x] ? 255 : 0;\n }\n } // img.data[z + 0] = 0;\n // img.data[z + 1] = 0;\n // img.data[z + 2] = 0;\n // img.data[z + 3] = n[b]*255;\n\n\n ctx.putImageData(imd, 0, 0);\n};\n\nexports.challengeDraw = challengeDraw;\n\nconst resizeImage = function (src, MAX_WIDTH, MAX_HEIGHT) {\n let crop = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return new Promise(resolve => {\n var img = new Image();\n const already_url = typeof src !== \"object\" ? src.startsWith(\"blob:\") : false;\n\n img.onload = function () {\n // if (!already_url) URL.revokeObjectURL(tmpUrl);\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n var width = img.width;\n var height = img.height;\n var ctx2 = canvas.getContext(\"2d\");\n\n if (!crop) {\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n\n canvas.width = width;\n canvas.height = height;\n ctx2.drawImage(img, 0, 0, width, height);\n } else {\n let ratio = MAX_WIDTH / MAX_HEIGHT;\n let scale = MAX_WIDTH / width;\n if (height * scale < MAX_HEIGHT) scale = MAX_HEIGHT / height;\n width *= scale;\n height *= scale;\n canvas.width = MAX_WIDTH;\n canvas.height = MAX_HEIGHT;\n ctx2.drawImage(img, (MAX_WIDTH - width) / 2, (MAX_HEIGHT - height) / 2, width, height);\n }\n\n canvas.toBlob(function (blob) {\n let url = URL.createObjectURL(blob); // console.log(\"BLOB\", blob);\n\n resolve({\n type: \"image/jpeg\",\n size: blob.size,\n url\n });\n }, \"image/jpeg\", 0.95);\n };\n\n let tmpUrl = already_url ? src : URL.createObjectURL(src);\n img.src = tmpUrl;\n });\n};\n\nexports.resizeImage = resizeImage;\n\nconst resizeImageP = function (src, max_w, max_h) {\n let opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return new Promise(resolve => {\n resizeImage(src, max_w, max_h, opts, resp => {\n resolve(resp);\n });\n });\n};\n\nexports.resizeImageP = resizeImageP;\n\nconst snapVideoImage = video => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n canvas.getContext(\"2d\").drawImage(video, 0, 0, canvas.width, canvas.height);\n var image = canvas.toDataURL();\n var success = image.length > 100000;\n if (success) return image;else return false;\n};\n\nexports.snapVideoImage = snapVideoImage;\n\nconst extractVideoThumb = objurl => {\n return new Promise(async (resolve, reject) => {\n const video = document.createElement(\"video\");\n\n const capture = async () => {\n await delay(300);\n let img;\n\n if (img = snapVideoImage(video)) {\n video.pause();\n video.removeEventListener(\"timeupdate\", capture);\n let info = {\n img,\n width: video.videoWidth,\n height: video.videoHeight,\n duration: video.duration\n };\n resolve(info);\n }\n };\n\n video.addEventListener(\"timeupdate\", capture);\n video.src = objurl;\n video.muted = true;\n video.preload = \"metadata\";\n video.playsInline = true;\n video.play().catch(err => {\n reject(err);\n });\n });\n};\n\nexports.extractVideoThumb = extractVideoThumb;\n\nconst getImgSize = src => {\n return new Promise(resolve => {\n var img = document.createElement(\"img\");\n img.src = src;\n\n img.onload = function () {\n var w = img.width;\n var h = img.height;\n resolve({\n w,\n h\n });\n };\n });\n};\n\nexports.getImgSize = getImgSize;\n\nconst delay = ms => {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n};\n\nconst filesize2text = bytes => {\n let lbl;\n let val = bytes;\n let metrics = [\"bytes\", \"kb\", \"mb\", \"gb\", \"tb\"];\n let i;\n\n for (i = 0; i < metrics.length; i++) {\n if (val > 1000) val = Math.round(val / 100) / 10;else break;\n }\n\n lbl = metrics[i];\n return val + \" \" + lbl;\n};\n\nexports.filesize2text = filesize2text;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uploadFile = exports.toHexString = exports.numberToBytesArray = exports.jsonToNat8 = exports.generateKeyHashPair = exports.fromHexString = exports.encodeLink = exports.encodeArrayBuffer = exports.djb2xor = exports.decodeLink = exports.chunkBlob = exports.bytesToBase58 = exports.bytesArrayToNumber = exports.blobPrepare = exports.base58ToBytes = exports.BigIntToString = void 0;\n\nvar _baseX = _interopRequireDefault(require(\"base-x\"));\n\nvar _sha = require(\"@dfinity/principal/lib/cjs/utils/sha224\");\n\nvar _idl = require(\"@dfinity/candid/lib/cjs/idl\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BASE58 = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nvar bs58 = (0, _baseX.default)(BASE58);\n\nconst bytesArrayToNumber = a => {\n let n = 0;\n\n for (let i = a.length - 1; i >= 0; i--) {\n n += Math.pow(256, a.length - i - 1) * a[i];\n }\n\n return n;\n};\n\nexports.bytesArrayToNumber = bytesArrayToNumber;\n\nconst BigIntToString = x => {\n if (typeof x === \"bigint\") return x.toString();\n\n if (Array.isArray(x)) {\n return x.map(y => BigIntToString(y));\n }\n\n if (typeof x === \"object\") return Object.fromEntries(Object.keys(x).map(k => {\n return [k, BigIntToString(x[k])];\n }));\n return x;\n};\n\nexports.BigIntToString = BigIntToString;\n\nconst numberToBytesArray = (n, size) => {\n n = Number(n); // size in bytes\n\n const a = Array(size).fill(0);\n\n for (let i = 0; i < size; i++) {\n a[i] = n & 255;\n n = n >>> 8;\n }\n\n return new Uint8Array(a.reverse());\n};\n\nexports.numberToBytesArray = numberToBytesArray;\n\nconst generateKeyHashPair = function () {\n let getRandomValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n let key = getRandomValues ? getRandomValues(new Uint8Array(20)) : window.crypto.getRandomValues(new Uint8Array(20));\n var hash = (0, _sha.sha224)(key);\n return {\n key,\n hash\n };\n};\n\nexports.generateKeyHashPair = generateKeyHashPair;\n\nconst decodeLink = code => {\n let buf = bs58.decode(code);\n let slot = bytesArrayToNumber(buf.slice(0, 3));\n let tokenIndex = bytesArrayToNumber(buf.slice(3, 5));\n let key = buf.slice(5);\n return {\n slot,\n tokenIndex,\n key\n };\n};\n\nexports.decodeLink = decodeLink;\n\nconst encodeLink = (slot, tokenIndex, key) => {\n let a = numberToBytesArray(slot, 3);\n let b = numberToBytesArray(tokenIndex, 2);\n let x = new Uint8Array([...a, ...b, ...key]);\n return bs58.encode(x);\n};\n\nexports.encodeLink = encodeLink;\n\nconst bytesToBase58 = bytes => {\n return bs58.encode(new Uint8Array([...bytes]));\n};\n\nexports.bytesToBase58 = bytesToBase58;\n\nconst base58ToBytes = x => {\n return [...bs58.decode(x)];\n};\n\nexports.base58ToBytes = base58ToBytes;\n\nconst encodeArrayBuffer = file => Array.from(new Uint8Array(file));\n\nexports.encodeArrayBuffer = encodeArrayBuffer;\n\nconst jsonToNat8 = async json => {\n const bl = new Blob([JSON.stringify(json)], {\n type: \"application/json\"\n });\n const buffer = await bl.arrayBuffer();\n const arr = encodeArrayBuffer(buffer);\n return arr;\n};\n\nexports.jsonToNat8 = jsonToNat8;\n\nconst fromHexString = hexString => hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16));\n\nexports.fromHexString = fromHexString;\n\nconst toHexString = bytes => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\"); // export const toHexString = (byteArray) => {\n// return Array.from(byteArray, function (byte) {\n// return (\"0\" + (byte & 0xff).toString(16)).slice(-2);\n// }).join(\"\");\n// };\n\n\nexports.toHexString = toHexString;\n\nconst chunkBlob = async url_or_blob => {\n let blob;\n if (typeof url_or_blob === \"string\") blob = await fetch(url_or_blob).then(r => r.blob());else blob = url_or_blob;\n let size = blob.size;\n let chunkSize = 1024 * 512;\n let chunks = Math.ceil(size / chunkSize);\n let r = [];\n\n for (let i = 0; i < chunks; i++) {\n r.push(blob.slice(i * chunkSize, (i + 1) * chunkSize));\n }\n\n return r;\n};\n\nexports.chunkBlob = chunkBlob;\n\nconst blobPrepare = async chunk => Array.from(new Uint8Array(await chunk.arrayBuffer()));\n\nexports.blobPrepare = blobPrepare;\n\nconst djb2xor = str => {\n // The normal djb2 from Text.hash is hard to do in js because overflow looses precision\n let len = str.length;\n let h = 5381;\n\n for (let i = 0; i < len; i++) {\n h = h * 33 ^ str.charCodeAt(i);\n }\n\n return h >>> 0;\n};\n\nexports.djb2xor = djb2xor;\n\nconst uploadFile = async function (nft, tokenIndex, position, chunks, subaccount) {\n let tried = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n try {\n await Promise.all(chunks.map(async (chunk, idx) => {\n return nft.upload_chunk({\n subaccount,\n position: {\n [position]: null\n },\n chunkIdx: idx,\n tokenIndex,\n data: await blobPrepare(chunk)\n });\n })).then(re => {});\n } catch (e) {\n await delay(2000 + tried * 1000);\n if (tried < 3) return await uploadFile(nft, tokenIndex, position, chunks, subaccount, tried + 1);else throw e;\n }\n};\n\nexports.uploadFile = uploadFile;\n\nconst delay = ms => new Promise((resolve, reject) => setTimeout(resolve, ms));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const TokenIdentifier = IDL.Nat64;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const User = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const Request__1 = IDL.Record({\n 'token': TokenIdentifier,\n 'owner': User,\n 'spender': IDL.Principal\n });\n const Balance = IDL.Nat64;\n const CommonError = IDL.Variant({\n 'InvalidToken': IDL.Null,\n 'Other': IDL.Text\n });\n const Response__1 = IDL.Variant({\n 'ok': Balance,\n 'err': CommonError\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const ApproveRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'subaccount': IDL.Opt(SubAccount),\n 'allowance': Balance,\n 'spender': IDL.Principal\n });\n const TransactionId = IDL.Vec(IDL.Nat8);\n const ApproveResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const BalanceRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User\n });\n const BalanceResponse = IDL.Variant({\n 'ok': Balance,\n 'err': CommonError\n });\n const BearerResponse = IDL.Variant({\n 'ok': AccountIdentifier,\n 'err': CommonError\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const BurnRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const TransferResponseError = IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'NotTransferable': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n });\n const BurnResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': TransferResponseError\n });\n const ClaimLinkRequest = IDL.Record({\n 'to': User,\n 'key': IDL.Vec(IDL.Nat8),\n 'token': TokenIdentifier\n });\n const ClaimLinkResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'Rejected': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const TokenIndex = IDL.Nat16;\n const FetchChunkRequest = IDL.Record({\n 'tokenIndex': TokenIndex,\n 'subaccount': IDL.Opt(SubAccount),\n 'chunkIdx': IDL.Nat32,\n 'position': IDL.Variant({\n 'thumb': IDL.Null,\n 'content': IDL.Null\n })\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const Request = IDL.Record({\n 'url': IDL.Text,\n 'method': IDL.Text,\n 'body': IDL.Vec(IDL.Nat8),\n 'headers': IDL.Vec(HeaderField)\n });\n const Token = IDL.Record({\n 'key': IDL.Text,\n 'sha256': IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'index': IDL.Nat,\n 'content_encoding': IDL.Text\n });\n const CallbackFunc = IDL.Func([], [], []);\n const StreamingStrategy = IDL.Variant({\n 'Callback': IDL.Record({\n 'token': Token,\n 'callback': CallbackFunc\n })\n });\n const Response = IDL.Record({\n 'body': IDL.Vec(IDL.Nat8),\n 'headers': IDL.Vec(HeaderField),\n 'streaming_strategy': IDL.Opt(StreamingStrategy),\n 'status_code': IDL.Nat16\n });\n const Callback = IDL.Record({\n 'token': IDL.Opt(Token),\n 'body': IDL.Vec(IDL.Nat8)\n });\n const ContentType = IDL.Text;\n const IPFS_CID = IDL.Text;\n const ExternalUrl = IDL.Text;\n const Content = IDL.Variant({\n 'internal': IDL.Record({\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'ipfs': IDL.Record({\n 'cid': IPFS_CID,\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'external': ExternalUrl\n });\n const DomainName = IDL.Text;\n const Share = IDL.Nat16;\n const CustomData = IDL.Vec(IDL.Nat8);\n const Quality = IDL.Nat8;\n const ItemLore = IDL.Text;\n const ItemName = IDL.Text;\n const Tag = IDL.Text;\n const Tags = IDL.Vec(Tag);\n const Attribute = IDL.Tuple(IDL.Text, IDL.Nat16);\n const Attributes = IDL.Vec(Attribute);\n const ItemTransfer = IDL.Variant({\n 'unrestricted': IDL.Null,\n 'bindsForever': IDL.Null,\n 'bindsDuration': IDL.Nat32\n });\n const Metadata = IDL.Record({\n 'thumb': Content,\n 'created': IDL.Nat32,\n 'content': IDL.Opt(Content),\n 'domain': IDL.Opt(DomainName),\n 'authorShare': Share,\n 'custom': IDL.Opt(CustomData),\n 'quality': Quality,\n 'lore': IDL.Opt(ItemLore),\n 'name': IDL.Opt(ItemName),\n 'tags': Tags,\n 'secret': IDL.Bool,\n 'author': AccountIdentifier,\n 'entropy': IDL.Vec(IDL.Nat8),\n 'attributes': Attributes,\n 'transfer': ItemTransfer,\n 'rechargeable': IDL.Bool\n });\n const Sockets = IDL.Vec(TokenIdentifier);\n const Price = IDL.Record({\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'amount': IDL.Nat64\n });\n const MetavarsFrozen = IDL.Record({\n 'ttl': IDL.Opt(IDL.Nat32),\n 'cooldownUntil': IDL.Opt(IDL.Nat32),\n 'boundUntil': IDL.Opt(IDL.Nat32),\n 'sockets': Sockets,\n 'history': IDL.Vec(IDL.Vec(IDL.Nat8)),\n 'pwrOps': IDL.Nat64,\n 'pwrStorage': IDL.Nat64,\n 'allowance': IDL.Opt(IDL.Principal),\n 'price': Price\n });\n const MetadataResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'data': Metadata,\n 'vars': MetavarsFrozen,\n 'bearer': AccountIdentifier\n }),\n 'err': CommonError\n });\n const CustomVar = IDL.Vec(IDL.Nat8);\n const MetadataInput = IDL.Record({\n 'ttl': IDL.Opt(IDL.Nat32),\n 'thumb': Content,\n 'content': IDL.Opt(Content),\n 'domain': IDL.Opt(DomainName),\n 'authorShare': Share,\n 'custom': IDL.Opt(CustomData),\n 'quality': Quality,\n 'lore': IDL.Opt(IDL.Text),\n 'name': IDL.Opt(IDL.Text),\n 'tags': Tags,\n 'secret': IDL.Bool,\n 'attributes': Attributes,\n 'price': Price,\n 'transfer': ItemTransfer,\n 'rechargeable': IDL.Bool,\n 'customVar': IDL.Opt(CustomVar)\n });\n const MintRequest = IDL.Record({\n 'metadata': MetadataInput,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const MintResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'tokenIndex': TokenIndex,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'Pwr': TransferResponseError,\n 'Invalid': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'ClassError': IDL.Text,\n 'OutOfMemory': IDL.Null\n })\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const PlugRequest = IDL.Record({\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const SocketError = IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'NotLegitimateCaller': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'ClassError': IDL.Text,\n 'Other': IDL.Text,\n 'SocketsFull': IDL.Null\n });\n const PlugResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'SocketError': SocketError,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const PurchaseRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance\n })),\n 'amount': Balance\n });\n const Time = IDL.Int;\n const NFTPurchase = IDL.Record({\n 'created': Time,\n 'token': TokenIdentifier,\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'seller': AccountIdentifier,\n 'author': IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n }),\n 'recharge': Balance,\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance\n })),\n 'buyer': AccountIdentifier,\n 'amount': Balance\n });\n const PurchaseResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'purchase': NFTPurchase,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'TreasuryNotifyFailed': IDL.Null,\n 'Refunded': IDL.Null,\n 'InsufficientPayment': Balance,\n 'ErrorWhileRefunding': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'NotForSale': IDL.Null,\n 'NotEnoughToRefund': IDL.Null\n })\n });\n const RechargeRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'amount': Balance\n });\n const RechargeResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': IDL.Variant({\n 'InsufficientPayment': Balance,\n 'RechargeUnnecessary': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null\n })\n });\n const SetPriceRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'price': Price\n });\n const SetPriceResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'TooHigh': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'NotTransferable': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'TooLow': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const SocketRequest = IDL.Record({\n 'socket': TokenIdentifier,\n 'plug': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const SocketResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': SocketError\n });\n const SupplyResponse = IDL.Variant({\n 'ok': Balance,\n 'err': CommonError\n });\n const TransferRequest = IDL.Record({\n 'to': User,\n 'token': TokenIdentifier,\n 'from': User,\n 'memo': Memo,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const TransferResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': TransferResponseError\n });\n const TransferLinkRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'from': User,\n 'hash': IDL.Vec(IDL.Nat8),\n 'subaccount': IDL.Opt(SubAccount)\n });\n const TransferLinkResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const UnsocketRequest = IDL.Record({\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const UnplugError = IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'NotLegitimateCaller': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'Other': IDL.Text\n });\n const UnplugResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': UnplugError\n });\n const UnsocketResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'UnplugError': UnplugError,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const UploadChunkRequest = IDL.Record({\n 'tokenIndex': TokenIndex,\n 'data': IDL.Vec(IDL.Nat8),\n 'subaccount': IDL.Opt(SubAccount),\n 'chunkIdx': IDL.Nat32,\n 'position': IDL.Variant({\n 'thumb': IDL.Null,\n 'content': IDL.Null\n })\n });\n const Cooldown = IDL.Nat32;\n const ItemUse = IDL.Variant({\n 'consume': IDL.Null,\n 'prove': IDL.Null,\n 'cooldown': Cooldown\n });\n const UseRequest = IDL.Record({\n 'use': ItemUse,\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'customVar': IDL.Opt(CustomVar)\n });\n const UseResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'ExtensionError': IDL.Text,\n 'Other': IDL.Text,\n 'OnCooldown': IDL.Null\n })\n });\n const Class = IDL.Service({\n 'allowance': IDL.Func([Request__1], [Response__1], ['query']),\n 'approve': IDL.Func([ApproveRequest], [ApproveResponse], []),\n 'balance': IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'bearer': IDL.Func([TokenIdentifier], [BearerResponse], ['query']),\n 'burn': IDL.Func([BurnRequest], [BurnResponse], []),\n 'claim_link': IDL.Func([ClaimLinkRequest], [ClaimLinkResponse], []),\n 'config_set': IDL.Func([Config], [], []),\n 'fetch_chunk': IDL.Func([FetchChunkRequest], [IDL.Opt(IDL.Vec(IDL.Nat8))], []),\n 'http_request': IDL.Func([Request], [Response], ['query']),\n 'http_request_streaming_callback': IDL.Func([Token], [Callback], ['query']),\n 'metadata': IDL.Func([TokenIdentifier], [MetadataResponse], ['query']),\n 'mint': IDL.Func([MintRequest], [MintResponse], []),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'plug': IDL.Func([PlugRequest], [PlugResponse], []),\n 'purchase': IDL.Func([PurchaseRequest], [PurchaseResponse], []),\n 'recharge': IDL.Func([RechargeRequest], [RechargeResponse], []),\n 'set_price': IDL.Func([SetPriceRequest], [SetPriceResponse], []),\n 'socket': IDL.Func([SocketRequest], [SocketResponse], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'transfers': IDL.Nat32,\n 'minted': IDL.Nat16,\n 'cycles': IDL.Nat,\n 'icall_errors': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'burned': IDL.Nat32,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'supply': IDL.Func([TokenIdentifier], [SupplyResponse], ['query']),\n 'transfer': IDL.Func([TransferRequest], [TransferResponse], []),\n 'transfer_link': IDL.Func([TransferLinkRequest], [TransferLinkResponse], []),\n 'unplug': IDL.Func([UnsocketRequest], [UnplugResponse], []),\n 'unsocket': IDL.Func([UnsocketRequest], [UnsocketResponse], []),\n 'upload_chunk': IDL.Func([UploadChunkRequest], [], []),\n 'use': IDL.Func([UseRequest], [UseResponse], []),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config__1 = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const LogEvent = IDL.Record({\n 'msg': IDL.Text,\n 'time': IDL.Nat32\n });\n const Oracle__1 = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Router = IDL.Service({\n 'config_get': IDL.Func([], [Config__1], ['query']),\n 'config_set': IDL.Func([Config__1], [], []),\n 'create_local_canisters': IDL.Func([], [], []),\n 'event_history_full': IDL.Func([], [], []),\n 'event_nft_full': IDL.Func([IDL.Principal], [], []),\n 'log_get': IDL.Func([], [IDL.Vec(LogEvent)], ['query']),\n 'oracle_set': IDL.Func([Oracle__1], [], []),\n 'refuel': IDL.Func([], [], []),\n 'refuel_unoptimised': IDL.Func([], [], []),\n 'reinstall': IDL.Func([], [], []),\n 'settings_get': IDL.Func([], [Config, Oracle], ['query']),\n 'start_all': IDL.Func([], [], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'jobs_fail': IDL.Nat,\n 'cycles_recieved': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'jobs_success': IDL.Nat,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'maintenance': IDL.Bool,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text,\n 'refuel': IDL.Nat\n })], ['query']),\n 'stop_all': IDL.Func([], [], []),\n 'upgrade': IDL.Func([], [], []),\n 'wallet_receive': IDL.Func([], [], []),\n 'wasm_set': IDL.Func([IDL.Record({\n 'name': IDL.Text,\n 'wasm': IDL.Vec(IDL.Nat8)\n })], [], [])\n });\n return Router;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const AccountBalanceArgs = IDL.Record({\n account: AccountIdentifier\n });\n const Tokens = IDL.Record({\n e8s: IDL.Nat64\n });\n const Memo = IDL.Nat64;\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TimeStamp = IDL.Record({\n timestamp_nanos: IDL.Nat64\n });\n const TransferArgs = IDL.Record({\n to: AccountIdentifier,\n fee: Tokens,\n memo: Memo,\n from_subaccount: IDL.Opt(SubAccount),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const BlockIndex = IDL.Nat64;\n const TransferError = IDL.Variant({\n TxTooOld: IDL.Record({\n allowed_window_nanos: IDL.Nat64\n }),\n BadFee: IDL.Record({\n expected_fee: Tokens\n }),\n TxDuplicate: IDL.Record({\n duplicate_of: BlockIndex\n }),\n TxCreatedInFuture: IDL.Null,\n InsufficientFunds: IDL.Record({\n balance: Tokens\n })\n });\n const TransferResult = IDL.Variant({\n Ok: BlockIndex,\n Err: TransferError\n });\n const NotifyArgs = IDL.Record({\n to_subaccount: IDL.Opt(SubAccount),\n from_subaccount: IDL.Opt(SubAccount),\n // notify_using_protobuf: IDL.Bool,\n to_canister: IDL.Principal,\n max_fee: Tokens,\n block_height: BlockIndex\n });\n const NotifyResult = IDL.Variant({\n Ok: IDL.Vec(IDL.Nat8),\n Err: IDL.Text\n });\n return IDL.Service({\n account_balance: IDL.Func([AccountBalanceArgs], [Tokens], [\"query\"]),\n transfer: IDL.Func([TransferArgs], [TransferResult], []),\n notify_dfx: IDL.Func([NotifyArgs], [NotifyResult], [])\n });\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const User__2 = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const BalanceRequest = IDL.Record({\n 'user': User__2\n });\n const Balance__1 = IDL.Nat64;\n const Oracle__1 = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const BalanceResponse = IDL.Record({\n 'anv': Balance__1,\n 'pwr': Balance__1,\n 'oracle': Oracle__1\n });\n const AccountIdentifier__2 = IDL.Vec(IDL.Nat8);\n const Balance__3 = IDL.Nat64;\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const ContentType = IDL.Text;\n const IPFS_CID = IDL.Text;\n const ExternalUrl = IDL.Text;\n const Content = IDL.Variant({\n 'internal': IDL.Record({\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'ipfs': IDL.Record({\n 'cid': IPFS_CID,\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'external': ExternalUrl\n });\n const DomainName = IDL.Text;\n const Share = IDL.Nat16;\n const CustomData = IDL.Vec(IDL.Nat8);\n const Quality = IDL.Nat8;\n const Tag = IDL.Text;\n const Tags = IDL.Vec(Tag);\n const Attribute = IDL.Tuple(IDL.Text, IDL.Nat16);\n const Attributes = IDL.Vec(Attribute);\n const Price = IDL.Record({\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'amount': IDL.Nat64\n });\n const ItemTransfer = IDL.Variant({\n 'unrestricted': IDL.Null,\n 'bindsForever': IDL.Null,\n 'bindsDuration': IDL.Nat32\n });\n const CustomVar = IDL.Vec(IDL.Nat8);\n const MetadataInput = IDL.Record({\n 'ttl': IDL.Opt(IDL.Nat32),\n 'thumb': Content,\n 'content': IDL.Opt(Content),\n 'domain': IDL.Opt(DomainName),\n 'authorShare': Share,\n 'custom': IDL.Opt(CustomData),\n 'quality': Quality,\n 'lore': IDL.Opt(IDL.Text),\n 'name': IDL.Opt(IDL.Text),\n 'tags': Tags,\n 'secret': IDL.Bool,\n 'attributes': Attributes,\n 'price': Price,\n 'transfer': ItemTransfer,\n 'rechargeable': IDL.Bool,\n 'customVar': IDL.Opt(CustomVar)\n });\n const SubAccount__2 = IDL.Vec(IDL.Nat8);\n const MintRequest = IDL.Record({\n 'metadata': MetadataInput,\n 'user': User__2,\n 'subaccount': IDL.Opt(SubAccount__2)\n });\n const TokenIndex = IDL.Nat16;\n const TransactionId = IDL.Vec(IDL.Nat8);\n const TransferResponseError = IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'NotTransferable': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n });\n const MintResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'tokenIndex': TokenIndex,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'Pwr': TransferResponseError,\n 'Invalid': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'ClassError': IDL.Text,\n 'OutOfMemory': IDL.Null\n })\n });\n const TokenIdentifier = IDL.Nat64;\n const Balance__2 = IDL.Nat64;\n const PurchaseRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User__2,\n 'subaccount': IDL.Opt(SubAccount__2),\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance__2\n })),\n 'amount': Balance__2\n });\n const Time = IDL.Int;\n const NFTPurchase = IDL.Record({\n 'created': Time,\n 'token': TokenIdentifier,\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'seller': AccountIdentifier,\n 'author': IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n }),\n 'recharge': Balance__2,\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance__2\n })),\n 'buyer': AccountIdentifier,\n 'amount': Balance__2\n });\n const PurchaseResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'purchase': NFTPurchase,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'TreasuryNotifyFailed': IDL.Null,\n 'Refunded': IDL.Null,\n 'InsufficientPayment': Balance__2,\n 'ErrorWhileRefunding': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'NotForSale': IDL.Null,\n 'NotEnoughToRefund': IDL.Null\n })\n });\n const RechargeRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User__2,\n 'subaccount': IDL.Opt(SubAccount__2),\n 'amount': Balance__2\n });\n const RechargeResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': IDL.Variant({\n 'InsufficientPayment': Balance__2,\n 'RechargeUnnecessary': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null\n })\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const User__1 = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const SubAccount__1 = IDL.Vec(IDL.Nat8);\n const PurchaseClaimRequest = IDL.Record({\n 'user': User__1,\n 'subaccount': IDL.Opt(SubAccount__1)\n });\n const ICP = IDL.Record({\n 'e8s': IDL.Nat64\n });\n const BlockIndex = IDL.Nat64;\n const TransferError = IDL.Variant({\n 'TxTooOld': IDL.Record({\n 'allowed_window_nanos': IDL.Nat64\n }),\n 'BadFee': IDL.Record({\n 'expected_fee': ICP\n }),\n 'TxDuplicate': IDL.Record({\n 'duplicate_of': BlockIndex\n }),\n 'TxCreatedInFuture': IDL.Null,\n 'InsufficientFunds': IDL.Record({\n 'balance': ICP\n })\n });\n const PurchaseClaimResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': IDL.Vec(IDL.Nat8)\n }),\n 'err': IDL.Variant({\n 'PaymentTooSmall': IDL.Null,\n 'Ledger': TransferError\n })\n });\n const PurchaseIntentRequest = IDL.Record({\n 'user': User__1,\n 'subaccount': IDL.Opt(SubAccount__1)\n });\n const AccountIdentifier__1 = IDL.Vec(IDL.Nat8);\n const PurchaseIntentResponse = IDL.Variant({\n 'ok': AccountIdentifier__1,\n 'err': IDL.Text\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n 'to': User__1,\n 'from': User__1,\n 'memo': Memo,\n 'subaccount': IDL.Opt(SubAccount__1),\n 'amount': Balance__1\n });\n const TransferResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': IDL.Vec(IDL.Nat8)\n }),\n 'err': TransferResponseError\n });\n const User = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat64;\n const WithdrawRequest = IDL.Record({\n 'to': User,\n 'from': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'amount': Balance\n });\n const WithdrawResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': IDL.Vec(IDL.Nat8)\n }),\n 'err': TransferResponseError\n });\n const Class = IDL.Service({\n 'balance': IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'balanceAddExternal': IDL.Func([IDL.Variant({\n 'anv': IDL.Null,\n 'pwr': IDL.Null\n }), AccountIdentifier__2, Balance__3], [], []),\n 'config_set': IDL.Func([Config], [], []),\n 'nft_mint': IDL.Func([CanisterSlot, MintRequest], [MintResponse], []),\n 'nft_purchase': IDL.Func([CanisterSlot, PurchaseRequest], [PurchaseResponse], []),\n 'nft_recharge': IDL.Func([CanisterSlot, RechargeRequest], [RechargeResponse], []),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'pwr_purchase_claim': IDL.Func([PurchaseClaimRequest], [PurchaseClaimResponse], []),\n 'pwr_purchase_intent': IDL.Func([PurchaseIntentRequest], [PurchaseIntentResponse], []),\n 'pwr_transfer': IDL.Func([TransferRequest], [TransferResponse], []),\n 'pwr_withdraw': IDL.Func([WithdrawRequest], [WithdrawResponse], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'total_accounts': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'mint_accumulated': IDL.Nat64,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'icp_withdrawn': IDL.Nat64,\n 'fees_charged': IDL.Nat64,\n 'distributed_anvil': IDL.Nat64,\n 'distributed_seller': IDL.Nat64,\n 'recharge_accumulated': IDL.Nat64,\n 'icp_deposited': IDL.Nat64,\n 'distributed_author': IDL.Nat64,\n 'distributed_marketplace': IDL.Nat64,\n 'purchases_accumulated': IDL.Nat64,\n 'rts_heap_size': IDL.Nat,\n 'distributed_affiliate': IDL.Nat64,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const TokenIndex = IDL.Nat16;\n const TransactionId = IDL.Vec(IDL.Nat8);\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const TokenIdentifier__1 = IDL.Nat64;\n const TokenIdentifier = IDL.Nat64;\n const AddressInfo = IDL.Record({\n 'background': TokenIdentifier,\n 'name': IDL.Text,\n 'avatar': TokenIdentifier\n });\n const AccountMeta = IDL.Record({\n 'info': IDL.Opt(AddressInfo),\n 'transactions': IDL.Vec(TransactionId)\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Class = IDL.Service({\n 'add': IDL.Func([AccountIdentifier, TokenIndex], [], []),\n 'add_transaction': IDL.Func([AccountIdentifier, TransactionId], [], []),\n 'config_set': IDL.Func([Config], [], []),\n 'list': IDL.Func([AccountIdentifier, IDL.Nat, IDL.Nat], [IDL.Vec(TokenIdentifier__1)], ['query']),\n 'meta': IDL.Func([AccountIdentifier], [IDL.Opt(AccountMeta)], ['query']),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'rem': IDL.Func([AccountIdentifier, TokenIndex], [], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'total_accounts': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const Timestamp = IDL.Int;\n const Memo = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat64;\n const EventFungibleTransaction = IDL.Record({\n 'to': AccountIdentifier,\n 'created': Timestamp,\n 'from': AccountIdentifier,\n 'memo': Memo,\n 'amount': Balance\n });\n const AnvEvent = IDL.Variant({\n 'transfer': EventFungibleTransaction\n });\n const Cooldown = IDL.Nat32;\n const ItemUse = IDL.Variant({\n 'consume': IDL.Null,\n 'prove': IDL.Null,\n 'cooldown': Cooldown\n });\n const TokenIdentifier = IDL.Nat64;\n const Share = IDL.Nat16;\n const Price = IDL.Record({\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'amount': IDL.Nat64\n });\n const Time = IDL.Int;\n const NFTPurchase = IDL.Record({\n 'created': Time,\n 'token': TokenIdentifier,\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'seller': AccountIdentifier,\n 'author': IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n }),\n 'recharge': Balance,\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance\n })),\n 'buyer': AccountIdentifier,\n 'amount': Balance\n });\n const NftEvent = IDL.Variant({\n 'use': IDL.Record({\n 'use': ItemUse,\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': AccountIdentifier\n }),\n 'socket': IDL.Record({\n 'created': Timestamp,\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': AccountIdentifier\n }),\n 'unsocket': IDL.Record({\n 'created': Timestamp,\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': AccountIdentifier\n }),\n 'burn': IDL.Record({\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': AccountIdentifier\n }),\n 'mint': IDL.Record({\n 'pwr': Balance,\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'user': AccountIdentifier\n }),\n 'approve': IDL.Record({\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'user': AccountIdentifier,\n 'spender': IDL.Principal\n }),\n 'price': IDL.Record({\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'user': AccountIdentifier,\n 'price': Price\n }),\n 'transfer': IDL.Record({\n 'to': AccountIdentifier,\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'from': AccountIdentifier,\n 'memo': Memo\n }),\n 'purchase': NFTPurchase\n });\n const PwrWithdraw = IDL.Record({\n 'to': AccountIdentifier,\n 'created': Timestamp,\n 'from': AccountIdentifier,\n 'amount': Balance\n });\n const EventFungibleMint = IDL.Record({\n 'created': Timestamp,\n 'user': AccountIdentifier,\n 'amount': Balance\n });\n const PwrEvent = IDL.Variant({\n 'withdraw': PwrWithdraw,\n 'mint': EventFungibleMint,\n 'transfer': EventFungibleTransaction\n });\n const EventInfo__1 = IDL.Variant({\n 'anv': AnvEvent,\n 'nft': NftEvent,\n 'pwr': PwrEvent\n });\n const AddResponse = IDL.Vec(IDL.Nat8);\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const EventIndex = IDL.Nat32;\n const EventInfo = IDL.Variant({\n 'anv': AnvEvent,\n 'nft': NftEvent,\n 'pwr': PwrEvent\n });\n const Event = IDL.Record({\n 'hash': IDL.Vec(IDL.Nat8),\n 'info': EventInfo\n });\n const InfoResponse = IDL.Record({\n 'total': EventIndex,\n 'previous': IDL.Opt(IDL.Principal)\n });\n const ListRequest = IDL.Record({\n 'to': EventIndex,\n 'from': EventIndex\n });\n const ListResponse = IDL.Vec(IDL.Opt(Event));\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Class = IDL.Service({\n 'add': IDL.Func([EventInfo__1], [AddResponse], []),\n 'config_set': IDL.Func([Config], [], []),\n 'get': IDL.Func([EventIndex], [IDL.Opt(Event)], ['query']),\n 'info': IDL.Func([], [InfoResponse], ['query']),\n 'list': IDL.Func([ListRequest], [ListResponse], ['query']),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'transactions': IDL.Nat32,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","export default __webpack_public_path__ + \"static/media/anvillogo.fe033229.svg\";","export default __webpack_public_path__ + \"static/media/anvillogowhite.3858a343.svg\";","export default __webpack_public_path__ + \"static/media/blueflame.62380f8e.svg\";","import { AuthClient } from \"@dfinity/auth-client\";\n// import { LedgerIdentity } from \"./ledger/identity\";\nimport { LedgerIdentity } from \"@dfinity/identity-ledgerhq\";\n\nlet client = null;\n\nconst auth = {\n client,\n};\n\nauth.create = async () => {\n const storage = new MyStorage();\n auth.client = await AuthClient.create(); //{ storage }\n};\n\nauth.requestHardwareAuth = async () => {\n auth.hw_identity = await LedgerIdentity.create();\n //console.log(\"PUBKEY\", auth.hw_identity.getPublicKey());\n};\n\nauth.getAgentOptions = async () => {\n let identity = auth.hw_identity || auth.client.getIdentity();\n\n return {\n identity: identity,\n host: process.env.REACT_APP_IC_GATEWAY || \"https://ic0.app\",\n };\n};\n\n//\n\nclass MyStorage {\n constructor() {\n this.my = {};\n }\n\n async get(key) {\n return this.my[key];\n }\n\n async set(key, value) {\n this.my[key] = value;\n }\n\n async remove(key) {\n delete this.my[key];\n }\n}\n\nexport { auth as default };\n","/* global BigInt */\nimport styled from \"@emotion/styled\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\n\nimport { useSelector } from \"react-redux\";\n\nimport { Tooltip } from \"@chakra-ui/react\";\nimport { useColorModeValue } from \"@chakra-ui/react\";\nconst Stx = styled.span`\n font-family: Hexaframe;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(117, 130, 149);\n b {\n color: rgb(110, 200, 170);\n }\n`;\n\nexport const TX = ({ children }) => {\n return (\n \n TX\n {children.slice(2)}\n \n );\n};\n\nconst Sacc = styled.span`\n font-family: Hexaframe;\n font-size: 80%;\n letter-spacing: 2px;\n text-transform: uppercase;\n color: ${(props) =>\n props.mode === \"light\" ? \"rgb(230, 240, 240)\" : \"rgb(90, 100, 100)\"};\n b {\n color: rgb(170, 255, 0);\n }\n`;\n\nconst hexColors = {\n light: {\n 0: \"#49fc32\",\n 1: \"#a7ef15\",\n 2: \"#e8dc16\",\n 3: \"#ffbb33\",\n 4: \"#ff906c\",\n 5: \"#ff87b3\",\n 6: \"#ff92ff\",\n 7: \"#ffa9ff\",\n 8: \"#c8c8ff\",\n 9: \"#00e4ff\",\n A: \"#00f3ff\",\n B: \"#29f7db\",\n C: \"#c9e1bb\",\n D: \"#ffc8d1\",\n E: \"#e8cfff\",\n F: \"#cdd9fd\",\n },\n dark: {\n 0: \"#219812\",\n 1: \"#6f9f0d\",\n 2: \"#8c8509\",\n 3: \"#946507\",\n 4: \"#902705\",\n 5: \"#840835\",\n 6: \"#8e088e\",\n 7: \"#950b95\",\n 8: \"#09098b\",\n 9: \"#097b88\",\n A: \"#07757a\",\n B: \"#067969\",\n C: \"#38850b\",\n D: \"#a41d33\",\n E: \"#4e1187\",\n F: \"#153081\",\n },\n};\n\nexport const ACC = ({ children, short = false }) => {\n const mode = useColorModeValue(\"dark\", \"light\");\n const color = hexColors[mode];\n\n let a = children\n .slice(0, 5)\n .toUpperCase()\n .split(\"\")\n .map((x, idx) => (\n \n {x}\n \n ));\n let b = children.slice(5, -5);\n let c = children\n .slice(-5)\n .toUpperCase()\n .split(\"\")\n .map((x, idx) => (\n \n {x}\n \n ));\n\n return (\n \n {a}\n {short ? \"...\" : b}\n {c}\n \n );\n};\n\nconst Spri = styled.span`\n font-family: Hexaframe;\n font-size: 80%;\n letter-spacing: 2px;\n text-transform: uppercase;\n color: rgb(220, 220, 220);\n b {\n color: rgb(220, 220, 220);\n }\n`;\n\nexport const PRI = ({ children }) => {\n let p = children.split(\"-\");\n return (\n \n {p.map((x, idx) => {\n return (\n \n {idx !== 0 ? \"-\" : null}\n {x}\n \n );\n })}\n \n );\n};\n\nconst Snfta = styled.span`\n font-family: Hexaframe;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(117, 130, 149);\n b {\n color: rgb(250, 0, 120);\n }\n`;\n\nexport const NFTA = ({ children }) => {\n if (!children)\n return (\n \n NFTA\n \n );\n return (\n \n NFTA\n {children.slice(4)}\n \n );\n};\n\nconst Sanv = styled.span`\n font-family: Hexaframe;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(220, 80, 255);\n span {\n color: rgb(160, 0, 255);\n vertical-align: super;\n font-size: 8px;\n position: relative;\n top: 0.1em;\n }\n b {\n color: rgb(160, 40, 250);\n }\n`;\n\nexport const ANV = ({ children }) => {\n if (!children)\n return (\n \n ANV\n \n );\n let val = AccountIdentifier.eToAnv(children);\n let [a, b] = val.toString().split(\".\");\n return (\n \n {a}.{b} ANV\n \n );\n};\n\nconst Spwr = styled.span`\n font-family: Hexaframe;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(220, 80, 255);\n span {\n color: rgb(160, 0, 255);\n vertical-align: super;\n font-size: 8px;\n position: relative;\n top: 0.1em;\n }\n b {\n color: rgb(160, 40, 250);\n }\n`;\n\nexport const PWR = ({ children }) => {\n if (!children)\n return (\n \n PWR\n \n );\n let val = AccountIdentifier.e8sToPwr(children);\n let [a, b] = val.toString().split(\".\");\n return (\n \n {a}.{b} PWR\n \n );\n};\n\nconst Sicp = styled.span`\n font-family: Hexaframe;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(120, 200, 255);\n span {\n color: rgb(60, 160, 230);\n vertical-align: super;\n font-size: 8px;\n position: relative;\n top: 0.1em;\n }\n b {\n color: rgb(0, 160, 250);\n }\n`;\n\nexport const ICP = ({ children, digits = 4 }) => {\n const icpCycles = BigInt(useSelector((state) => state.user.oracle.icpCycles));\n\n if (!children)\n return (\n \n ICP\n \n );\n\n const xdr = Number((BigInt(children) * icpCycles) / 10000000000n) / 100;\n\n let val = AccountIdentifier.e8sToIcp(children);\n let [a, b] = val.toString().split(\".\");\n b = b.substring(0, digits);\n return (\n \n \n {a}.{b} ICP\n \n \n );\n};\n\nconst Shash = styled.span`\n font-family: Hexaframe;\n font-size: 8px;\n letter-spacing: 2px;\n text-transform: uppercase;\n color: ${(props) =>\n props.mode === \"light\" ? \"#377a5f\" : \"rgb(110, 200, 170)\"};\n\n b {\n color: ${(props) =>\n props.mode === \"light\" ? \"#005e47\" : \"rgb(140, 240, 220)\"};\n }\n`;\n\nexport const HASH = ({ children, short = false }) => {\n const mode = useColorModeValue(\"light\", \"dark\");\n let t = short\n ? (children = children.slice(0, 4) + \"..\" + children.slice(-4))\n : children;\n\n let txt = t\n .split(\"\")\n .map((x, idx) => (Math.floor(idx / 2) % 2 == 0 ? {x} : x));\n return {txt};\n};\n","import * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport { useDispatch } from \"react-redux\";\nimport { push } from \"connected-react-router\";\nimport { TX, ACC, NFTA, HASH } from \"./Code\";\n\nexport const TransactionToast = (props) => {\n const dispatch = useDispatch();\n\n return (\n {\n if (props.tokenId) dispatch(push(props.tokenId));\n else if (props.transactionId)\n dispatch(push(\"/\" + TransactionId.toText(props.transactionId)));\n }}\n >\n
{props.title}
\n {props.tokenId ? (\n
\n {props.tokenId}\n
\n ) : null}\n {props.transactionId ? (\n
\n {TransactionId.toText(props.transactionId)}\n
\n ) : null}\n \n );\n};\n\nexport const TransactionFailed = ({ title, message }) => {\n return (\n
\n
{title}
\n
{message}
\n
\n );\n};\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { router } from \"@vvv-interactive/nftanvil-canisters/cjs/router.js\";\nimport { ledger } from \"@vvv-interactive/nftanvil-canisters/cjs/ledger.js\";\nimport Cookies from \"js-cookie\";\nimport { ledgerCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/ledger.js\";\n//import { treasuryCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/treasury.js\";\nimport { pwrCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/pwr.js\";\n\nimport authentication from \"../auth\";\n\nimport {\n principalToAccountIdentifier,\n getSubAccountArray,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\n\nimport { BigIntToString } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport { toast } from \"react-toastify\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport {\n TransactionToast,\n TransactionFailed,\n} from \"../components/TransactionToast\";\nimport { mapValues } from \"lodash\";\n\nconst initialState = {\n address: null,\n subaccount: null,\n principal: null,\n anonymous: true,\n focused: true,\n icp: \"0\",\n anv: \"0\",\n map: {},\n acccan: \"\",\n oracle: {\n icpCycles: \"160000\",\n icpFee: \"10000\",\n pwrFee: \"10000\",\n anvFee: \"10000\",\n },\n pro: false,\n modal_nftstorage: false,\n key_nftstorage: null,\n disclaimer: true,\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState,\n reducers: {\n resetReducer: () => initialState,\n balancesSet: (state, action) => {\n return {\n ...state,\n icp: action.payload.icp,\n anv: action.payload.anv,\n oracle: action.payload.oracle,\n };\n },\n focusSet: (state, action) => {\n return { ...state, focused: action.payload };\n },\n proSet: (state, action) => {\n return {\n ...state,\n pro: action.payload,\n };\n },\n\n authSet: (state, action) => {\n const { address, subaccount, principal, anonymous, map, acccan } =\n action.payload;\n return {\n ...state,\n address,\n principal,\n anonymous,\n subaccount,\n ...(map ? { map, acccan } : {}),\n };\n },\n mapSet: (state, action) => {\n return {\n ...state,\n map: action.payload,\n };\n },\n setNftStorageModal: (state, action) => {\n return {\n ...state,\n modal_nftstorage: action.payload,\n };\n },\n setNftSotrageKey: (state, action) => {\n return {\n ...state,\n key_nftstorage: action.payload,\n };\n },\n setDisclaimer: (state, action) => {\n return {\n ...state,\n disclaimer: action.payload,\n };\n },\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const {\n resetReducer,\n proSet,\n authSet,\n balancesSet,\n setNftStorageModal,\n setNftSotrageKey,\n focusSet,\n mapSet,\n setDisclaimer,\n} = userSlice.actions;\n\nexport const proModeSet = (v) => (dispatch) => {\n dispatch(proSet(v));\n window.localStorage.setItem(\"pro\", v);\n};\n\nexport const login = () => (dispatch) => {\n dispatch(auth(false));\n};\n\nexport const hw_auth = () => async (dispatch, getState) => {\n authentication.requestHardwareAuth();\n};\n\nexport const auth =\n (allowAnonymous = true) =>\n async (dispatch, getState) => {\n await authentication.create();\n let authClient = authentication.client;\n\n if (!allowAnonymous && !(await authClient.isAuthenticated())) {\n await new Promise(async (resolve, reject) => {\n authClient.login({\n //maxTimeToLive: 10000000000n,\n ...(process.env.REACT_APP_IDENTITY_PROVIDER\n ? { identityProvider: process.env.REACT_APP_IDENTITY_PROVIDER }\n : {}),\n onSuccess: async (e) => {\n resolve();\n },\n onError: reject,\n });\n });\n }\n\n const identity = await authClient.getIdentity();\n\n let principal = identity.getPrincipal().toString();\n let anonymous = !(await authClient.isAuthenticated());\n let address, subaccount;\n if (!anonymous) {\n principalToAccountIdentifier(principal).toUpperCase();\n }\n\n for (let i = 0; i < 100000; i++) {\n let c = principalToAccountIdentifier(principal, i);\n\n if (c.substring(0, 3) === \"a00\") {\n address = c;\n subaccount = AccountIdentifier.ArrayToText(getSubAccountArray(i));\n //console.log(subaccount);\n\n break;\n }\n }\n\n dispatch(loadNftStorageKey());\n dispatch(loadDisclaimer());\n\n console.log(\"ROUTER\", process.env.REACT_APP_ROUTER_CANISTER_ID);\n\n let pro = window.localStorage.getItem(\"pro\") == \"true\";\n if (pro) dispatch(proSet(true));\n\n router.setOptions(process.env.REACT_APP_ROUTER_CANISTER_ID, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let map = await router.config_get();\n\n map.router = map.router.toString();\n map = BigIntToString(map);\n\n console.log(\"ROUTER MAP\", map);\n\n // map.space = map.space.map((x) => {\n // return [x[0].toString(), x[1].toString()];\n // });\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n console.log(\n \"Proxy command:\\n icx-proxy --address 127.0.0.1:8453 --dns-alias \" +\n map.nft_avail\n .map(\n (slot) =>\n `${slot}.lvh.me:${PrincipalFromSlot(map.space, slot).toText()}`\n )\n .join(\" \")\n );\n }\n\n let acccan = address\n ? PrincipalFromSlot(\n map.space,\n AccountIdentifier.TextToSlot(address, map.account)\n ).toText()\n : null;\n\n dispatch(\n authSet({ address, subaccount, principal, anonymous, map, acccan })\n );\n dispatch(refresh_balances());\n };\n\nexport const refresh_config = () => async (dispatch, getState) => {\n let map = await router.config_get();\n map = BigIntToString(map);\n console.log(\"ROUTER MAP\", map);\n dispatch(mapSet(map));\n};\n\nexport const refresh_balances = () => async (dispatch, getState) => {\n if (!authentication || !authentication.client) return;\n if (!(await authentication.client.isAuthenticated())) return;\n await dispatch(refresh_icp_balance());\n if (!(await authentication.client.isAuthenticated())) return;\n dispatch(refresh_pwr_balance());\n\n // dispatch(claim_treasury_balance());\n};\n\nexport const loadDisclaimer = () => async (dispatch, getState) => {\n let key = Cookies.get(\"disclaimer\") === \"true\" || false;\n dispatch(setDisclaimer(key));\n};\n\nexport const saveDisclaimer = (key) => async (dispatch, getState) => {\n Cookies.set(\"disclaimer\", key);\n dispatch(setDisclaimer(key));\n};\n\nexport const loadNftStorageKey = () => async (dispatch, getState) => {\n let key = Cookies.get(\"nftstoragekey\");\n dispatch(setNftSotrageKey(key));\n};\n\nexport const saveNftStorageKey = (key) => async (dispatch, getState) => {\n Cookies.set(\"nftstoragekey\", key);\n dispatch(setNftSotrageKey(key));\n};\n\nexport const logout = () => async (dispatch, getState) => {\n var authClient = await AuthClient.create();\n\n authClient.logout();\n\n const identity = await authClient.getIdentity();\n router.setOptions(process.env.REACT_APP_ROUTER_CANISTER_ID, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let principal = identity.getPrincipal().toString();\n let anonymous = !(await authClient.isAuthenticated());\n //dispatch(authSet({ address: null, principal, anonymous }));\n dispatch(resetReducer());\n dispatch(auth());\n};\n\nexport const refresh_icp_balance = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n if (!address) return;\n\n let ledger = ledgerCanister({\n agentOptions: await authentication.getAgentOptions(),\n });\n\n await ledger\n .account_balance({\n account: AccountIdentifier.TextToArray(address),\n })\n .then((icp) => {\n let e8s = icp.e8s;\n\n if (e8s >= 30000n) {\n // automatically wrap ICP\n dispatch(pwr_buy({ amount: e8s - 10000n }));\n }\n })\n .catch((e) => {\n if (process.env.NODE_ENV === \"production\") console.log(e); // Will always show bug in dev mode because there is ledger canister on the local replica\n });\n};\n\n// for local testing\nexport const faucet = (address) => async (dispatch, getState) => {\n let s = getState();\n\n let pwrcan = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n { agentOptions: await authentication.getAgentOptions() }\n );\n\n let resp = await pwrcan.faucet({\n aid: AccountIdentifier.TextToArray(address),\n amount: 800000000n,\n });\n\n console.log(resp);\n};\n\nexport const refresh_pwr_balance = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n if (!address) return;\n\n let pwrcan = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n { agentOptions: await authentication.getAgentOptions() }\n );\n\n await pwrcan\n .balance({\n user: { address: AccountIdentifier.TextToArray(address) },\n })\n .then(async ({ pwr, anv, oracle }) => {\n // if (Number(pwr) === 0) {\n // //TODO: Remove in production\n // let fres = await pwrcan.faucet({\n // aid: AccountIdentifier.TextToArray(address),\n // amount: 800000000n,\n // });\n // dispatch(refresh_pwr_balance());\n // return;\n // }\n\n oracle = BigIntToString(oracle);\n dispatch(\n balancesSet({ icp: pwr.toString(), anv: anv.toString(), oracle })\n );\n })\n .catch((e) => {\n // We are most probably logged out. There is currently no better way to handle expired agentjs chain\n if (e.toString().includes(\"delegation has expired\")) dispatch(logout());\n });\n};\n\nexport const transfer_icp =\n ({ to, amount }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: await authentication.getAgentOptions(),\n }\n );\n\n let toastId = toast(\"Sending...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n let trez;\n try {\n trez = await pwr.pwr_withdraw({\n amount,\n from: { address: AccountIdentifier.TextToArray(address) },\n to: { address: AccountIdentifier.TextToArray(to) },\n subaccount: subaccount,\n });\n\n if (!(\"ok\" in trez)) throw new Error(JSON.stringify(trez));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n\n dispatch(refresh_balances());\n } catch (e) {\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n\n return trez;\n };\n\nexport const hw_test = () => async (dispatch, getState) => {\n let ledger = ledgerCanister({\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let ledger_result = await ledger.transfer({\n memo: 0,\n amount: { e8s: 1000000 },\n fee: { e8s: 10000n },\n from_subaccount: [],\n to: AccountIdentifier.TextToArray(\n \"a00c26536f73f0add51dddd5ef3220bb1842b2783e8ba1c4dd4a2da172b1727a\"\n ),\n created_at_time: [],\n });\n\n console.log(\"ledger_result\", ledger_result);\n};\n\nexport const pwr_buy =\n ({ amount }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n let address = s.user.address;\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: await authentication.getAgentOptions(),\n }\n );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let toastId = toast(\"Depositing ICP...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n isLoading: true,\n });\n\n let intent = await pwr.pwr_purchase_intent({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n });\n if (intent.err) throw intent.err;\n\n let paymentAddress = intent.ok;\n\n let ledger = ledgerCanister({\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let ledger_result = await ledger.transfer({\n memo: 0,\n amount: { e8s: amount },\n fee: { e8s: 10000n },\n from_subaccount: subaccount,\n to: paymentAddress,\n created_at_time: [],\n });\n\n if (ledger_result.Ok) {\n toast.update(toastId, {\n type: toast.TYPE.INFO,\n isLoading: true,\n render: \"ICP transfer successfull. Claiming...\",\n autoClose: 9000,\n pauseOnHover: true,\n });\n } else {\n console.error(ledger_result.Err);\n\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: true,\n closeOnClick: true,\n\n render: ,\n });\n\n return;\n }\n\n try {\n let claim = await pwr.pwr_purchase_claim({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n });\n\n if (claim.err) throw claim.err;\n\n let { transactionId } = claim.ok;\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n\n dispatch(refresh_balances());\n };\n\nexport const window_focus = () => async (dispatch, getState) => {\n dispatch(focusSet(true));\n dispatch(refresh_balances());\n};\n\nexport const window_blur = () => async (dispatch, getState) => {\n dispatch(focusSet(false));\n};\n\nexport default userSlice.reducer;\n","/* global BigInt */\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport authentication from \"../auth\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { nftCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/nft.js\";\nimport {\n chunkBlob,\n encodeLink,\n decodeLink,\n generateKeyHashPair,\n uploadFile,\n} from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nimport { router } from \"@vvv-interactive/nftanvil-canisters/cjs/router.js\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { push } from \"connected-react-router\";\nimport { setNftStorageModal } from \"./user\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport {\n priceStorage,\n priceOps,\n} from \"@vvv-interactive/nftanvil-tools/cjs/pricing.js\";\n\nimport { ledgerCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/ledger.js\";\nimport { pwrCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/pwr.js\";\n\nimport { NFTStorage } from \"nft.storage/dist/bundle.esm.min.js\";\nimport { toast } from \"react-toastify\";\nimport {\n TransactionToast,\n TransactionFailed,\n} from \"../components/TransactionToast\";\n\nimport { refresh_balances, refresh_pwr_balance, refresh_config } from \"./user\";\n\nexport const nftSlice = createSlice({\n name: \"nft\",\n initialState: {},\n reducers: {\n nftSet: (state, action) => {\n return {\n ...state,\n [action.payload.id]: action.payload.meta,\n };\n },\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const { nftSet } = nftSlice.actions;\n\nexport const nftFetch = (id) => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n let s = getState();\n\n let tid = tokenFromText(id);\n let { index, slot } = decodeTokenId(tid);\n\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let resp = await nftcan.metadata(tid);\n if (!resp) throw Error(\"Can't fetch NFT meta\");\n if (resp.err)\n throw Error(\"Fetching NFT meta error \" + JSON.stringify(resp.err));\n\n let { bearer, data, vars } = resp.ok;\n let now = Math.ceil(Date.now() / 1000 / 60);\n\n let meta = {\n bearer: AccountIdentifier.ArrayToText(bearer),\n\n // inherant\n tokenIndex: index,\n canister,\n\n // data\n\n domain: data.domain[0],\n // use: data.use[0],\n // hold: data.hold[0],\n thumb: data.thumb,\n content: data.content[0],\n created: data.created,\n quality: data.quality,\n lore: data.lore[0],\n name: data.name[0],\n custom: data.custom.length,\n author: AccountIdentifier.ArrayToText(data.author),\n secret: data.secret,\n entropy: data.entropy,\n attributes: data.attributes,\n transfer: data.transfer,\n authorShare: data.authorShare,\n tags: data.tags,\n //vars\n ttl: vars.ttl[0],\n cooldownUntil: vars.cooldownUntil[0],\n boundUntil: vars.boundUntil[0],\n pwr: [vars.pwrOps.toString(), vars.pwrStorage.toString()],\n sockets: vars.sockets.map((x) => tokenToText(x)), //TokenIdentifier.ArrayToText(x)),\n price: { ...vars.price, amount: vars.price.amount.toString() },\n history: vars.history,\n rechargeable: data.rechargeable,\n };\n\n meta.transferable =\n meta.transfer.unrestricted === null ||\n (meta.transfer.bindsDuration && meta.boundUntil < now);\n\n if (meta.thumb.internal)\n meta.thumb.internal.url = tokenUrl(s.user.map.space, tid, \"thumb\");\n if (meta.thumb.ipfs) meta.thumb.ipfs.url = ipfsTokenUrl(meta.thumb.ipfs.cid);\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n if (meta.content?.internal) {\n if (meta.secret)\n meta.content.internal.url = await nftMediaGet(s, {\n id,\n contentType: meta.content.internal.contentType,\n size: meta.content.internal.size,\n position: \"content\",\n subaccount,\n });\n else meta.content.internal.url = tokenUrl(s.user.map.space, tid, \"content\");\n }\n if (meta.content?.ipfs)\n meta.content.ipfs.url = ipfsTokenUrl(meta.content.ipfs.cid);\n\n dispatch(nftSet({ id, meta }));\n return meta;\n};\n\nexport const nftMediaGet = async (\n s,\n { id, contentType, size, position, subaccount = false }\n) => {\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { index, slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let src = await fetchFile(\n nftcan,\n size,\n contentType,\n index,\n position,\n subaccount\n );\n\n return src;\n};\n\nconst fetchFile = async (\n nft,\n size,\n contentType,\n tokenIndex,\n position,\n subaccount = false\n) => {\n let chunkSize = 1024 * 512;\n let chunks = Math.ceil(size / chunkSize);\n\n return await Promise.all(\n Array(chunks)\n .fill(0)\n .map((_, chunkIdx) => {\n return nft.fetch_chunk({\n tokenIndex,\n chunkIdx,\n position: { [position]: null },\n subaccount: subaccount ? subaccount : [],\n });\n })\n ).then((chunks) => {\n const blob = new Blob(\n chunks.map((chunk) => {\n return new Uint8Array(chunk[0]).buffer;\n }),\n { type: contentType }\n );\n\n return URL.createObjectURL(blob);\n });\n};\n\nexport const nft_purchase =\n ({ id, amount }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n //let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n // let nftcan = nftCanister(canister, { agentOptions: await authentication.getAgentOptions() });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n console.log(\"BUYING\", id, amount);\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: await authentication.getAgentOptions(),\n }\n );\n\n let toastId = toast(\"Purchasing...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n isLoading: true,\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n let prez;\n try {\n prez = await pwr.nft_purchase(BigInt(slot), {\n token: tokenFromText(id),\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n affiliate: [],\n amount,\n });\n\n if (prez.err) throw new Error(JSON.stringify(prez.err));\n\n toast.update(toastId, {\n render: (\n \n ),\n isLoading: false,\n type: toast.TYPE.SUCCESS,\n });\n } catch (e) {\n toast.update(toastId, {\n render: (\n \n ),\n isLoading: false,\n type: toast.TYPE.ERROR,\n });\n }\n\n dispatch(refresh_balances());\n dispatch(nftFetch(id));\n console.log(\"purchase result\", prez);\n };\n\nexport const purchase_intent =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n //console.log(\"t\", id, slot, tokenFromText(id));\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.purchase_intent({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tokenFromText(id),\n subaccount,\n });\n\n if (!(\"ok\" in t)) throw t;\n\n return t.ok;\n };\n\nexport const set_price =\n ({ id, price }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n\n console.log(\"Setting price\", id, { slot });\n\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.set_price({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n price: price,\n subaccount,\n });\n if (!(\"ok\" in t)) throw t.err;\n dispatch(nftFetch(id));\n };\n\nexport const transfer =\n ({ id, toAddress }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let toastId = toast(\"Sending...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n let t;\n try {\n t = await nftcan.transfer({\n from: { address: AccountIdentifier.TextToArray(address) },\n to: { address: AccountIdentifier.TextToArray(toAddress) },\n token: tid,\n amount: 1,\n memo: [],\n subaccount,\n });\n if (!t.ok) throw t.err;\n let { transactionId } = t.ok;\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Transfer error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n\n dispatch(nftFetch(id));\n\n return t;\n };\n\nexport const plug =\n ({ plug_id, socket_id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let { slot } = decodeTokenId(tokenFromText(plug_id));\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.plug({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n plug: tokenFromText(plug_id),\n socket: tokenFromText(socket_id),\n memo: [],\n });\n if (!t.ok) throw t.err;\n dispatch(nftFetch(plug_id));\n dispatch(nftFetch(socket_id));\n return t.ok;\n };\n\nexport const unsocket =\n ({ plug_id, socket_id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let { slot } = decodeTokenId(tokenFromText(socket_id));\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.unsocket({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n plug: tokenFromText(plug_id),\n socket: tokenFromText(socket_id),\n memo: [],\n });\n if (!t.ok) throw t.err;\n dispatch(nftFetch(plug_id));\n dispatch(nftFetch(socket_id));\n return t.ok;\n };\n\nexport const recharge =\n ({ id, amount }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n // let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n let address = s.user.address;\n\n // let nftcan = nftCanister(canister, { agentOptions: await authentication.getAgentOptions() });\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: await authentication.getAgentOptions(),\n }\n );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let toastId = toast(\"Recharging...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n let t;\n try {\n let t = await pwr.nft_recharge(slot, {\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n subaccount,\n amount,\n });\n\n if (!(\"ok\" in t)) throw t.err;\n\n let { transactionId } = { transactionId: 0 }; //t.ok;\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n\n dispatch(refresh_balances());\n dispatch(nftFetch(id));\n return t.ok;\n } catch (e) {\n console.error(\"Recharge error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n\nexport const burn =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let rez = await nftcan.burn({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n amount: 1,\n memo: [],\n subaccount,\n });\n\n if (rez.err) throw rez.err;\n\n dispatch(refresh_balances());\n let { transactionId } = rez.ok;\n dispatch(push(\"/\" + TransactionId.toText(transactionId)));\n return rez.ok;\n };\n\nexport const approve =\n ({ id, spender }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let rez = await nftcan.approve({\n token: tid,\n allowance: 1,\n subaccount,\n spender,\n });\n if (rez.err) throw rez.err;\n dispatch(nftFetch(id));\n\n return rez.ok;\n };\n\nexport const use =\n ({ id, use, memo }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n console.log(\"use\");\n let r = await nftcan.use({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n memo,\n use,\n subaccount,\n customVar: [],\n });\n\n if (!r.ok) throw r.err;\n dispatch(refresh_balances());\n dispatch(nftFetch(id));\n return r.ok;\n };\n\nexport const transfer_link =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { index, slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let { key, hash } = generateKeyHashPair();\n\n let rez = await nftcan.transfer_link({\n from: { address: AccountIdentifier.TextToArray(address) },\n hash: Array.from(hash),\n token: tid,\n subaccount,\n });\n if (rez.err) throw rez.err;\n\n let code = encodeLink(slot, index, key);\n\n return code;\n };\n\nexport const uploadIPFS = async (token, up) => {\n let blob = await fetch(up).then((r) => r.blob());\n const client = new NFTStorage({ token });\n const cid = await client.storeBlob(blob);\n return cid;\n};\n// export const uploadIPFS = async (up) => {\n\n// if (typeof up === \"string\" && up.indexOf(\"blob:\") === 0)\n// up = await fetch(up).then((r) => r.blob());\n\n// return fetch(\"https://nftpkg.com/nft/upload\", {\n// method: \"POST\",\n// mode: \"cors\",\n// body: up,\n// })\n// .then((d) => {\n// return d.json();\n// })\n// .then((x) => {\n// return x;\n// });\n// };\n\n// export const pinIPFS = async (tokenid, cid, secret) => {\n// return fetch(\n// \"https://nftpkg.com/nft/pin/\" + tokenid + \"/\" + cid + \"/\" + secret,\n// {\n// method: \"POST\",\n// mode: \"cors\",\n// }\n// )\n// .then((d) => {\n// return d.json();\n// })\n// .then((x) => {\n// return x;\n// });\n// };\n\nexport const claim_link =\n ({ code }) =>\n async (dispatch, getState) => {\n let s = getState();\n let { slot, tokenIndex, key } = decodeLink(code);\n\n let canister = PrincipalFromSlot(s.user.map.space, slot);\n\n let identity = authentication.client.getIdentity();\n\n let nftcan = nftCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n\n let tid = encodeTokenId(slot, tokenIndex);\n\n let resp = await nftcan.claim_link({\n to: { address: AccountIdentifier.TextToArray(address) },\n key: Array.from(key),\n token: tid,\n });\n\n dispatch(nftFetch(tokenToText(tid)));\n\n return resp;\n };\n\nexport const nftEnterCode = (code) => async (dispatch, getState) => {\n let s = getState();\n\n let { slot, tokenIndex } = decodeLink(code);\n\n if (!s.user.map.space) throw Error(\"Map not loaded\");\n\n let canister = PrincipalFromSlot(s.user.map.space, slot);\n\n let id = encodeTokenId(slot, tokenIndex);\n dispatch(push(\"/\" + tokenToText(id) + \"/\" + code));\n};\n\nexport const recharge_quote =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n const icpCycles = BigInt(s.user.oracle.icpCycles);\n\n let nft = s.nft[id];\n\n const ops = priceOps({ ttl: null }) / icpCycles;\n\n const transfer = BigInt(s.user.oracle.pwrFee);\n\n const storage =\n priceStorage({\n custom: nft.custom || 0,\n content: nft.content,\n thumb: nft.thumb,\n quality: nft.quality,\n ttl: null,\n }) / icpCycles;\n\n let full = ops + transfer + storage;\n\n let current = BigInt(nft.pwr[0]) + BigInt(nft.pwr[1]);\n let diff = full - current + BigInt(s.user.oracle.pwrFee);\n if (diff < 30000n) diff = 0n;\n\n //console.log({ full, current, diff });\n\n return diff;\n };\n\nexport const mint_quote = (vals) => async (dispatch, getState) => {\n let s = getState();\n\n const icpCycles = BigInt(s.user.oracle.icpCycles);\n const transfer = BigInt(s.user.oracle.pwrFee);\n const ops = priceOps({ ttl: vals.ttl }) / icpCycles;\n\n const storage =\n priceStorage({\n custom: 0, //NOTE: this frontend doesn't support custom data. If someone wants to add such, it should be done with scripts\n content: vals.content,\n thumb: vals.thumb,\n quality: vals.quality,\n ttl: vals.ttl,\n }) / icpCycles;\n\n return { transfer, ops, storage };\n};\n\nexport const mint = (vals) => async (dispatch, getState) => {\n let s = getState();\n const key_nftstorage = s.user.key_nftstorage;\n\n let toastId = toast(\"\", {\n isLoading: true,\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n if (\n (vals?.content[0]?.ipfs?.url || vals?.thumb?.ipfs?.url) &&\n !key_nftstorage?.length\n ) {\n dispatch(setNftStorageModal(true));\n return;\n }\n\n if (vals?.content[0]?.ipfs?.url) {\n toast.update(toastId, {\n render: \"Uploading content...\",\n });\n\n vals.content[0].ipfs.cid = await uploadIPFS(\n key_nftstorage,\n vals.content[0].ipfs.url\n );\n }\n\n if (vals?.thumb?.ipfs?.url) {\n toast.update(toastId, {\n render: \"Uploading thumb...\",\n });\n\n vals.thumb.ipfs.cid = await uploadIPFS(key_nftstorage, vals.thumb.ipfs.url);\n }\n\n let available = s.user.map.nft_avail;\n let slot = available[Math.floor(Math.random() * available.length)];\n\n let canisterId = PrincipalFromSlot(s.user.map.space, slot);\n\n let identity = authentication.client.getIdentity();\n let address = s.user.address;\n\n let nft = nftCanister(canisterId, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: await authentication.getAgentOptions(),\n }\n );\n\n console.log(\n \"PWR Canister\",\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ).toText()\n );\n\n console.log(\n \"NFT Canister\",\n PrincipalFromSlot(s.user.map.space, slot).toText()\n );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n if (!address) throw Error(\"Annonymous cant mint\"); // Wont let annonymous mint\n\n try {\n toast.update(toastId, {\n render: (\n
\n
Minting request sent.
\n
Waiting for response...
\n
\n ),\n });\n\n // console.log(\"mint vals\", slot, vals);\n let mrez = await pwr.nft_mint(BigInt(slot), {\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n metadata: vals,\n });\n\n if (mrez?.err?.OutOfMemory === null) {\n toast.dismiss(toastId);\n await dispatch(refresh_config());\n await dispatch(mint(vals));\n return;\n }\n\n if (mrez?.err?.InsufficientBalance === null) {\n throw Error(\"Insufficient Balance\");\n }\n // console.log(\"REZ\", mrez);\n if (!(\"ok\" in mrez)) throw Error(JSON.stringify(mrez.err));\n\n let { tokenIndex, transactionId } = mrez.ok;\n let id = tokenToText(encodeTokenId(slot, tokenIndex));\n\n if (vals?.content[0]?.internal?.url) {\n toast.update(toastId, {\n render: \"Uploading content...\",\n });\n await uploadFile(\n nft,\n tokenIndex,\n \"content\",\n await chunkBlob(vals.content[0].internal.url),\n subaccount\n );\n }\n\n if (vals?.thumb?.internal?.url) {\n toast.update(toastId, {\n render: \"Uploading thumb...\",\n });\n await uploadFile(\n nft,\n tokenIndex,\n \"thumb\",\n await chunkBlob(vals.thumb.internal.url),\n subaccount\n );\n }\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n\n closeOnClick: true,\n\n render: ,\n // autoClose: 9000,\n });\n\n console.error(e);\n throw e;\n }\n\n dispatch(refresh_balances());\n};\n\nexport default nftSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { accountCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/account.js\";\nimport authentication from \"../auth\";\nimport { produce } from \"immer\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport { tokenToText } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nexport const inventorySlice = createSlice({\n name: \"inventory\",\n initialState: {},\n reducers: {\n pageSet: (state, action) => {\n return produce(state, (draft) => {\n if (!draft[action.payload.aid]) draft[action.payload.aid] = [];\n draft[action.payload.aid][action.payload.pageIdx] = action.payload.list;\n return draft;\n });\n },\n metaSet: (state, action) => {\n return { ...state, [action.payload.aid + \"meta\"]: action.payload.meta };\n },\n verifiedDomainSet: (state, action) => {\n return {\n ...state,\n [action.payload.domain + \"_domain\"]: action.payload.data,\n };\n },\n },\n});\n\nexport const { pageSet, metaSet, verifiedDomainSet } = inventorySlice.actions;\n\nexport const loadInventory =\n (aid, pageIdx, max) => async (dispatch, getState) => {\n let identity = authentication.client\n ? authentication.client.getIdentity()\n : null;\n let s = getState();\n if (!s.user.map.account?.length) return null;\n\n let can = PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(aid, s.user.map.account)\n );\n let acc = accountCanister(can, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let meta = await acc.meta(AccountIdentifier.TextToArray(aid));\n if (meta[0]) dispatch(metaSet({ aid, meta: meta[0] }));\n // console.log(\"ACC META\", meta);\n\n pageIdx = parseInt(pageIdx, 10);\n let list = await acc.list(\n AccountIdentifier.TextToArray(aid),\n pageIdx * max,\n (pageIdx + 1) * max\n );\n list = list.filter((x) => x !== 0n).map((x) => tokenToText(x));\n dispatch(pageSet({ aid, pageIdx, list }));\n };\n\nexport const verifyDomainTwitter = (domain) => async (dispatch, getState) => {\n let s = getState();\n\n if (s.inventory[domain + \"_domain\"] === undefined) {\n dispatch(verifiedDomainSet({ domain, data: -1 }));\n\n let data = await new Promise((resolve, reject) => {\n fetch(\"https://nftpkg.com/api/v1/verify?url=\" + domain)\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n try {\n resolve(data.text.replace(/[\\s]+/gs, \"\"));\n } catch (e) {\n console.log(e);\n resolve(false);\n }\n })\n .catch((e) => {\n resolve(false);\n });\n });\n\n dispatch(verifiedDomainSet({ domain, data }));\n }\n};\n\nexport const verifyDomain = (domain) => async (dispatch, getState) => {\n let s = getState();\n\n if (s.inventory[domain + \"_domain\"] === undefined) {\n dispatch(verifiedDomainSet({ domain, data: -1 }));\n\n let data = await new Promise((resolve, reject) => {\n fetch(\"https://\" + domain + \"/.well-known/nftanvil.json\")\n .then((response) => response.json())\n .then((data) => {\n try {\n resolve(data);\n } catch (e) {\n console.log(e);\n resolve(false);\n }\n })\n .catch((e) => {\n console.log(e);\n resolve(false);\n });\n });\n\n dispatch(verifiedDomainSet({ domain, data }));\n }\n};\n\nexport default inventorySlice.reducer;\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { createSlice } from \"@reduxjs/toolkit\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { router } from \"@vvv-interactive/nftanvil-canisters/cjs/router.js\";\nimport { ledger } from \"@vvv-interactive/nftanvil-canisters/cjs/ledger.js\";\nimport Cookies from \"js-cookie\";\nimport { historyCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/history.js\";\n\nimport authentication from \"../auth\";\n\nimport { principalToAccountIdentifier } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\n\nimport { Principal } from \"@dfinity/principal\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\n\nimport { toast } from \"react-toastify\";\nimport _ from \"lodash\";\n\nexport const userSlice = createSlice({\n name: \"history\",\n initialState: {\n lastUpdated: 0,\n total: 0,\n from: 0,\n to: 0,\n events: [],\n },\n reducers: {\n setEvents: (state, action) => {\n return {\n ...state,\n lastUpdated: Math.floor(Date.now() / 1000),\n events: action.payload,\n };\n },\n setInfo: (state, action) => {\n return { ...state, ...action.payload };\n },\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const { setEvents, setInfo } = userSlice.actions;\n\nexport const loadInfo = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n let s = getState();\n\n let history = historyCanister(\n PrincipalFromSlot(s.user.map.space, s.user.map.history),\n { agentOptions: await authentication.getAgentOptions() }\n );\n\n let { total, previous } = await history.info();\n let p = {\n total,\n canister: PrincipalFromSlot(s.user.map.space, s.user.map.history).toText(),\n };\n dispatch(setInfo({ total }));\n return p;\n};\n\nexport const tailHistory =\n ({ canister }) =>\n async (dispatch, getState) => {};\n\nexport const loadHistory =\n ({ canister, from, to }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n dispatch(loadInfo());\n\n let history = historyCanister(Principal.fromText(canister), {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let events = await history.list({\n from,\n to,\n });\n\n events = mapValuesDeep(events, (v) => {\n return typeof v === \"bigint\" ? v.toString() : v;\n });\n\n dispatch(setEvents(events));\n };\n\nexport const loadNftHistory =\n ({ transactions }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n let s = getState();\n\n let r = await Promise.all(\n transactions.map(async (tx_id) => {\n let { slot, idx } = TransactionId.decode(tx_id);\n\n let canister = PrincipalFromSlot(s.user.map.space, slot);\n\n let history = historyCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n let resp = await history.list({\n from: idx,\n to: idx + 1,\n });\n return {\n idx,\n canister: canister.toText(),\n data: resp[0] ? resp[0][0] : null,\n };\n })\n );\n return r;\n };\n\nconst mapValuesDeep = (obj, cb) => {\n if (_.isArray(obj)) {\n return obj.map((innerObj) => mapValuesDeep(innerObj, cb));\n } else if (_.isObject(obj)) {\n return _.mapValues(obj, (val) => mapValuesDeep(val, cb));\n } else {\n return cb(obj);\n }\n};\n\nexport const cluster_info = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let map = await router.config_get();\n\n let log = await router.log_get();\n\n return { map, log };\n};\n\nexport default userSlice.reducer;\n","/* global BigInt */\nimport React from \"react\";\nimport {\n Box,\n Spinner,\n Wrap,\n useColorModeValue,\n Center,\n Button,\n Stack,\n Flex,\n ButtonGroup,\n Spacer,\n HStack,\n} from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useTheme } from \"@chakra-ui/react\";\nimport { NFT } from \"./NFT\";\nimport itemgrid from \"../assets/itemgrid.png\";\nimport itemgrid_light from \"../assets/itemgrid_light.png\";\nimport { useWindowSize, useInterval } from \"react-use\";\nimport moment from \"moment\";\nimport { Link } from \"react-router-dom\";\n\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n loadInfo,\n loadHistory,\n tailHistory,\n loadNftHistory,\n} from \"../reducers/history\";\nimport styled from \"@emotion/styled\";\nimport { push } from \"connected-react-router\";\n\nimport {\n toHexString,\n bytesToBase58,\n} from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\nimport {\n tokenFromBlob,\n tokenToText,\n decodeTokenId,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n PrincipalFromSlot,\n PrincipalToIdx,\n PrincipalToSlot,\n} from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\n\nimport { NFTLarge } from \"./NFT\";\n\nconst SHOW = 10; // max records shown on screen\nconst TAIL_INTERVAL = 1000; // every 1 sec\n\nexport const HistoryRedirect = () => {\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n setLoading(false);\n\n let { total, canister } = await dispatch(loadInfo());\n let from = total - SHOW;\n if (from <= 0) from = 0;\n let to = total;\n dispatch(push(`/history/${canister}/${from}/${to}`));\n };\n\n useEffect(() => {\n load();\n }, [dispatch]);\n\n return (\n \n \n \n );\n};\n\nconst KeyVal = ({ k, v }) => {\n const dark = useColorModeValue(true, false);\n return (\n \n {k}\n {v}\n \n );\n};\n\nconst Key = styled.div`\n text-transform: capitalize;\n color: ${(p) => (p.dark ? \"gray.200\" : \"gray.900\")};\n width: 130px;\n font-size: 12px;\n font-family: Greycliff;\n text-transform: uppercase;\n`;\n\nconst Val = styled.div`\n width: 100%;\n word-break: break-all;\n a {\n color: rgb(133, 200, 255);\n }\n\n font-size: 12px;\n font-weight: normal;\n`;\n\nconst HistoryEvent = ({ ev, canister, idx, showThumb = true }) => {\n const boxColor = useColorModeValue(\"white\", \"gray.700\");\n const space = useSelector((state) => state.user.map.space);\n\n if (!ev?.info) return null;\n let etype = Object.keys(ev.info)[0];\n let action = Object.keys(ev.info[etype])[0];\n let details = ev.info[etype][action];\n\n let transactionId = TransactionId.toText(\n TransactionId.encode(\n PrincipalToSlot(space, Principal.fromText(canister)),\n idx\n )\n );\n let timestamp = Number(BigInt(details.created) / 1000000n);\n //TODO: This is will be done in a better way\n\n const inner = (\n \n \n {transactionId}\n \n }\n />\n \n\n {etype + \"-\" + action}} />\n\n {Object.keys(details).map((key, idx) => {\n if (key === \"created\") return null;\n\n let val = details[key];\n if (val.length === 32) {\n val = AccountIdentifier.ArrayToText(val);\n val = (\n \n {val}\n \n );\n }\n\n if (key === \"token\" || key === \"socket\" || key === \"plug\") {\n val = tokenToText(val); //tokenFromBlob(val);\n val = (\n \n {val}\n \n );\n }\n\n if (key === \"use\") {\n val = JSON.stringify(val);\n }\n\n if (key === \"memo\") {\n val = toHexString(val);\n }\n\n if (key === \"marketplace\" || key === \"affiliate\" || key === \"author\") {\n if (!val || val.length === 0) return null;\n if (Array.isArray(val)) val = val[0];\n if (!val) return null;\n\n return (\n
\n \n \n {AccountIdentifier.ArrayToText(val.address)}\n \n
{val.share / 100 + \"%\"}
\n \n }\n />\n
\n );\n }\n\n if (key === \"spender\") {\n val = Principal.fromUint8Array(val._arr).toText();\n }\n\n if (key === \"amount\") {\n if (val.e8s) val = {val.e8s};\n else val = {val};\n }\n\n if (key === \"pwr\") {\n val = {val};\n }\n\n if (key === \"price\") {\n val = (\n \n
\n {val.amount}\n
\n {val.marketplace[0] ? (\n
\n marketplace share{\" \"}\n {(val.marketplace[0].share / 100).toFixed(2)}% -\n \n {AccountIdentifier.ArrayToText(val.marketplace[0].address)}\n \n
\n ) : null}\n
\n );\n }\n\n return ;\n })}\n {toHexString(ev.hash)}} />\n
\n );\n\n if (!showThumb) return inner;\n\n return (\n \n {\"token\" in details ? (\n \n \n \n ) : null}\n {inner}\n \n );\n};\n\nexport const History = (p) => {\n const total = useSelector((state) => state.history.total);\n const events = useSelector((state) => state.history.events);\n const focused = useSelector((state) => state.user.focused);\n\n const canister = p.match.params.canister;\n let from = parseInt(p.match.params.from, 10);\n if (from <= 0) from = 0;\n\n const to = parseInt(p.match.params.to, 10);\n const [isLoading, setLoading] = useState(true);\n\n const [isTailing, setTailing] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n dispatch(loadHistory({ canister, from, to }));\n setLoading(false);\n };\n\n useEffect(() => {\n load();\n }, [dispatch, from, to, canister]);\n\n useInterval(\n async () => {\n let { total, canister } = await dispatch(loadInfo());\n if (to !== total) {\n dispatch(push(`/history/${canister}/${total - SHOW}/${total}`));\n }\n },\n focused && isTailing ? TAIL_INTERVAL : null\n );\n\n if (!events || !events.length) return null;\n\n let evlist = [];\n for (let idx = events.length; idx >= 0; idx--) {\n evlist.push(\n \n );\n }\n\n return (\n \n {/* \n
History canister: {canister}
\n
From {from}
\n
To {to}
\n
Total {total}
\n
*/}\n \n \n setTailing(false)}\n >\n \n \n setTailing(false)}\n >\n \n \n \n \n setTailing(!isTailing)}\n >\n Tail\n \n \n {evlist}\n
\n );\n};\n\nexport const HistoryTx = (p) => {\n const total = useSelector((state) => state.history.total);\n const events = useSelector((state) => state.history.events);\n const space = useSelector((state) => state.user.map.space);\n\n const tx = p.match.params.tx;\n\n const { slot, idx: from } = TransactionId.decode(TransactionId.fromText(tx));\n let canister = PrincipalFromSlot(space, slot).toText();\n //console.log({ canister, slot, from, space });\n // const from = parseInt(tx.substr(tx.lastIndexOf(\"-\") + 1), 10);\n\n const to = from + 1;\n\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n dispatch(loadHistory({ canister, from, to }));\n setLoading(false);\n };\n\n useEffect(() => {\n load();\n }, [dispatch, from, to, canister]);\n\n if (!events || !events.length) return null;\n\n return (\n \n \n \n \n \n \n {events.map((ev, idx) => (\n \n ))}\n \n );\n};\n\nexport const NftHistory = ({ transactions, showThumb }) => {\n const [events, setEvents] = useState([]);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n let evs = await dispatch(loadNftHistory({ transactions }));\n setEvents(evs);\n };\n\n useEffect(() => {\n load();\n }, [dispatch, transactions]);\n\n if (!events || !events.length) return null;\n\n return (\n
\n \n {events.map(({ idx, canister, data }, n) => (\n \n ))}\n \n
\n );\n};\n","import React, { useEffect, useState, useRef } from \"react\";\nimport useWindowSize from \"react-use/lib/useWindowSize\";\nimport Confetti from \"react-confetti\";\n\nexport default function Conf() {\n const { width, height } = useWindowSize();\n return ;\n}\n","export default __webpack_public_path__ + \"static/media/dfinity.ddd01f4a.svg\";","import Dfinity from \"../assets/dfinity.svg\";\nimport { login } from \"../reducers/user\";\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { Button } from \"@chakra-ui/react\";\n\nexport function LoginRequired({ label, children }) {\n const anonymous = useSelector((state) => state.user.anonymous);\n const dispatch = useDispatch();\n\n return anonymous ? (\n <>\n \n }\n mt={4}\n w={\"100%\"}\n colorScheme=\"teal\"\n size=\"lg\"\n onClick={() => dispatch(login())}\n >\n {label ?? \"Authenticate\"}\n \n \n ) : (\n children\n );\n}\n","import { createIcon } from \"@chakra-ui/react\";\n\nexport const Zap = createIcon({\n displayName: \"Zap\",\n viewBox: \"0 0 24 24\",\n // path can also be an array of elements, if you have multiple paths, lines, shapes, etc.\n path: (\n \n ),\n});\n\nexport const AnvilIcon = createIcon({\n displayName: \"UploadIcon\",\n viewBox: \"0 0 125.36 168.64\",\n path: (\n <>\n \n \n ),\n});\n\nexport const UploadIcon = createIcon({\n displayName: \"UploadIcon\",\n viewBox: \"0 0 24 24\",\n path: (\n \n ),\n});\n\nexport const VerifiedIcon = createIcon({\n displayName: \"VerifiedIcon\",\n viewBox: \"0 0 24 24\",\n path: (\n <>\n \n \n \n ),\n});\n","export default __webpack_public_path__ + \"static/media/default.7c6753e8.png\";","export default __webpack_public_path__ + \"static/media/over.bd464dfb.png\";","// If an item is sold and it doesn't match marketplace aid and share, or affiliate share it wont show in the frontend.\nexport const MARKETPLACE_AID =\n \"a00c26536f73f0add51dddd5ef3220bb1842b2783e8ba1c4dd4a2da172b1727a\";\nexport const MARKETPLACE_SHARE = 50; // 10000 is 100% ; 50 is 0.5%\nexport const ANVIL_SHARE = 50;\n\n// if there is affiliate, that will be the share\nexport const AFFILIATE_SHARE = 100;\n\n// This is the nft which curates the storefront\nexport const MARKETPLACE_STAKE_TOKEN_AUTHOR_AID = \"aid\";\n","/* global BigInt */\n\nimport {\n Text,\n useColorMode,\n Stack,\n Box,\n useColorModeValue,\n AbsoluteCenter,\n} from \"@chakra-ui/react\";\nimport { itemQuality } from \"@vvv-interactive/nftanvil-tools/cjs/items.js\";\nimport React, { useEffect, useState } from \"react\";\nimport {\n nftFetch,\n nftEnterCode,\n burn,\n transfer,\n use,\n transfer_link,\n claim_link,\n plug,\n unsocket,\n approve,\n set_price,\n nft_purchase,\n recharge,\n recharge_quote,\n} from \"../reducers/nft\";\n\nimport {\n NumberInput,\n NumberInputField,\n NumberInputStepper,\n NumberIncrementStepper,\n NumberDecrementStepper,\n} from \"@chakra-ui/react\";\n\nimport { verifyDomain, verifyDomainTwitter } from \"../reducers/inventory\";\nimport { setDominantColor } from \"../reducers/user\";\nimport { NftHistory } from \"./History\";\nimport { Spinner } from \"@chakra-ui/react\";\nimport { push } from \"connected-react-router\";\nimport Confetti from \"./Confetti\";\nimport { LoginRequired } from \"./LoginRequired\";\nimport { toast } from \"react-toastify\";\nimport lodash from \"lodash\";\nimport { tokenFromText } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n Center,\n Button,\n Wrap,\n useDisclosure,\n FormLabel,\n FormControl,\n Input,\n Tooltip,\n} from \"@chakra-ui/react\";\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n HStack,\n Tag,\n} from \"@chakra-ui/react\";\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogContent,\n AlertDialogOverlay,\n} from \"@chakra-ui/react\";\nimport {\n Alert,\n AlertIcon,\n AlertTitle,\n AlertDescription,\n Flex,\n Spacer,\n} from \"@chakra-ui/react\";\nimport { Link } from \"react-router-dom\";\nimport { VerifiedIcon } from \"../icons\";\nimport moment from \"moment\";\nimport styled from \"@emotion/styled\";\nimport thumb_bg from \"../assets/default.png\";\nimport thumb_over from \"../assets/over.png\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport { Principal } from \"@dfinity/principal\";\nimport {\n TransactionToast,\n TransactionFailed,\n} from \"../components/TransactionToast\";\nimport { TX, ACC, NFTA, HASH, ICP, PWR } from \"./Code\";\nimport { toHexString } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\nimport { MARKETPLACE_AID, MARKETPLACE_SHARE, ANVIL_SHARE } from \"../config.js\";\nimport {\n AVG_MESSAGE_COST,\n FULLY_CHARGED_MINUTES,\n} from \"@vvv-interactive/nftanvil-tools/cjs/pricing.js\";\n\nconst ContentBox = styled.div`\n margin: 12px 0px;\n\n video,\n img {\n max-width: ${(props) => props.mw || \"85vw\"};\n max-height: ${(props) => props.mh || \"85vh\"};\n margin-bottom: 5vh;\n margin-top: 1vh;\n border-radius: 6px;\n width: ${(props) => props.w || \"85vw\"};\n height: ${(props) => props.h || \"auto\"};\n object-fit: contain;\n }\n`;\n\nconst Thumb = styled.div`\n width: 72px;\n height: 72px;\n border-radius: 6px;\n position: relative;\n box-overflow: hidden;\n\n .border {\n top: 0px;\n left: 0px;\n position: absolute;\n background: url(${thumb_bg});\n background-size: 72px 72px;\n width: 72px;\n height: 72px;\n\n &:hover {\n background-image: url(${thumb_over});\n }\n }\n .custom {\n top: 0px;\n left: 0px;\n position: absolute;\n margin: 4px 4px;\n object-fit: cover;\n object-position: center center;\n height: 64px;\n width: 64px;\n border-radius: 8px;\n }\n`;\n\nconst ThumbLarge = styled.div`\n width: 216px;\n height: 270px;\n position: relative;\n box-overflow: hidden;\n\n .custom {\n top: 0px;\n left: 0px;\n position: absolute;\n object-fit: cover;\n object-position: center center;\n height: 216px;\n width: 216px;\n border-radius: 8px 8px 0px 0px;\n }\n\n .info {\n font-size: 12px;\n position: absolute;\n padding-bottom: 3px;\n padding-left: 10px;\n border-radius: 0px 0px 6px 6px;\n left: 0px;\n bottom: 0px;\n right: 0px;\n height: 54px;\n // text-shadow: 4px 4px 2px rgba(0, 0, 0, 0.6);\n background: ${(props) => (props.mode === \"light\" ? \"#fff\" : \"#1d1b24\")};\n border: 1px solid\n ${(props) => (props.mode === \"light\" ? \"#c4bcdb\" : \"#3f3855\")};\n border-top: 0px solid;\n .label {\n font-size: 9px;\n margin-bottom: -2px;\n }\n .collection {\n position: absolute;\n top: 0px;\n }\n .author {\n position: absolute;\n top: 19px;\n }\n .price {\n text-align: right;\n position: absolute;\n top: 19px;\n right: 8px;\n }\n }\n`;\n\nexport const NFTMenu = ({ id, meta, owner, nobuy = false }) => {\n const pro = useSelector((state) => state.user.pro);\n\n return (\n \n {owner ? (\n \n \n {pro ? : null}\n\n \n {pro ? : null}\n \n \n\n {pro ? : null}\n {pro ? : null}\n {pro ? : null}\n \n ) : (\n \n {!nobuy && meta.transferable && meta.price.amount !== \"0\" ? (\n \n \n \n ) : null}\n \n )}\n \n );\n};\n\nfunction SetPriceButton({ id, meta }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const address = useSelector((state) => state.user.address);\n\n const initialRef = React.useRef();\n const removeSale = async () => {\n onClose();\n let toastId = toast(\"Removing from sale...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n let price = {\n amount: 0,\n marketplace: [\n {\n address: AccountIdentifier.TextToArray(MARKETPLACE_AID),\n share: MARKETPLACE_SHARE,\n },\n ],\n };\n\n try {\n await dispatch(set_price({ id, price }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n
\n
Removed from sale.
\n
\n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Remove from sale error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n const setPriceOk = async () => {\n let priceval = parseFloat(initialRef.current.value);\n\n let amount = AccountIdentifier.icpToE8s(\n priceval /\n (1 - (MARKETPLACE_SHARE + ANVIL_SHARE + meta.authorShare) / 10000)\n );\n\n let price = {\n amount: amount,\n marketplace: [\n {\n address: AccountIdentifier.TextToArray(MARKETPLACE_AID),\n share: MARKETPLACE_SHARE,\n },\n ],\n };\n console.log(price);\n\n onClose();\n let toastId = toast(\"Setting price...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n await dispatch(set_price({ id, price }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n
\n
Setting price successfull.
\n
\n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"SetPrice error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n Set Sell Price\n \n \n \n \n Price in \n \n\n \n \n \n \n \n \n \n\n {/* */}\n \n \n The amount you specify is increased by:\n \n {(MARKETPLACE_SHARE / 100).toFixed(2)}% Marketplace share.\n \n \n {(ANVIL_SHARE / 100).toFixed(2)}% Anvil protocol share.\n \n \n {(meta.authorShare / 100).toFixed(2)}% NFT author share.\n \n \n Additional flat recharge fee if it's not fully charged.\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction TransferButton({ id, meta }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const [alertOpen, setAlertOpen] = React.useState(false);\n\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const confirmOk = async () => {\n let toAddress = initialRef.current.value.toUpperCase();\n\n onClose();\n\n await dispatch(transfer({ id, toAddress }));\n };\n\n const transferOk = async () => {\n let toAddress = initialRef.current.value.toUpperCase();\n if (toAddress.toLowerCase().indexOf(\"a00\") !== 0) {\n setAlertOpen(true);\n return;\n }\n\n onClose();\n\n await dispatch(transfer({ id, toAddress }));\n };\n\n return (\n <>\n \n\n \n \n \n \n \n \n \n {\" \"}\n Warning!\n
\n Address may not support this NFT\n
\n
\n
\n\n \n All NFTAnvil addresses start with A00 and this one doesn't. If you\n send to such address you may not be able to access your NFT.\n \n\n \n \n \n \n
\n
\n
\n\n \n \n \n Send NFT\n \n \n \n To Address\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction ApproveButton({ id, meta }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const approveOk = async () => {\n let spender = Principal.fromText(initialRef.current.value);\n\n onClose();\n let toastId = toast(\"Approving...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n try {\n let { transactionId } = await dispatch(approve({ id, spender }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Transfer error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n Approve\n \n \n \n This will allow a principal to transfer, socket, unsocket and use\n this NFT. Setting one clears the previous.\n \n \n Principal\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction UnsocketButton({ id }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const transferOk = async () => {\n let plug_id = initialRef.current.value;\n onClose();\n let toastId = toast(\"Unplugging...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n try {\n let { transactionId } = await dispatch(\n unsocket({ socket_id: id, plug_id })\n );\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Unplugging error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n return (\n <>\n \n\n \n \n \n Unplug NFT from socket\n \n \n \n Target plug token identifier\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction SocketButton({ id }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const transferOk = async () => {\n let socket_id = initialRef.current.value;\n onClose();\n let toastId = toast(\"Plugging...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n try {\n let { transactionId } = await dispatch(plug({ plug_id: id, socket_id }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Plugging error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: ,\n });\n }\n };\n return (\n <>\n \n\n \n \n \n Plug NFT into socket\n \n \n \n Target socket token identifier\n \n \n Both the plug and the socket need to be owned by the same\n account\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport const UseButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n const useOk = async () => {\n onClose();\n let toastId = toast(\"Using...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n let useData = { cooldown: 2 };\n let memo = [12, 10, 5, 0, 0, 1, 7];\n let { transactionId } = await dispatch(use({ id, use: useData, memo }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n let msg = \"OnCooldown\" in e ? \"On cooldown\" : JSON.stringify(e);\n\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n
\n
Using error.
\n
{msg}
\n
\n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n \n Use NFT\n \n\n \n This use is for demo purposes. Once used, the NFT will have 2 min\n cooldown.\n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const TransferLinkButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [creatingLink, setCreateLink] = React.useState(false);\n\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n const transferOk = async () => {\n setCreateLink(true);\n let code = await dispatch(transfer_link({ id }));\n setCreateLink(false);\n\n setLink(\"https://nftanvil.com/\" + code);\n };\n\n const [link, setLink] = React.useState(false);\n\n return (\n <>\n \n\n \n \n \n {!link ? (\n <>\n \n Create gift code\n \n\n \n Are you sure? Anyone with the code/link will be able to take\n the NFT from you.\n \n\n \n {!creatingLink ? (\n \n ) : null}\n \n Create link\n \n \n \n ) : (\n <>\n \n Link to claim NFT\n \n\n {link}\n\n \n \n \n \n )}\n \n \n \n \n );\n};\n\nexport const BuyButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n let amount = BigInt(meta.price.amount);\n\n const buyOk = () => {\n onClose();\n dispatch(nft_purchase({ id, amount }));\n };\n\n return (\n <>\n {\n setIsOpen(true);\n }}\n >\n Buy\n \n\n \n \n \n \n Buy NFT\n \n\n \n Buy for {AccountIdentifier.e8sToIcp(amount)} ICP ?\n \n The price includes full recharge\n \n \n Please make sure the seller or the author are reputable and\n known to you. If the NFT has domain verification, make sure you\n trust its domain. Someone could have minted artwork downloaded\n from the Internet without the rights to do so. Being displayed\n here doesn't make it legitimate.\n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const BurnButton = ({ id }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n const burnOk = async () => {\n onClose();\n\n let toastId = toast(\"Burning...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n let { transactionId } = await dispatch(burn({ id }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n return (\n <>\n \n\n \n \n \n \n Burn NFT\n \n\n \n Are you sure? This will destroy the NFT completely. You can't undo\n this action afterwards.\n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const RechargeButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [rechargeCost, setRechargeCost] = React.useState(0);\n\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n useEffect(() => {\n dispatch(recharge_quote({ id })).then((re) => {\n setRechargeCost(re);\n });\n }, [id, meta, dispatch]);\n\n const rechargeOk = async () => {\n onClose();\n dispatch(recharge({ id, amount: rechargeCost }));\n };\n\n if (!rechargeCost) return null;\n return (\n <>\n \n\n \n \n \n \n Recharge NFT\n \n\n \n Are you sure? This will take {rechargeCost} from your\n balance and put it in the NFT\n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const NFTPopover = ({ meta }) => {\n return (\n \n {/*
\n \n
*/}\n
\n \n
\n
\n );\n};\n\nexport const NFTLarge = ({ id }) => {\n const meta = useSelector((state) => state.nft[id]);\n\n const mode = useColorModeValue(\"light\", \"dark\");\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(nftFetch(id));\n }, [id, dispatch]);\n\n if (!meta) return null;\n\n return (\n \n \n {meta.thumb?.ipfs?.url ? (\n \"\"\n ) : meta.thumb?.internal?.url ? (\n \"\"\n ) : meta.thumb?.external ? (\n \"\"\n ) : (\n \"\"\n )}\n\n
\n {meta.domain ? (\n meta.domain.indexOf(\"twitter.com/\") !== -1 ? (\n \n ) : (\n \n )\n ) : null}\n {/* {meta.domain ? (\n
\n \n
\n ) : null} */}\n\n
\n
AUTHOR
\n
\n {meta.author}\n
\n
\n {meta.price.amount && meta.price.amount !== \"0\" ? (\n
\n
PRICE
\n {meta.price.amount}\n
\n ) : null}\n
\n \n
\n );\n};\n\nexport const NFT = ({ id, thumbSize }) => {\n const meta = useSelector((state) => state.nft[id]);\n\n const dispatch = useDispatch();\n\n const [popoverOpen, setPopover] = useState(false);\n\n useEffect(() => {\n dispatch(nftFetch(id));\n }, [id, dispatch]);\n\n return (\n {\n setPopover(true);\n }}\n onMouseOut={() => {\n setPopover(false);\n }}\n >\n \n {meta?.thumb?.ipfs?.url ? (\n \"\"\n ) : meta?.thumb?.internal?.url ? (\n \"\"\n ) : meta?.thumb?.external ? (\n \"\"\n ) : (\n \"\"\n )}\n
\n \n {popoverOpen ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport const NFTClaim = (p) => {\n const code = p.match.params.code;\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(nftEnterCode(code));\n }, [code, dispatch]);\n\n return null;\n};\n\nexport const NFTPage = (p) => {\n const id = p.match.params.id;\n const code = p.match.params.code;\n\n const address = useSelector((state) => state.user.address);\n\n const meta = useSelector((state) => state.nft[id]);\n const pro = useSelector((state) => state.user.pro);\n\n const [claimed, setClaimed] = useState(false);\n const [error, setError] = useState(false);\n const [claiming, setClaiming] = useState(false);\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(nftFetch(id));\n }, [id, dispatch]);\n\n const onClaim = async () => {\n setClaiming(true);\n setError(false);\n\n let resp = await dispatch(claim_link({ code }));\n setClaiming(false);\n\n if (resp.ok !== undefined) {\n setClaimed(true);\n } else {\n setError(true);\n }\n };\n\n if (!meta) return null;\n return (\n \n
\n \n
\n
\n \n \n \n\n {pro ? : null}\n \n
\n\n
\n \n
\n\n {claimed ? (\n <>\n \n \n \n Claiming sucess!\n \n The NFT is now yours. This link can't be used again.\n \n \n \n ) : null}\n {!claimed && code ? (\n <>\n
\n \n \n Claim NFT\n \n \n
\n\n {error ? (\n \n \n Claiming failed!\n \n Perhaps someone else claimed this code before you or it's not\n valid\n \n \n ) : null}\n \n ) : null}\n {meta.history ? (\n \n ) : null}\n
\n );\n};\n\nexport const NFTContent = (p) => {\n const dispatch = useDispatch();\n\n //if (p.meta?.content?.external) return null;\n\n const c =\n p.meta?.content?.internal ||\n p.meta?.content?.ipfs ||\n p.meta?.content?.external;\n\n if (!c) return null;\n\n const ctype = c.contentType\n ? c.contentType.indexOf(\"image/\") !== -1\n ? \"image\"\n : c.contentType.indexOf(\"video/\") !== -1\n ? \"video\"\n : \"unknown\"\n : \"image\";\n\n if (ctype === \"unknown\") return null;\n\n const url = c.url || c;\n\n return (\n \n {ctype === \"image\" && url ? (\n \"\"\n ) : null}\n {ctype === \"video\" && url ? (\n \n ) : null}\n \n );\n};\n\nexport const NFTPreview = (p) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport const NFTThumb = (p) => {\n if (p.meta?.thumb?.external) return null;\n\n const c =\n p.meta?.thumb?.internal || p.meta?.thumb?.ipfs || p.meta?.thumb?.external;\n\n if (!c) return null;\n\n return (\n \n {c.url ? \"\" : \"\"}\n
\n \n );\n};\n\nexport const NFTThumbLarge = (p) => {\n const mode = useColorModeValue(\"light\", \"dark\");\n if (p.meta?.thumb?.external) return null;\n\n const c =\n p.meta?.thumb?.internal || p.meta?.thumb?.ipfs || p.meta?.thumb?.external;\n\n if (!c) return null;\n\n return (\n \n {c.url ? \"\" : \"\"}\n
\n {p.meta.domain ? (\n
\n {p.meta.domain ? (\n p.meta.domain.indexOf(\"twitter.com/\") !== -1 ? (\n \n ) : (\n \n )\n ) : null}\n
\n ) : null}\n\n
\n
AUTHOR
\n
\n {p.meta.author}\n
\n
\n {p.meta.price.amount && p.meta.price.amount !== \"0\" ? (\n
\n
PRICE
\n {p.meta.price.amount}\n
\n ) : null}\n
\n
\n );\n};\n\nconst MetaDomainTwitter = ({ meta, showLink }) => {\n let url = new URL(\"https://\" + meta.domain);\n let surl = url.href.replace(/^https?:\\/\\//, \"\");\n const dispatch = useDispatch();\n const domainInfo = useSelector((state) => state.inventory[surl + \"_domain\"]);\n const isLoading = domainInfo === -1 ? true : false;\n let verified = false;\n try {\n if (!isLoading && domainInfo === meta.author) verified = true;\n } catch (e) {\n console.log(e);\n }\n\n useEffect(() => {\n dispatch(verifyDomainTwitter(surl));\n }, [surl, dispatch]);\n\n let urlSafe = verified ? \"https://\" + surl : null;\n\n const [a, b, c, d] = meta.domain.split(\"/\");\n\n let content = (\n <>\n {a}/{b}{\" \"}\n {isLoading ? (\n \n ) : verified ? (\n \n ) : null}\n \n );\n\n return (\n \n {showLink && urlSafe ? (\n \n {content}\n \n ) : (\n content\n )}\n \n );\n};\n\nconst MetaDomain = ({ meta, showLink }) => {\n let url = new URL(\"https://\" + meta.domain);\n const dispatch = useDispatch();\n const domainInfo = useSelector(\n (state) => state.inventory[url.hostname + \"_domain\"]\n );\n const isLoading = domainInfo === -1 ? true : false;\n let verified = false;\n try {\n if (\n !isLoading &&\n typeof domainInfo === \"object\" &&\n domainInfo[url.pathname].indexOf(meta.author) !== -1\n )\n verified = true;\n } catch (e) {\n console.log(e);\n }\n\n useEffect(() => {\n dispatch(verifyDomain(url.hostname));\n }, [url.hostname, dispatch]);\n\n let urlSafe = verified ? \"https://\" + url.hostname + url.pathname : null;\n\n let content = (\n <>\n {meta.domain}{\" \"}\n {isLoading ? (\n \n ) : verified ? (\n \n ) : null}\n \n );\n\n return (\n \n {showLink && urlSafe ? (\n \n {content}\n \n ) : (\n content\n )}\n \n );\n};\n\nconst capitalize = (x) => x.charAt(0).toUpperCase() + x.slice(1);\n\nexport const NFTInfo = ({ id, meta }) => {\n const mode = useColorModeValue(\"light\", \"dark\");\n\n const bg = useColorModeValue(\"gray.100\", \"gray.700\");\n const textColor = useColorModeValue(\"gray.900\", \"gray.100\");\n const isDark = mode === \"dark\";\n if (!meta || !(\"quality\" in meta)) return null;\n const qcolor = itemQuality[mode][meta.quality].color;\n let nowMinutes = Math.floor(Date.now() / 1000 / 60);\n\n let things = [\n meta.name ? (\n \n {capitalize(meta.name)}\n \n ) : null,\n meta.tags && meta.tags.length ? (\n \n {meta.tags.map((a, idx) => (\n \n {a}\n \n ))}\n \n ) : null,\n meta.domain ? (\n meta.domain.indexOf(\"twitter.com/\") !== -1 ? (\n \n ) : (\n \n )\n ) : null,\n \"bindsForever\" in meta.transfer ? (\n \n Binds on transfer\n \n ) : null,\n \"bindsDuration\" in meta.transfer ? (\n \n Binds on transfer for{\" \"}\n {moment.duration(meta.transfer.bindsDuration, \"minutes\").humanize()}\n \n ) : null,\n meta.boundUntil > nowMinutes ? (\n \n {\"bound for \" +\n moment.duration(meta.boundUntil - nowMinutes, \"minutes\").humanize()}\n \n ) : null,\n meta?.use?.consumable?.desc ? (\n \n Use: {capitalize(meta.use.consumable.desc)} (Consumed in the process)\n \n ) : null,\n meta.cooldownUntil > nowMinutes ? (\n \n {moment\n .duration(meta.cooldownUntil - nowMinutes, \"minutes\")\n .humanize() + \" cooldown left\"}\n \n ) : null,\n meta?.use?.cooldown?.desc ? (\n \n Use: {capitalize(meta.use.cooldown.desc)} (\n {moment.duration(meta.use.cooldown.duration, \"minutes\").humanize()}{\" \"}\n cooldown)\n \n ) : null,\n meta?.secret ? (\n \n Secret\n \n ) : null,\n meta.hold?.external?.desc ? (\n \n Hold: {capitalize(meta.hold.external.desc)}\n \n ) : null,\n meta.attributes && meta.attributes.length\n ? meta.attributes.map((a, idx) => (\n \n {a[1] >= 0 ? \"+\" : \"\"}\n {a[1]} {capitalize(a[0])}\n \n ))\n : null,\n meta.lore ? (\n \n \"{capitalize(meta.lore)}\"\n \n ) : null,\n meta.rechargeable && meta.ttl && meta.ttl > 0 ? (\n \n Recharge in {moment.duration(meta.ttl, \"minutes\").humanize()}\n \n ) : null,\n !meta.rechargeable && meta.ttl && meta.ttl > 0 ? (\n \n Expires in {moment.duration(meta.ttl, \"minutes\").humanize()}\n \n ) : null,\n meta.sockets && meta.sockets.length ? (\n \n {meta.sockets.map((tid, idx) => (\n \n ))}\n \n ) : null,\n meta.price.amount && meta.price.amount !== \"0\" ? (\n \n {meta.price.amount}\n \n ) : null,\n id ? (\n \n \n \n\n \n {id}\n \n \n ) : null,\n ].filter(Boolean);\n\n if (!things.length) return null;\n return (\n \n {meta.content?.thumb?.url ? : \"\"}\n\n {things}\n \n );\n};\n\nconst NFTBatFull = styled.span`\n display: inline-block;\n background-color: ${(props) => props.color};\n width: 4px;\n margin-left: 1px;\n border-radius: 1px;\n height: 7px;\n`;\n\nexport const NFTBattery = ({ meta }) => {\n const icpCycles = Number(useSelector((state) => state.user.oracle.icpCycles));\n\n const avg_msg_cost_pwr = Number(AVG_MESSAGE_COST) / icpCycles; //TODO: calculate it from oracle data\n let ttl = meta.ttl > 0 ? meta.ttl : Number(FULLY_CHARGED_MINUTES);\n let msg_full = (ttl / 60 / 24 + 100) * avg_msg_cost_pwr;\n let perc = meta.pwr[0] / msg_full;\n let avg_num_ops_left = Math.round(meta.pwr[0] / avg_msg_cost_pwr);\n\n let color = `rgb(${Math.floor(125 - 125 * perc)}, ${Math.floor(\n 200 * perc\n )}, 255)`;\n let colorEmpty = `rgb(${Math.floor(255 - 255 * perc)}, 70, 70)`;\n return (\n \n \n {avg_num_ops_left + \" operations left\"}\n \n \n Indicator displaying PWR stored inside the NFT. Refills\n automatically on marketplace sale.\n \n \n }\n >\n \n = 0.15 ? color : colorEmpty} />\n = 0.5 ? color : colorEmpty} />\n = 0.75 ? color : colorEmpty} />\n = 0.9 ? color : colorEmpty} />\n \n \n );\n};\n\nexport const NFTProInfo = ({ id, meta }) => {\n const bg = useColorModeValue(\"gray.200\", \"gray.900\");\n if (!meta || !(\"quality\" in meta)) return null;\n\n let nowMinutes = Math.floor(Date.now() / 1000 / 60);\n\n //if (!meta.name) return null;\n return (\n \n {meta.content?.thumb?.url ? : \"\"}\n\n \n {/* {id ? (\n \n ID: {id}\n \n ) : null} */}\n {meta.pwr ? (\n \n Ops: {meta.pwr[0]} Storage: {meta.pwr[1]}\n \n ) : null}\n {meta.bearer ? (\n \n \n Bearer: {meta.bearer}\n \n \n ) : null}\n {meta.author ? (\n \n \n Author: {meta.author}\n \n \n ) : null}\n {meta.authorShare ? (\n \n Author's share: {(meta.authorShare / 100).toFixed(2)}%\n \n ) : null}\n {meta.created ? (\n \n Minted: {moment(meta.created * 60 * 1000).format(\"LLLL\")}\n \n ) : null}\n {meta.entropy ? (\n \n Entropy: {toHexString(meta.entropy)}\n \n ) : null}\n \n \n );\n};\n","import { nftCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/nft.js\";\nimport { accountCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/account.js\";\nimport { pwrCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/pwr.js\";\nimport { routerCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/router.js\";\n\nimport { historyCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/history.js\";\n\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport authentication from \"../auth\";\nimport { BigIntToString } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nexport const financial =\n ({}) =>\n async (dispatch, getState) => {};\n\nexport const pwr_stats =\n ({ slot }) =>\n async (dispatch, getState) => {\n let s = getState();\n let canisterId = PrincipalFromSlot(s.user.map.space, slot);\n let identity = authentication.client.getIdentity();\n\n let pwr = pwrCanister(canisterId, {\n agentOptions: await authentication.getAgentOptions(),\n });\n let stats = await pwr.stats();\n return stats;\n };\n\nexport const router_stats = () => async (dispatch, getState) => {\n let s = getState();\n let canisterId = s.user.map.router;\n let identity = authentication.client.getIdentity();\n let { router } = routerCanister(canisterId, {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let stats = await router.stats();\n\n return stats;\n};\n\nexport const nft_stats =\n ({ slot }) =>\n async (dispatch, getState) => {\n let s = getState();\n let canisterId = PrincipalFromSlot(s.user.map.space, slot);\n let identity = authentication.client.getIdentity();\n\n let nft = nftCanister(canisterId, {\n agentOptions: await authentication.getAgentOptions(),\n });\n let stats = await nft.stats();\n stats.canister = canisterId.toText();\n\n return stats;\n };\n\nexport const account_stats =\n ({ slot }) =>\n async (dispatch, getState) => {\n let s = getState();\n let canisterId = PrincipalFromSlot(s.user.map.space, slot);\n let identity = authentication.client.getIdentity();\n\n let can = accountCanister(canisterId, {\n agentOptions: await authentication.getAgentOptions(),\n });\n let stats = await can.stats();\n stats.canister = canisterId.toText();\n\n return stats;\n };\n\nexport const history_stats =\n ({ slot }) =>\n async (dispatch, getState) => {\n let s = getState();\n let canisterId = PrincipalFromSlot(s.user.map.space, slot);\n let identity = authentication.client.getIdentity();\n\n let can = historyCanister(canisterId, {\n agentOptions: await authentication.getAgentOptions(),\n });\n let stats = await can.stats();\n stats.canister = canisterId.toText();\n\n return stats;\n };\n","/* global BigInt */\nimport React from \"react\";\nimport {\n Box,\n Spinner,\n Wrap,\n useColorModeValue,\n Center,\n Button,\n Flex,\n ButtonGroup,\n Spacer,\n Text,\n Stack,\n Grid,\n GridItem,\n Heading,\n Tooltip,\n useClipboard,\n} from \"@chakra-ui/react\";\nimport { Progress } from \"@chakra-ui/react\";\nimport { BigIntToString } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nimport { useEffect, useState } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useWindowSize, useInterval } from \"react-use\";\n\nimport { NFT } from \"./NFT\";\nimport itemgrid from \"../assets/itemgrid.png\";\nimport itemgrid_light from \"../assets/itemgrid_light.png\";\nimport moment from \"moment\";\nimport { Link } from \"react-router-dom\";\n\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n loadInfo,\n loadHistory,\n tailHistory,\n loadNftHistory,\n} from \"../reducers/history\";\n\nimport {\n nft_stats,\n history_stats,\n pwr_stats,\n account_stats,\n router_stats,\n financial,\n} from \"../reducers/dashboard\";\n\nimport styled from \"@emotion/styled\";\nimport { push } from \"connected-react-router\";\n\nimport {\n toHexString,\n bytesToBase58,\n} from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\nimport {\n tokenFromBlob,\n tokenToText,\n decodeTokenId,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n PrincipalFromSlot,\n PrincipalToIdx,\n PrincipalToSlot,\n} from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\n\nimport { cluster_info } from \"../reducers/history.js\";\nimport { map } from \"lodash\";\n\nfunction MeterNumber({ label, val, metric }) {\n return (\n \n {label}\n {metric === \"icp\" ? (\n \n {val}\n \n ) : (\n <>\n {val}\n \n {metric}\n \n \n )}\n \n );\n}\n\nexport const tc = (c) => (Number(c / 100000000000n) / 10).toFixed(2);\n\nexport function AccountStats({ slot }) {\n const dispatch = useDispatch();\n\n const [stats, setStats] = useState(null);\n\n const load = async () => {\n setStats(await dispatch(account_stats({ slot })));\n };\n\n useEffect(() => {\n load();\n }, [slot]);\n\n if (!stats) return null;\n\n //const mem_mb = Number(stats.rts_total_allocation / 1024n / 1024n);\n const heap_mb = Number(stats.rts_heap_size / 1024n / 1024n);\n const mem_mb = Number(stats.rts_memory_size / 1024n / 1024n);\n\n return (\n <>\n \n {slot}\n \n {Number(stats.total_accounts)}\n\n {tc(stats.cycles)} TC\n {tc(stats.cycles_recieved - stats.cycles)} TC\n\n {heap_mb}MB\n {mem_mb}MB\n \n );\n}\n\nexport function PwrStats({ slot }) {\n const dispatch = useDispatch();\n\n const [stats, setStats] = useState(null);\n const map = useSelector((state) => state.user.map);\n\n const load = async () => {\n setStats(await dispatch(pwr_stats({ slot })));\n };\n\n useEffect(() => {\n load();\n }, [slot]);\n\n if (!stats) return null;\n\n //const mem_mb = Number(stats.rts_total_allocation / 1024n / 1024n);\n const heap_mb = Number(stats.rts_heap_size / 1024n / 1024n);\n const mem_mb = Number(stats.rts_memory_size / 1024n / 1024n);\n\n return (\n <>\n \n {slot}\n \n {Number(stats.total_accounts)}\n\n {tc(stats.cycles)} TC\n {tc(stats.cycles_recieved - stats.cycles)} TC\n\n {heap_mb}MB\n {mem_mb}MB\n \n );\n}\n\nexport function RouterStats() {\n const dispatch = useDispatch();\n\n const [stats, setStats] = useState(null);\n\n const load = async () => {\n setStats(await dispatch(router_stats()));\n };\n\n useEffect(() => {\n load();\n }, []);\n\n if (!stats) return null;\n //const mem_mb = Number(stats.rts_total_allocation / 1024n / 1024n);\n const heap_mb = Number(stats.rts_heap_size / 1024n / 1024n);\n const mem_mb = Number(stats.rts_memory_size / 1024n / 1024n);\n\n return (\n <>\n {tc(stats.cycles)} TC\n {tc(stats.cycles_recieved - stats.cycles)} TC\n\n {heap_mb}MB\n {mem_mb}MB\n \n );\n}\n\nexport function NftStats({ slot }) {\n const dispatch = useDispatch();\n\n const [stats, setStats] = useState(null);\n\n const load = async () => {\n setStats(await dispatch(nft_stats({ slot })));\n };\n\n useEffect(() => {\n load();\n }, [slot]);\n\n if (!stats) return null;\n\n //const mem_mb = Number(stats.rts_total_allocation / 1024n / 1024n);\n const heap_mb = Number(stats.rts_heap_size / 1024n / 1024n);\n const mem_mb = Number(stats.rts_memory_size / 1024n / 1024n);\n\n //- {stats.canister}\n return (\n <>\n \n {slot}\n \n {stats.minted}\n {stats.burned}\n {stats.transfers}\n {stats.icall_errors.toString()}\n\n {tc(stats.cycles)} TC\n {tc(stats.cycles_recieved - stats.cycles)} TC\n\n {heap_mb}MB\n {mem_mb}MB\n \n );\n}\n\nexport function SLOT({ children }) {\n const map = useSelector((state) => state.user.map);\n let p = PrincipalFromSlot(map.space, children).toText();\n\n const { onCopy } = useClipboard(p);\n\n return (\n \n
onCopy()}>{children}
\n
\n );\n}\n\nexport function HistoryStats({ slot }) {\n const dispatch = useDispatch();\n\n const [stats, setStats] = useState(null);\n\n const load = async () => {\n setStats(await dispatch(history_stats({ slot })));\n };\n\n useEffect(() => {\n load();\n }, [slot]);\n\n if (!stats) return null;\n\n const heap_mb = Number(stats.rts_heap_size / 1024n / 1024n);\n const mem_mb = Number(stats.rts_memory_size / 1024n / 1024n);\n\n return (\n <>\n \n {slot}\n \n {stats.transactions}\n {tc(stats.cycles)} TC\n {tc(stats.cycles_recieved - stats.cycles)} TC\n\n {heap_mb}MB\n {mem_mb}MB\n \n );\n}\n\nexport function Orchestration() {\n const [info, setInfo] = useState(null);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n setInfo(BigIntToString(await dispatch(router_stats())));\n };\n\n useEffect(() => {\n load();\n }, [dispatch]);\n if (!info) return null;\n\n return (\n
\n \n \n Orchestration\n \n\n \n \n \n \n \n \n
\n );\n}\n\nexport function Financial() {\n const [info, setInfo] = useState(null);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n setInfo(BigIntToString(await dispatch(financial())));\n };\n\n useEffect(() => {\n load();\n }, [dispatch]);\n if (!info) return null;\n\n return (\n
\n \n \n Financial\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport function DashboardPage() {\n const [info, setInfo] = useState(null);\n\n const dispatch = useDispatch();\n\n const focused = useSelector((state) => state.user.focused);\n\n const load = async () => {\n let rez = await dispatch(cluster_info());\n\n rez.log.reverse();\n setInfo(rez);\n };\n\n useInterval(\n async () => {\n await load();\n },\n focused ? 10000 : null\n );\n\n useEffect(() => {\n load();\n }, [dispatch]);\n\n if (!info) return null;\n console.log(\"CINFO\", info);\n //info.map.space[0] = [BigInt(5000), BigInt(10000)];\n let total_range = Number(info.map.space[0][1] - info.map.space[0][0]) + 1;\n let total_nft =\n Number(info.map.nft_avail[info.map.nft_avail.length - 1]) -\n Number(info.map.nft[0]) +\n 1;\n let total_account = Number(info.map.account[1] - info.map.account[0]) + 1;\n let total_pwr = Number(info.map.pwr[1] - info.map.pwr[0]) + 1;\n\n let total_other = 2;\n\n let total_history = Number(info.map.history - info.map.history_range[0]) + 1;\n\n let nft_available = Number(info.map.nft[1] - info.map.nft[0]) + 1 - total_nft;\n let history_available =\n Number(info.map.history_range[1] - info.map.history_range[0]) +\n 1 -\n total_history;\n\n return (\n
\n \n \n {/* */}\n \n \n \n Cluster\n \n\n \n \n \n \n \n \n\n \n\n \n\n {}\n \n \n \n \n \n Nft\n \n Canister\n Minted\n Burned\n Transferred\n ICE\n Balance\n Spent\n Heap\n Memory\n\n {Array(total_nft)\n .fill(0)\n .map((_, idx) => {\n return (\n \n );\n })}\n \n \n\n \n Account\n \n Canister\n Accounts\n\n Balance\n Spent\n Heap\n Memory\n\n {Array(total_account)\n .fill(0)\n .map((_, idx) => {\n return (\n \n );\n })}\n \n \n\n \n Pwr\n \n Canister\n\n Accounts\n Balance\n Spent\n Heap\n Memory\n\n {Array(total_pwr)\n .fill(0)\n .map((_, idx) => {\n return (\n \n );\n })}\n \n \n\n \n Router\n \n Balance\n Spent\n Heap\n Memory\n\n \n \n \n\n \n History\n \n Canister\n Transactions\n Balance\n Spent\n Heap\n Memory\n\n {Array(total_history)\n .fill(0)\n .map((_, idx) => {\n return (\n \n );\n })}\n \n \n\n {/* \n \n */}\n\n {/* \n {Array(Number(info.map.space[0][1] - info.map.space[0][0]))\n .fill(0)\n .map((_, idx) => {\n let c = info.map.space[0][0] + BigInt(idx);\n return (\n \n );\n })}\n */}\n \n \n Log\n \n {info.log.map((x, idx) => {\n return (\n \n \n {moment(x.time * 1000).format(\"MM.DD.YY, HH:mm:ss\")}\n \n {x.msg}\n \n );\n })}\n \n \n \n
\n );\n}\n","import React from \"react\";\nimport {\n Box,\n Spinner,\n Wrap,\n useColorModeValue,\n Center,\n Button,\n Stack,\n Flex,\n ButtonGroup,\n Spacer,\n HStack,\n Text,\n} from \"@chakra-ui/react\";\n\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n useDisclosure,\n} from \"@chakra-ui/react\";\nimport { saveDisclaimer } from \"../reducers/user.js\";\n\nexport function Disclaimer() {\n const disclaimer = useSelector((state) => state.user.disclaimer);\n const dispatch = useDispatch();\n\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const onAgree = () => {\n dispatch(saveDisclaimer(true));\n onClose();\n };\n\n if (disclaimer !== false) return null;\n\n return (\n \n \n \n \n NFTAnvil Disclaimer\n \n \n \n Acknowledgement of Terms & Conditions of access\n \n \n Use of the Anvil Protocol and NFTAnvil mint, marketplace, services,\n dapp or application is subject to the following terms and conditions\n and I hereby confirm that by proceeding and interacting with the\n protocol I am aware of these and accept them in full:\n \n\n \n NFTAnvil is a dapp and Anvil is a smart contract protocol, both in\n alpha state of launch, I understand the risks associated with using\n them and their associated functions.\n \n \n Any interactions that I have with the associated NFTAnvil & Anvil\n protocol apps, smart contracts or any related functions MAY place my\n funds at risk, and I hereby release NFTAnvil & the Anvil protocol\n and its contributors, team members, NFT sellers, NFT authors, and\n service providers from any and all liability associated with my use\n of the above-mentioned functions.\n \n \n I am lawfully permitted to access this site and use the NFTAnvil &\n Anvil protocol application functions, and I am not in contravention\n of any laws governing my jurisdiction of residence or citizenship.\n \n \n \n I understand the risks involved,
proceed to the app\n \n
\n
\n
\n \n );\n}\n","export default __webpack_public_path__ + \"static/media/powered.dark.a5ca9442.svg\";","export default __webpack_public_path__ + \"static/media/powered.light.40fc78ad.svg\";","export default __webpack_public_path__ + \"static/media/logo-nft.storage.1f0aea71.svg\";","import React from \"react\";\nimport { saveNftStorageKey, setNftStorageModal } from \"../reducers/user\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport logo from \"../assets/logo-nft.storage.svg\";\n\nimport { Button } from \"@chakra-ui/react\";\nimport {\n Modal,\n ModalOverlay,\n ModalCloseButton,\n ModalBody,\n FormLabel,\n Input,\n FormControl,\n ModalFooter,\n ModalContent,\n ModalHeader,\n FormErrorMessage,\n Text,\n} from \"@chakra-ui/react\";\n\nimport { Formik, Field, Form } from \"formik\";\n\nexport const Nftstorage = () => {\n const initialRef = React.useRef();\n const open = useSelector((state) => state.user.modal_nftstorage);\n const key = useSelector((state) => state.user.key_nftstorage);\n const dispatch = useDispatch();\n\n return (\n {\n dispatch(setNftStorageModal(false));\n }}\n >\n \n \n \n \n \"NFT\n \n \n\n \n \n \n In order to use IPFS you need to register and obtain API Key from{\" \"}\n \n NFT.Storage\n \n .
\n You will get for FREE IPFS storage with FileCoin and cloud\n redundancy. Made by Protocol Labs.\n
\n \n
\n
\n \n );\n};\n\nfunction NftstorageForm({ currentKey }) {\n const dispatch = useDispatch();\n\n function validateKey(value) {\n let error;\n if (!value) {\n error = \"Key is required\";\n } else if (value.length < 10) {\n error = \"Required\";\n }\n return error;\n }\n\n return (\n {\n dispatch(saveNftStorageKey(values.key));\n dispatch(setNftStorageModal(false));\n }}\n >\n {(props) => (\n
\n \n {({ field, form }) => (\n \n NFT Storage API key\n \n {form.errors.code}\n \n )}\n \n\n \n Save\n \n \n )}\n \n );\n}\n","import React from \"react\";\n\nimport { Button, Box, Center, Stack } from \"@chakra-ui/react\";\nimport { UploadIcon } from \"../icons\";\nexport const FileInput = (props) => {\n const inputRef = React.createRef();\n return (\n <>\n {\n let { size, type } = ev.target.files[0];\n let url = URL.createObjectURL(ev.target.files[0]);\n props.onChange({ size, type, url });\n }}\n />\n\n {\n if (inputRef?.current) {\n inputRef.current.value = \"\";\n inputRef.current.click();\n }\n }}\n >\n \n \n
\n \n
\n
\n {props.label || \"Upload\"}\n
\n \n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { mint_quote } from \"../reducers/nft\";\n\nimport {\n Box,\n Text,\n useRadio,\n HStack,\n useRadioGroup,\n Tooltip,\n Spinner,\n Skeleton,\n} from \"@chakra-ui/react\";\nimport { useDebounce } from \"react-use\";\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\n\nconst DUR_IN_MINUTES = 1036800; // 2 years\n\nexport const presets = {\n \"ic-lite\": {\n storage: \"internal\",\n ttl: DUR_IN_MINUTES,\n },\n \"ic-premium\": { storage: \"internal\", ttl: null },\n ipfs: { storage: \"ipfs\", ttl: DUR_IN_MINUTES },\n};\n\nexport const PwrPrice = ({ record, valid }) => {\n const [pwrPrice, setPwrPrice] = useState(0);\n const dispatch = useDispatch();\n\n useDebounce(\n () => {\n if (!valid) return;\n // setPwrPrice(0);\n dispatch(mint_quote(record)).then((re) => {\n setPwrPrice(re.ops + re.storage);\n });\n },\n 300,\n [record, valid, dispatch]\n );\n\n return (\n \n {!pwrPrice ? (\n \n ) : (\n <>\n {pwrPrice}\n \n )}\n \n );\n};\n\nconst changeToStorage = (x, s) => {\n if (!x) return x;\n let v = x[Object.keys(x)[0]];\n return { [s]: v };\n};\n\nfunction OptionIpfs({ record, valid }) {\n let { ttl, content, thumb, quality } = record;\n\n let changed = {\n ttl: DUR_IN_MINUTES,\n content: changeToStorage(content, \"ipfs\"),\n thumb: changeToStorage(thumb, \"ipfs\"),\n quality,\n };\n return (\n <>\n \n TINY\n \n Free IPFS storage\n 10% prepaid\n \n \n );\n}\n\nfunction OptionIcLite({ record, valid }) {\n let { ttl, content, thumb, quality } = record;\n let changed = {\n ttl: DUR_IN_MINUTES,\n content: changeToStorage(content, \"internal\"),\n thumb: changeToStorage(thumb, \"internal\"),\n quality,\n };\n return (\n <>\n \n HUGE\n \n IC storage\n \n 10% prepaid\n \n \n \n );\n}\n\nfunction OptionIcPremium({ record, valid }) {\n let { ttl, content, thumb, quality } = record;\n let changed = {\n ttl: null,\n content: changeToStorage(content, \"internal\"),\n thumb: changeToStorage(thumb, \"internal\"),\n quality,\n };\n return (\n <>\n \n L33T\n \n IC storage\n \n 100% prepaid\n \n \n \n );\n}\n\nexport function PricingPresets({ onChange, valid, record }) {\n const options = {\n ipfs: ,\n \"ic-lite\": ,\n \"ic-premium\": ,\n };\n\n const { getRootProps, getRadioProps } = useRadioGroup({\n name: \"preset-tmp\",\n defaultValue: \"ic-lite\",\n onChange,\n });\n\n const group = getRootProps();\n\n return (\n \n {Object.keys(options).map((value) => {\n const radio = getRadioProps({ value });\n return (\n \n {options[value]}\n \n );\n })}\n \n );\n}\n\nexport function PresetBox(props) {\n const { getInputProps, getCheckboxProps } = useRadio(props);\n\n const input = getInputProps();\n const checkbox = getCheckboxProps();\n\n return (\n \n \n \n {props.children}\n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { mint } from \"../reducers/nft\";\nimport { proModeSet, setNftStorageModal } from \"../reducers/user\";\nimport { LoginRequired } from \"./LoginRequired\";\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { Button, Box, IconButton, Tooltip } from \"@chakra-ui/react\";\nimport { useWindowSize, useDebounce } from \"react-use\";\n\nimport {\n Flex,\n Spacer,\n useColorModeValue,\n FormLabel,\n Input,\n FormControl,\n FormErrorMessage,\n Textarea,\n Text,\n Grid,\n} from \"@chakra-ui/react\";\n\nimport {\n NumberInput,\n NumberInputField,\n NumberInputStepper,\n NumberIncrementStepper,\n NumberDecrementStepper,\n Stack,\n Center,\n Spinner,\n} from \"@chakra-ui/react\";\nimport {\n Slider,\n SliderTrack,\n SliderFilledTrack,\n SliderThumb,\n} from \"@chakra-ui/react\";\nimport { SmallCloseIcon, InfoOutlineIcon, CheckIcon } from \"@chakra-ui/icons\";\n\nimport { AnvilIcon } from \"../icons\";\n\nimport { Select } from \"@chakra-ui/react\";\nimport { Formik, Field, Form, FieldArray } from \"formik\";\nimport { Switch } from \"@chakra-ui/react\";\nimport { toast } from \"react-toastify\";\n\nimport {\n itemQuality,\n itemTransfer,\n itemUse,\n itemHold,\n} from \"@vvv-interactive/nftanvil-tools/cjs/items.js\";\nimport { FileInput } from \"./FileInput\";\nimport { NFTPreview } from \"./NFT\";\nimport { resizeImage } from \"@vvv-interactive/nftanvil-tools/cjs/image.js\";\nimport { Principal } from \"@dfinity/principal\";\nimport {\n validateName,\n validateExtensionCanister,\n validateHoldId,\n validateUseId,\n validateDescription,\n validateThumbInternal,\n validateContentInternal,\n validateExternal,\n validateExternalType,\n validateDescriptionOrNone,\n validateCooldown,\n validateAttributeName,\n validateAttributeChange,\n mintFormValidate,\n validateDomain,\n validateTagName,\n} from \"@vvv-interactive/nftanvil-tools/cjs/validate.js\";\n\nimport { PricingPresets, presets } from \"./PricingPresets\";\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport { values } from \"lodash\";\n\nexport const Mint = () => {\n return ;\n};\n\nexport const ProToggle = () => {\n const dispatch = useDispatch();\n const pro = useSelector((state) => state.user.pro);\n\n return (\n \n \n ADVANCED\n \n dispatch(proModeSet(e.target.checked))}\n />\n \n );\n};\n\nconst form2record = (v, { address } = {}) => {\n let a = {\n domain: v.domain.replace(/^http[s]*?:\\/\\//, \"\"),\n author: address, // not sent to minting, temporary here for the preview\n price: {\n amount: AccountIdentifier.icpToE8s(v.price),\n marketplace: [],\n },\n authorShare: v.authorShare,\n name: v.name,\n lore: v.lore,\n transfer: {\n [v.transfer]:\n v.transfer === \"bindsDuration\"\n ? parseInt(v.transfer_bind_duration, 10)\n : null,\n },\n\n quality: parseInt(v.quality, 10),\n ttl: presets[v.preset].ttl,\n attributes: v.attributes.map((x) => [\n x.name.toLowerCase(),\n parseInt(x.change, 10),\n ]),\n tags: v.tags.map((x) => x.toLowerCase()),\n content: v.content?.url\n ? {\n [presets[v.preset].storage]: {\n url: v.content.url,\n contentType: v.content.type,\n size: v.content.size,\n },\n }\n : null,\n\n thumb: v.thumb?.url\n ? {\n [presets[v.preset].storage]: {\n url: v.thumb.url,\n contentType: v.thumb.type,\n size: v.thumb.size,\n },\n }\n : null,\n\n secret: v.secret,\n };\n return a;\n};\n\nconst record2request = (v) => {\n let a = {\n price: v.price,\n domain: v.domain ? [v.domain] : [],\n authorShare: Math.round(v.authorShare * 100),\n name: [v.name].filter(Boolean),\n lore: [v.lore].filter(Boolean),\n transfer: v.transfer,\n quality: v.quality,\n ttl: [v.ttl].filter(Boolean),\n attributes: v.attributes.filter(Boolean),\n tags: v.tags.filter(Boolean),\n content: [v.content].filter(Boolean),\n thumb: v.thumb,\n secret: v.secret,\n custom: [],\n rechargeable: true,\n customVar: [],\n };\n return a;\n};\n\nexport const MintForm = () => {\n const mode = useColorModeValue(\"light\", \"dark\");\n\n const { width, height } = useWindowSize();\n const isDesktop = width > 480;\n const address = useSelector((state) => state.user.address);\n\n const dispatch = useDispatch();\n const pro = useSelector((state) => state.user.pro);\n const NFTStorageAPIKey = useSelector((state) => state.user.key_nftstorage);\n\n const devGetRecord = (values) => {\n let s = record2request(form2record(values));\n console.log(s);\n };\n\n const boxColor = useColorModeValue(\"white\", \"gray.600\");\n const boxHeadColor = useColorModeValue(\"gray.200\", \"gray.700\");\n\n return (\n {\n // setInterval(() => {\n\n // console.log(\"FORM VALUES\", values);\n // dispatch(mint());\n // }, 1000);\n\n try {\n await dispatch(mint(record2request(form2record(values))));\n actions.setSubmitting(false);\n } catch (e) {\n actions.setSubmitting(false);\n throw e;\n }\n\n // dispatch(sendSolution(values.code));\n }}\n >\n {(props) => {\n let record = form2record(props.values, { address });\n return (\n <>\n \n \n
\n \n \n Mint\n \n\n \n \n \n\n \n {/* {parentsAvailable.length ? (\n \n {({ field, form }) => (\n \n Parent\n\n \n \n )}\n \n ) : (\n \"\"\n )} */}\n\n {\n if (info.type.indexOf(\"image/\") !== -1) {\n if (info.size > 1024 * 1024) {\n let x = await resizeImage(info.url, 1280, 1280);\n props.setFieldValue(\"content\", x);\n\n toast.info(\n \"Image was too big. Resizing automatically\",\n { position: \"bottom-center\" }\n );\n }\n let f = await resizeImage(info.url, 432, 432, true);\n console.log(\"resized\", f);\n props.setFieldValue(\"thumb\", f);\n }\n }}\n accept=\"image/*,video/*\"\n validateInternal={validateContentInternal}\n validateExternal={validateExternal}\n validateExternalType={validateExternalType}\n pro={pro}\n />\n {pro ? (\n \n {({ field, form }) => (\n \n \n \n Secret content, public thumbnail\n \n \n \n \n {form.errors.secret}\n \n \n )}\n \n ) : null}\n\n {\n if (info.type.indexOf(\"image/\") !== -1) {\n if (info.size > 1024 * 128) {\n let x = await resizeImage(info.url, 432, 432);\n console.log(\"resized\", x);\n props.setFieldValue(\"thumb\", x);\n toast.info(\n \"Image was too big. Resizing automatically\",\n { position: \"bottom-center\" }\n );\n }\n }\n }}\n />\n\n {pro ? (\n \n {({ field, form }) => (\n \n \n \n Verified collection url\n \n \n \n \n {form.errors.domain}\n \n \n )}\n \n ) : null}\n\n \n {({ field, form }) => (\n \n Name\n \n \n {form.errors.name}\n \n \n )}\n \n \n {({ field, form }) => (\n \n Lore\n \n \n {form.errors.lore}\n \n \n )}\n \n \n {({ insert, remove, push }) => (\n \n {props.values.attributes.length > 0 &&\n props.values.attributes.map((friend, index) => (\n \n \n \n {({ field, form }) => {\n let hasError, errText;\n try {\n hasError =\n form.errors.attributes[index]\n .change &&\n form.touched.attributes[index].change;\n errText =\n form.errors.attributes[index].change;\n } catch (e) {}\n return (\n \n {\n props.setFieldValue(\n `attributes.${index}.change`,\n num\n );\n }}\n variant=\"filled\"\n >\n \n \n \n \n \n \n \n {errText}\n \n \n );\n }}\n \n\n \n {({ field, form }) => {\n let hasError, errText;\n try {\n hasError =\n form.errors.attributes[index].name &&\n form.touched.attributes[index].name;\n errText =\n form.errors.attributes[index].name;\n } catch (e) {}\n\n return (\n \n \n \n {errText}\n \n \n );\n }}\n \n\n }\n onClick={() => remove(index)}\n />\n \n \n ))}\n\n push({ name: \"\", change: \"5\" })}\n >\n Add attribute\n \n \n )}\n \n\n \n {({ insert, remove, push }) => (\n \n {props.values.tags.length > 0 &&\n props.values.tags.map((friend, index) => (\n \n \n \n {({ field, form }) => {\n let hasError, errText;\n try {\n hasError =\n form.errors.tags[index] &&\n form.touched.tags[index];\n errText = form.errors.tags[index];\n } catch (e) {}\n\n return (\n \n \n \n {errText}\n \n \n );\n }}\n \n\n }\n onClick={() => remove(index)}\n />\n \n \n ))}\n\n \n \n )}\n \n\n {pro ? (\n \n {({ field, form }) => (\n \n Quality\n\n \n {itemQuality[mode].map((x, idx) => (\n \n ))}\n \n \n {form.errors.quality}\n \n \n )}\n \n ) : null}\n\n {pro ? (\n \n Pricing\n \n ) : null}\n\n {pro ? (\n \n {({ field, form }) => (\n \n \n \n Subsequent sales share\n \n \n \n {\n props.setFieldValue(\"authorShare\", v);\n }}\n value={field.value}\n min={0}\n max={1.5}\n step={0.1}\n >\n \n \n \n \n \n \n \n {field.value}%\n \n \n \n {form.errors.authorShare}\n \n \n )}\n \n ) : null}\n\n {false && pro ? (\n \n {({ field, form }) => (\n \n Initial price\n \n {\n props.setFieldValue(\"price\", num);\n }}\n w={\"100%\"}\n precision={4}\n step={0.01}\n //max=\"0.12\"\n min=\"0\"\n variant=\"filled\"\n >\n \n \n \n \n \n \n \n ICP\n \n \n\n \n {form.errors.price}\n \n \n )}\n \n ) : null}\n\n {pro ? (\n \n Flow\n \n ) : null}\n {pro ? (\n \n \n \n {({ field, form }) => (\n \n \n \n Transfer\n \n \n\n \n {itemTransfer.map((x) => (\n \n ))}\n \n \n {form.errors.transfer}\n \n \n )}\n \n\n {props.values.transfer === \"bindsDuration\" ? (\n \n {({ field, form }) => (\n \n \n Bound duration in minutes\n \n\n {\n props.setFieldValue(\n \"transfer_bind_duration\",\n num\n );\n }}\n >\n \n \n \n \n \n \n \n {form.errors.transfer_bind_duration}\n \n \n )}\n \n ) : null}\n \n \n ) : null}\n\n {/* {pro ? (\n \n {({ field, form }) => (\n \n \n \n Time to live in minutes\n \n \n\n {\n props.setFieldValue(\"ttl\", num);\n }}\n >\n \n \n \n \n \n \n \n {form.errors.ttl}\n \n \n )}\n \n ) : null} */}\n \n\n {/* \n {({ field, form }) => (\n {\n form.setFieldValue(\"preset\", x);\n }}\n >\n \n \n IPFS\n \n\n \n \n IC\n \n \n\n \n \n Premium\n \n \n \n \n )}\n */}\n\n \n {({ field, form }) => (\n {\n form.setFieldValue(\"preset\", v);\n }}\n />\n )}\n \n {props.values.preset === \"ipfs\" ? (\n ,\n }\n : {\n colorScheme: \"orange\",\n })}\n onClick={() => {\n dispatch(setNftStorageModal(true));\n }}\n >\n {NFTStorageAPIKey?.length\n ? \"NFT.Storage API Key\"\n : \"You need to set NFT.Storage API Key\"}\n \n ) : null}\n\n \n }\n >\n Mint\n \n \n {!pro ? (\n \n For more options turn on \n \n ) : null}\n\n {pro ? (\n devGetRecord(props.values)}\n >\n Print structure in console\n \n ) : null}\n \n \n\n {props.dirty ? (\n \n \n \n ) : null}\n
\n \n );\n }}\n \n );\n};\n\nconst FormTip = ({ children, text }) => {\n return (\n \n \n {children}\n {/* {\" \"}\n */}\n \n \n );\n};\n\nconst File = ({\n form,\n label,\n name,\n accept,\n validateInternal,\n validateExternal,\n validateExternalType,\n onChange,\n buttonLabel,\n pro,\n}) => {\n const keyInternal = name;\n\n return (\n \n {/* {showpro ? {label} : null}\n {showpro ? (\n \n {({ field, form }) => (\n {\n form.setFieldValue(keyStorage, x);\n }}\n >\n \n \n IC\n \n \n IPFS\n \n\n \n \n \n )}\n \n ) : null} */}\n\n \n {({ field, form }) => (\n \n {\n form.setFieldValue(keyInternal, f, true);\n if (onChange) onChange(f);\n }}\n />\n {form.errors[keyInternal]}\n \n )}\n \n\n {/* \n {form.values[keyStorage] === \"ipfs\" ? (\n \n {({ field, form }) => (\n \n {\n form.setFieldValue(keyIpfs, f, true);\n if (onChange) onChange(f);\n }}\n />\n {form.errors[keyIpfs]}\n \n )}\n \n ) : null} */}\n \n );\n};\n","import {\n Box,\n Spinner,\n Wrap,\n useColorModeValue,\n Center,\n Stack,\n Text,\n IconButton,\n} from \"@chakra-ui/react\";\nimport { Link } from \"react-router-dom\";\n\nimport {\n HamburgerIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"@chakra-ui/icons\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { NFTLarge, NFT } from \"./NFT\";\nimport itemgrid from \"../assets/itemgrid.png\";\nimport itemgrid_light from \"../assets/itemgrid_light.png\";\nimport { useWindowSize } from \"react-use\";\n\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { loadInventory } from \"../reducers/inventory\";\nimport styled from \"@emotion/styled\";\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\nimport { NftHistory } from \"./History\";\n\nconst InventoryBox = styled.div`\n background: url(${(props) => props.bg});\n background-size: 72px 72px;\n width: ${(props) => props.width}px;\n height: ${(props) => props.height}px;\n margin-top: 28px;\n padding: 0px;\n border-radius: 8px;\n`;\n\nexport const Inventory = (p) => {\n const address = p.match.params.address;\n const pageIdx =\n (p.match.params.pageIdx && parseInt(p.match.params.pageIdx, 10)) || 0;\n const maxItems = 100;\n\n const acc = useSelector((state) => state.user.map.account);\n const { width, height } = useWindowSize();\n\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n await dispatch(loadInventory(address, pageIdx, maxItems));\n setLoading(false);\n };\n let bg = useColorModeValue(itemgrid_light, itemgrid);\n\n useEffect(() => {\n if (!acc?.length) return null;\n load();\n }, [address, acc, pageIdx]);\n\n const items = useSelector(\n (state) => state.inventory[address] && state.inventory[address][pageIdx]\n );\n const meta = useSelector((state) => state.inventory[address + \"meta\"]);\n\n if (!items) return null;\n\n const cols = Math.min(Math.floor((width - 50) / 72), 10);\n const rows = Math.ceil(maxItems / cols);\n\n return (\n \n \n\n
\n \n {isLoading ? (\n \n
\n \n
\n
\n ) : (\n \n {items && items.map((id) => )}\n \n )}\n
\n
\n\n \n\n {meta ? (\n \n ) : null}\n
\n );\n};\n\nexport const InventoryLarge = (p) => {\n const address = p.match.params.address;\n const pageIdx =\n (p.match.params.pageIdx && parseInt(p.match.params.pageIdx, 10)) || 0;\n const maxItems = 40;\n\n const acc = useSelector((state) => state.user.map.account);\n const { width, height } = useWindowSize();\n\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n await dispatch(loadInventory(address, pageIdx, maxItems));\n setLoading(false);\n };\n let bg = useColorModeValue(itemgrid_light, itemgrid);\n\n useEffect(() => {\n if (!acc?.length) return null;\n load();\n }, [address, acc, pageIdx]);\n\n const items = useSelector(\n (state) => state.inventory[address] && state.inventory[address][pageIdx]\n );\n\n const meta = useSelector((state) => state.inventory[address + \"meta\"]);\n\n if (!items) return null;\n\n return (\n \n \n\n
\n \n {isLoading ? (\n \n
\n \n
\n
\n ) : (\n \n {items && items.map((id) => )}\n \n )}\n
\n
\n\n \n\n {meta ? (\n \n ) : null}\n
\n );\n};\n\nconst Pagination = ({ address, pageIdx, end, lg = false }) => {\n let prev_page =\n pageIdx <= 0\n ? false\n : \"/\" + address + \"/\" + (lg ? \"lg/\" : \"\") + (pageIdx - 1);\n let next_page = end\n ? false\n : \"/\" + address + \"/\" + (lg ? \"lg/\" : \"\") + (pageIdx + 1);\n\n return (\n \n \n } variant=\"solid\" />\n \n {address}\n\n {prev_page ? (\n \n }\n variant=\"solid\"\n />\n \n ) : null}\n {next_page ? (\n \n }\n variant=\"outline\"\n />\n \n ) : null}\n \n );\n};\n","import anvillogo from \"./assets/anvillogo.svg\";\nimport anvillogowhite from \"./assets/anvillogowhite.svg\";\nimport blueflame from \"./assets/blueflame.svg\";\n\nimport React, { useState } from \"react\";\nimport { ToastContainer } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { push } from \"connected-react-router\";\nimport { DashboardPage } from \"./components/Dashboard\";\nimport { Disclaimer } from \"./components/Disclaimer\";\nimport { Waiting } from \"./components/Waiting\";\nimport Cookies from \"js-cookie\";\n\nimport {\n login,\n proModeSet,\n logout,\n transfer_icp,\n pwr_buy,\n hw_auth,\n hw_test,\n} from \"./reducers/user\";\n\nimport { use } from \"./reducers/nft\";\n\nimport {\n ButtonGroup,\n Button,\n Box,\n IconButton,\n Stack,\n Text,\n} from \"@chakra-ui/react\";\nimport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverBody,\n PopoverFooter,\n PopoverArrow,\n Flex,\n Spacer,\n Center,\n useColorModeValue,\n Tooltip,\n CloseButton,\n Switch,\n} from \"@chakra-ui/react\";\nimport { useClipboard, useColorMode } from \"@chakra-ui/react\";\nimport {\n SunIcon,\n MoonIcon,\n CopyIcon,\n HamburgerIcon,\n ArrowBackIcon,\n ExternalLinkIcon,\n InfoOutlineIcon,\n} from \"@chakra-ui/icons\";\nimport { toast } from \"react-toastify\";\n\nimport {\n Alert,\n AlertIcon,\n AlertTitle,\n AlertDescription,\n} from \"@chakra-ui/react\";\n\nimport Dfinity from \"./assets/dfinity.svg\";\n\nimport PoweredDark from \"./assets/powered.dark.svg\";\nimport PoweredLight from \"./assets/powered.light.svg\";\n\nimport { Switch as RouterSwitch, Route, Redirect } from \"react-router\";\n\nimport { Link } from \"react-router-dom\";\n\nimport { Nftstorage } from \"./components/Nftstorage\";\n\nimport { Mint } from \"./components/Mint\";\nimport { HistoryRedirect, History, HistoryTx } from \"./components/History\";\n\nimport { Inventory, InventoryLarge } from \"./components/Inventory\";\nimport { NFTPage, NFTClaim } from \"./components/NFT\";\nimport { useWindowSize } from \"react-use\";\nimport { Menu, MenuButton, MenuList, MenuItem } from \"@chakra-ui/react\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\n\nimport { useDisclosure, FormLabel, FormControl, Input } from \"@chakra-ui/react\";\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n} from \"@chakra-ui/react\";\n\nimport { TX, ACC, NFTA, HASH, ICP, PWR, PRI, ANV } from \"./components/Code\";\n\nconst ICP_FEE = 10000n;\n\nfunction PageTabs(p) {\n const address = useSelector((state) =>\n state.user.address ? state.user.address.toLowerCase() : null\n );\n const pro = useSelector((state) => state.user.pro);\n\n return (\n \n \n \n \n \n\n \n \n \n \n \n );\n}\n\nfunction Warning({ title, children }) {\n return (\n \n \n \n {title}\n {children}\n \n \n );\n}\n\nfunction AlertTestNet() {\n const [alertVisible, setAlertVisible] = useState(true);\n if (!alertVisible) return null;\n return (\n
\n \n \n \n Testnet! Warning!\n \n All minted tokens will be periodically wiped out.\n \n Join{\" \"}\n \n {\" \"}\n discord{\" \"}\n {\" \"}\n & follow\n \n {\" \"}\n twitter\n \n . Airdrops soon!\n \n \n \n {\n setAlertVisible(false);\n }}\n />\n \n
\n );\n}\n\nfunction ICPBOX({ mobile }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n const amountRef = React.useRef();\n\n const icp = useSelector((state) => state.user.icp);\n\n const transferOk = async () => {\n let to = initialRef.current.value;\n let amount = AccountIdentifier.icpToE8s(amountRef.current.value); // + ICP_FEE;\n\n onClose();\n\n await dispatch(transfer_icp({ to, amount }));\n };\n return (\n <>\n {mobile ? (\n \n {icp}\n \n ) : (\n \n )}\n\n \n \n \n \n Send \n \n \n \n \n To Address\n \n \n \n Amount\n \n \n {ICP_FEE * 1n} in transfer fees paid to IC\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction ANVBOX({ mobile }) {\n const anv = useSelector((state) => state.user.anv);\n\n return (\n <>\n {mobile ? (\n \n {anv}\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nfunction LoginBox() {\n const address = useSelector((state) =>\n state.user.address ? state.user.address.toLowerCase() : null\n );\n const principal = useSelector((state) => state.user.principal);\n\n const pro = useSelector((state) => state.user.pro);\n\n const anonymous = useSelector((state) => state.user.anonymous);\n\n const { onCopy } = useClipboard(address);\n\n const { colorMode, toggleColorMode } = useColorMode();\n\n const dispatch = useDispatch();\n return (\n \n \n {anonymous ? (\n <>\n \n }\n colorScheme=\"gray\"\n onClick={() => dispatch(login())}\n >\n Authenticate\n \n \n ) : (\n <>\n \n {/* */}\n\n \n \n {\n toast.info(\"Copied to clipboard\", {\n position: \"bottom-right\",\n });\n onCopy();\n }}\n rightIcon={}\n >\n {address}\n \n \n \n \n \n \n This is early alpha. We advise you to not keep more than 1\n ICP in this wallet for long periods of time.\n \n \n When you send ICP to this address the dapp will\n automatically wrap it for faster usage within the protocol.\n That costs 0.0002 ICP in fees paid to IC. When you make a\n transfer it gets automatically unwrapped.\n \n \n Your address:\n \n \n {address}\n \n \n Supported non-fungible: \n \n \n Supported fungible: \n \n {/* {pro ? (\n <>\n \n Your principal:\n \n \n {principal}\n \n \n ) : null} */}\n \n \n \n \n {\n dispatch(logout());\n }}\n >\n Logout\n \n \n \n \n \n \n )}\n \n }\n variant=\"solid\"\n />\n \n \n }>Documentation\n \n \n }>Source code\n \n\n \n }>Discord\n \n\n {colorMode === \"light\" ? (\n } onClick={toggleColorMode}>\n Light\n \n ) : (\n } onClick={toggleColorMode}>\n Dark\n \n )}\n\n \n }>Dashboard\n \n \n History\n \n \n \n \n \n \n \n \n );\n}\n\nexport const ProToggle = () => {\n const dispatch = useDispatch();\n const pro = useSelector((state) => state.user.pro);\n\n return (\n \n \n Advanced\n \n dispatch(proModeSet(e.target.checked))}\n />\n \n );\n};\n\n// \nfunction Logo(props) {\n const theme = useColorModeValue(\"light\", \"dark\");\n\n return (\n \n \n \n \n NFTANVIL\n \n \n mint a promise\n \n \n \n );\n}\n\nfunction DesktopMenu() {\n const { width, height } = useWindowSize();\n\n if (width > 1500)\n return (\n <>\n \n \n \n \n \n \n \n );\n\n return (\n <>\n \n \n \n \n \n \n \n );\n}\n\nfunction MobileMenu() {\n const address = useSelector((state) =>\n state.user.address ? state.user.address.toLowerCase() : null\n );\n const anonymous = useSelector((state) => state.user.anonymous);\n const pathname = useSelector((state) => state.router.location.pathname);\n const pro = useSelector((state) => state.user.pro);\n\n const myroot = \"/\" + address;\n\n const { onCopy } = useClipboard(address);\n const { colorMode, toggleColorMode } = useColorMode();\n\n const dispatch = useDispatch();\n\n return (\n <>\n \n \n }\n variant=\"solid\"\n disabled={!address || myroot === pathname}\n onClick={() => {\n dispatch(push(myroot));\n }}\n />\n\n \n \n }\n variant=\"solid\"\n />\n \n {address ? (\n \n Inventory\n \n ) : null}\n\n \n Mint\n \n\n \n History\n \n \n }>Dashboard\n \n {anonymous ? (\n dispatch(login())}>\n Authenticate\n \n \n ) : (\n <>\n \n {/* */}\n\n {\n toast.info(\"Copied to clipboard\", {\n position: \"bottom-right\",\n });\n onCopy();\n }}\n icon={}\n >\n Your address {address}\n \n\n {\n dispatch(logout());\n }}\n >\n Logout\n \n \n )}\n \n }>Source code\n \n\n \n }>Discord\n \n {colorMode === \"light\" ? (\n } onClick={toggleColorMode}>\n Light\n \n ) : (\n } onClick={toggleColorMode}>\n Dark\n \n )}\n \n \n \n \n \n \n \n );\n}\n\nfunction MainMenu() {\n const { width, height } = useWindowSize();\n\n const isDesktop = width > 1100;\n // const [isDesktop] = useMediaQuery(\"(min-width: 480px)\");\n\n return isDesktop ? : ;\n}\nfunction App() {\n const mapLoaded = useSelector((state) => state.user.map.history);\n const dispatch = useDispatch();\n\n const theme = useColorModeValue(\"light\", \"dark\");\n if (!mapLoaded) return null;\n\n // if (Cookies.get(\"admin\") !== \"true\") return ;\n\n return (\n <>\n \n \n \n \n {/* */}\n {/* {\n dispatch(hw_auth());\n }}\n >\n HW AUTH\n {\" \"}\n {\n dispatch(hw_test());\n // let useData = { cooldown: 5111111 };\n // let memo = [12, 11, 5, 0, 0, 1, 7];\n // let { transactionId } = await dispatch(\n // use({ id: \"nftaafa74tu6jky7g9zb\", use: useData, memo })\n // );\n // console.log({ transactionId });\n }}\n >\n HW TEST\n */}\n
\n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n
\n
\n \n Web 3.0 | Made by VVV DAO\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 { configureStore } from \"@reduxjs/toolkit\";\nimport userReducer from \"./reducers/user\";\nimport nftReducer from \"./reducers/nft\";\nimport inventoryReducer from \"./reducers/inventory\";\nimport historyReducer from \"./reducers/history\";\n\nimport { connectRouter, routerMiddleware } from \"connected-react-router\";\nimport { createBrowserHistory } from \"history\";\n\nexport const history = createBrowserHistory();\n\nexport default configureStore({\n reducer: {\n router: connectRouter(history),\n user: userReducer,\n nft: nftReducer,\n history: historyReducer,\n inventory: inventoryReducer,\n },\n devTools: process.env.NODE_ENV !== \"production\",\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware().concat(routerMiddleware(history)),\n});\n","import { extendTheme } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nexport const theme = extendTheme({\n textStyles: {},\n colors: {\n brand: {\n 100: \"#eeeeee\",\n },\n },\n\n config: {\n initialColorMode: \"dark\",\n useSystemColorMode: false,\n },\n styles: {\n global: (props) => {\n return {\n body: {\n fontFamily: \"body\",\n color: mode(\"gray.800\", \"whiteAlpha.900\")(props),\n // bg: mode(\"gray.400\", \"gray.800\")(props),\n lineHeight: \"base\",\n // bg: \"linear-gradient(153deg,rgba(27, 32, 43, 1) 0%,rgba(40, 23, 32, 1) 100%)\",\n bg: mode(\n \"linear-gradient(153deg, #d5d1cd 0%, #b2b3ba 100%)\",\n \"linear-gradient(153deg,rgba(27, 32, 43, 1) 0%,rgba(40, 23, 32, 1) 100%)\"\n )(props),\n backgroundAttachment: \"fixed\",\n },\n html: {},\n \"*::placeholder\": {\n color: mode(\"gray.400\", \"whiteAlpha.400\")(props),\n scrollbarWidth: \"thin\",\n scrollbarColor: \" #564d56 #363636\",\n },\n\n \"html::-webkit-scrollbar\": {\n width: \"16px\",\n },\n\n \"html::-webkit-scrollbar-track\": {\n background: \"#363636\",\n },\n\n \"html::-webkit-scrollbar-thumb\": {\n backgroundColor: \"#564d56\",\n borderRadius: \"9px\",\n border: \"4px solid #363636\",\n },\n \"html::before, html::after\": {\n borderColor: mode(\"gray.200\", \"whiteAlpha.300\")(props),\n wordWrap: \"break-word\",\n },\n };\n },\n },\n});\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n// import * as Sentry from \"@sentry/react\";\n// import { BrowserTracing } from \"@sentry/tracing\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport store, { history } from \"./store\";\nimport { Provider } from \"react-redux\";\nimport { auth, window_focus, window_blur } from \"./reducers/user\";\nimport { ChakraProvider } from \"@chakra-ui/react\";\nimport { theme } from \"./theme.js\";\nimport { ColorModeScript } from \"@chakra-ui/react\";\n\nimport { ConnectedRouter } from \"connected-react-router\";\nimport { useSelector } from \"react-redux\";\nimport { faucet } from \"./reducers/user.js\";\n//import \"./decorations/Christmass\";\n\n// Sentry.init({\n// dsn: \"https://50f3883d85f34ee98de5e31eb20a4bb0@o101334.ingest.sentry.io/6230204\",\n// integrations: [new BrowserTracing()],\n\n// // Set tracesSampleRate to 1.0 to capture 100%\n// // of transactions for performance monitoring.\n// // We recommend adjusting this value in production\n// tracesSampleRate: 1.0,\n// });\n\nsetTimeout(() => {\n store.dispatch(auth());\n}, 100);\n\nif (process.env.NODE_ENV !== \"production\") {\n window.faucet = (address) => {\n store.dispatch(faucet(address));\n };\n}\n\nsetTimeout(() => {\n ReactDOM.render(\n <>\n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n );\n}, 200);\n\nsetTimeout(() => {\n try {\n window.lockdown({\n //comes from lockdown.umd.min.js\n consoleTaming: \"unsafe\", // Leave original start console in place\n overrideTaming: \"min\",\n localeTaming: \"unsafe\",\n errorTaming: \"unsafe\",\n errorTrapping: \"report\",\n });\n } catch (e) {\n document.getElementById(\"root\").innerHTML = null;\n }\n}, 1000);\n\nwindow.addEventListener(\"focus\", () => store.dispatch(window_focus()));\nwindow.addEventListener(\"blur\", () => store.dispatch(window_blur()));\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\n// Object.defineProperty(String.prototype, \"capitalize\", {\n// value: function () {\n// return this.charAt(0).toUpperCase() + this.slice(1);\n// },\n// enumerable: false,\n// });\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _nftDid.idlFactory;\n }\n});\nexports.nftCanister = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _nftDid = require(\"./declarations/nft/nft.did.js\");\n\n// Imports and re-exports candid interface\nconst nftCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_nftDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.nftCanister = nftCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = decode;\nexports.encode = encode;\nexports.fromText = fromText;\nexports.toText = toText;\n\nvar _principal = require(\"@dfinity/principal\");\n\nvar _data = require(\"./data.js\");\n\nvar _baseX = _interopRequireDefault(require(\"base-x\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar bs = (0, _baseX.default)(\"812345679abcdefghijkmnopqrstuvwxyz\");\n\nfunction encode(slot, idx) {\n // console.log(\"ENCODE\", slot, idx);\n return [...(0, _data.numberToBytesArray)(slot, 8), ...(0, _data.numberToBytesArray)(idx, 4)];\n}\n\nfunction decode(p) {\n //let p = fromText(tx);\n let idx = (0, _data.bytesArrayToNumber)(p.slice(-4));\n let slot = (0, _data.bytesArrayToNumber)(p.slice(0, -4));\n return {\n slot,\n idx\n };\n}\n\nfunction toText(bytes) {\n return \"tx\" + bs.encode(new Uint8Array([...bytes]));\n}\n\nfunction fromText(t) {\n return [...bs.decode(t.slice(2).toLowerCase())];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mintFormValidate = void 0;\nexports.validateAttributeChange = validateAttributeChange;\nexports.validateAttributeName = validateAttributeName;\nexports.validateContentInternal = validateContentInternal;\nexports.validateCooldown = validateCooldown;\nexports.validateDescription = validateDescription;\nexports.validateDescriptionOrNone = validateDescriptionOrNone;\nexports.validateDomain = validateDomain;\nexports.validateExtensionCanister = validateExtensionCanister;\nexports.validateExternal = validateExternal;\nexports.validateExternalType = validateExternalType;\nexports.validateHoldId = validateHoldId;\nexports.validateName = validateName;\nexports.validateTagName = validateTagName;\nexports.validateThumbInternal = validateThumbInternal;\nexports.validateUseId = validateUseId;\n\nvar _principal = require(\"@dfinity/principal\");\n\nconst mintFormValidate = values => {\n const errors = {};\n if (!values.extensionCanister) if (values.content_storage == \"external\" || values.thumb_storage == \"external\" || values.use || values.hold) errors.extensionCanister = \"Required if using external content and effects\";\n if (values.secret) if (values.content_storage == \"external\") errors.secret = \"Can't be secret if content is external\";\n return errors;\n};\n\nexports.mintFormValidate = mintFormValidate;\n\nfunction validateDomain(value) {\n if (!value) return null;\n return !(value.length > 2 && value.length < 64) ? \"Must be between 3 and 64 characters\" : null;\n}\n\nfunction validateName(value) {\n if (!value) return null;\n return !(value.length > 2 && value.length < 96) ? \"Must be between 3 and 96 characters\" : null;\n}\n\nfunction validateExtensionCanister(v) {\n if (!v) return;\n\n try {\n _principal.Principal.fromText(v);\n\n return;\n } catch (e) {\n return \"Invalid principal\";\n }\n}\n\nfunction validateHoldId(v) {\n if (!v) return \"Required\";\n if (v.search(/[^a-z]+/) !== -1) return \"Can only contain lowercase characters without spaces\";\n}\n\nfunction validateUseId(v) {\n if (!v) return \"Required\";\n if (v.search(/[^a-z]+/) !== -1) return \"Can only contain lowercase characters without spaces\";\n}\n\nfunction validateDescription(val) {\n if (typeof val !== \"string\") return null;\n if (val.length < 10 || val.length > 256) return \"Must be between 10 and 256 characters\";\n}\n\nfunction validateThumbInternal(val) {\n if (!val) return \"Thumbnail is required\";\n if (val.size > 1024 * 128) return \"Maximum file size is 128 KB\";\n}\n\nfunction validateContentInternal(val) {\n if (!val) return;\n if (val.size > 1024 * 1024 * 1) return \"Maximum file size is 1 MB\";\n}\n\nfunction validateExternal(val) {\n if (!val) return;\n if (isNaN(val)) return \"If specified, it must be 32 bit natural number\";\n}\n\nfunction validateExternalType(val) {\n if (!val) return \"Must be specified\";\n if (val.length < 3) return \"Not a valid content type\";\n}\n\nfunction validateDescriptionOrNone(val) {\n if (typeof val !== \"string\") return null;\n if (val.trim().length === 0) return null;\n if (val.length < 10 || val.length > 256) return \"Must be none or between 10 and 256 characters\";\n}\n\nfunction validateCooldown(val) {\n if (val < 1) return \"Has to be at least one minute\";\n}\n\nfunction validateAttributeName(val) {\n if (typeof val !== \"string\") return null;\n if (val.length < 3) return \"Too short\";\n if (val.length > 24) return \"Too long\";\n}\n\nfunction validateTagName(val) {\n if (typeof val !== \"string\") return null;\n if (val.length < 3) return \"Too short\";\n if (val.length > 24) return \"Too long\";\n}\n\nfunction validateAttributeChange(val) {\n if (parseInt(val, 10) === 0) return \"Can't be zero\";\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ArrayToText = ArrayToText;\nexports.TextToArray = TextToArray;\nexports.TextToSlot = TextToSlot;\nexports.anvToE = anvToE;\nexports.e8sToIcp = e8sToIcp;\nexports.e8sToPwr = e8sToPwr;\nexports.eToAnv = eToAnv;\nexports.icpToE8s = icpToE8s;\nexports.pwrToE8s = pwrToE8s;\n\nvar _data = require(\"./data\");\n\nfunction TextToArray(x) {\n if (!x || !x.length) return null;\n return (0, _data.fromHexString)(x);\n}\n\nfunction ArrayToText(x) {\n return (0, _data.toHexString)(x);\n}\n\nfunction e8sToIcp(x) {\n if (!x) return null;\n return (Number(BigInt(x) * 10000n / 100000000n) / 10000).toFixed(4);\n}\n\nfunction icpToE8s(x) {\n try {\n return BigInt(Math.round(x * 100000000));\n } catch (e) {\n return 0n;\n }\n} // PWR\n\n\nfunction e8sToPwr(x) {\n if (!x) return null;\n return (Number(BigInt(x) * 100n / 100000n) / 100).toFixed(2);\n}\n\nfunction pwrToE8s(x) {\n try {\n return BigInt(Math.round(x * 100000));\n } catch (e) {\n return 0n;\n }\n} // ANV\n\n\nfunction eToAnv(x) {\n if (!x) return null;\n return (Number(BigInt(x) * 100n / 100000n) / 100).toFixed(2);\n}\n\nfunction anvToE(x) {\n try {\n return BigInt(Math.round(x * 100000));\n } catch (e) {\n return 0n;\n }\n}\n\nfunction TextToSlot(aid, range) {\n return Number(range[0]) + (0, _data.bytesArrayToNumber)((0, _data.fromHexString)(aid).slice(-4)) % (1 + Number(range[1] - range[0]));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _routerDid.idlFactory;\n }\n});\nexports.routerCanister = exports.router = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _routerDid = require(\"./declarations/router/router.did.js\");\n\n// Imports and re-exports candid interface\nconst defaultRouter = \"kbzti-laaaa-aaaai-qe2ma-cai\"; // CANISTER_ID is replaced by webpack based on node environment\n\nconst routerCanister = (canisterId, options) => {\n canisterId = canisterId || defaultRouter;\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n let actor = _agent.Actor.createActor(_routerDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n\n return {\n router: actor,\n agent\n };\n};\n\nexports.routerCanister = routerCanister;\nconst router = {};\nexports.router = router;\n\nrouter.setOptions = (canisterId, options) => {\n canisterId = canisterId || defaultRouter;\n let x = routerCanister(canisterId, options);\n\n for (let key in x.router) {\n router[key] = function () {\n return x.router[key](...arguments);\n };\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _pwrDid.idlFactory;\n }\n});\nexports.pwrCanister = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _pwrDid = require(\"./declarations/pwr/pwr.did.js\");\n\n// Imports and re-exports candid interface\nconst pwrCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_pwrDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.pwrCanister = pwrCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tokenUrl = exports.tokenToText = exports.tokenFromText = exports.tokenFromBlob = exports.principalToAccountIdentifier = exports.neuronStakeAccountIdentifier = exports.ipfsTokenUrl = exports.getSubAccountArray = exports.encodeTokenId = exports.encodeChunkId = exports.decodeTokenId = void 0;\n\nvar _getCrc = require(\"@dfinity/principal/lib/cjs/utils/getCrc\");\n\nvar _sha = require(\"@dfinity/principal/lib/cjs/utils/sha224\");\n\nvar _principal = require(\"@dfinity/principal\");\n\nvar _data = require(\"./data.js\");\n\nvar _principal2 = require(\"./principal.js\");\n\nvar _baseX = _interopRequireDefault(require(\"base-x\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//var token_base = basex(\"0123456789abcdefghijkmnopqrstuvwxyz\");\nvar token_base = (0, _baseX.default)(\"0123456789ABCDEFGHJKLMNPQRSTUVWXYZ\");\n\nconst neuronStakeAccountIdentifier = (p, s) => {\n const padding = [12, 110, 101, 117, 114, 111, 110, 45, 115, 116, 97, 107, 101]; // Buffer(\"\\x0Cneuron-stake\");\n\n const array = new Uint8Array([...padding, ..._principal.Principal.fromText(p).toUint8Array(), ...getSubAccountArray(s)]);\n const hash = (0, _sha.sha224)(array);\n const checksum = to32bits((0, _getCrc.getCrc32)(hash));\n const array2 = new Uint8Array([...checksum, ...hash]);\n return (0, _data.toHexString)(array2);\n};\n\nexports.neuronStakeAccountIdentifier = neuronStakeAccountIdentifier;\n\nconst principalToAccountIdentifier = (p, s) => {\n const padding = [10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100]; //Buffer(\"\\x0Aaccount-id\");\n\n const array = new Uint8Array([...padding, ..._principal.Principal.fromText(p).toUint8Array(), ...getSubAccountArray(s)]);\n const hash = (0, _sha.sha224)(array);\n const checksum = to32bits((0, _getCrc.getCrc32)(hash));\n const array2 = new Uint8Array([...checksum, ...hash]);\n return (0, _data.toHexString)(array2);\n};\n\nexports.principalToAccountIdentifier = principalToAccountIdentifier;\n\nconst getSubAccountArray = s => {\n if (Array.isArray(s)) {\n return s.concat(Array(32 - s.length).fill(0));\n } else {\n return Array(28).fill(0).concat(to32bits(s ? s : 0));\n }\n};\n\nexports.getSubAccountArray = getSubAccountArray;\n\nconst to32bits = num => {\n let b = new ArrayBuffer(4);\n new DataView(b).setUint32(0, num);\n return Array.from(new Uint8Array(b));\n};\n\nconst encodeTokenId = (slot, index) => {\n let t = Number(slot) << 16 | Number(index);\n return t;\n};\n\nexports.encodeTokenId = encodeTokenId;\n\nconst decodeTokenId = t => {\n t = Number(t);\n let slot = t >> 16;\n let index = t & 65535; // 16 bits\n\n return {\n slot,\n index\n };\n};\n\nexports.decodeTokenId = decodeTokenId;\n\nconst tokenToText = tid => {\n let p = new Uint8Array([...(0, _data.numberToBytesArray)((0, _getCrc.getCrc32)((0, _data.numberToBytesArray)(tid, 8)) & 65535, 2), ...(0, _data.numberToBytesArray)(tid, 8)]);\n return (\"NFTA\" + token_base.encode(p)).toLowerCase();\n};\n\nexports.tokenToText = tokenToText;\n\nconst tokenFromText = str => {\n str = str.toUpperCase();\n if (str.slice(0, 4) !== \"NFTA\") return null;\n let p = [...token_base.decode(str.slice(4))];\n let t = (0, _data.bytesArrayToNumber)(p.splice(-8)); // console.log(\n // str,\n // t,\n // decodeTokenId(t),\n // encodeTokenId(5, 1),\n // tokenToText(encodeTokenId(5, 1))\n // );\n\n return t;\n}; // console.log(\n// 4294967295,\n// tokenToText(4294967295),\n// tokenFromText(tokenToText(4294967295))\n// );\n// console.log(123, tokenToText(123), tokenFromText(tokenToText(123)));\n// export const encodeTokenId = (principal, index) => {\n// const padding = Buffer(\"\\x0Atid\");\n// const array = new Uint8Array([\n// ...padding,\n// ...Principal.fromText(principal).toUint8Array(),\n// ...to32bits(index),\n// ]);\n// return Principal.fromUint8Array(array).toText();\n// };\n\n\nexports.tokenFromText = tokenFromText;\n\nconst tokenFromBlob = b => {\n return _principal.Principal.fromUint8Array(b).toText();\n}; // export const decodeTokenId = (tid) => {\n// var p = [...Principal.fromText(tid).toUint8Array()];\n// var padding = p.splice(0, 4);\n// if (toHexString(padding) !== toHexString(Buffer(\"\\x0Atid\"))) {\n// return {\n// index: 0,\n// canister: tid,\n// token: encodeTokenId(tid, 0),\n// };\n// } else {\n// return {\n// index: from32bits(p.splice(-4)),\n// canister: Principal.fromUint8Array(p).toText(),\n// token: tid,\n// };\n// }\n// };\n\n\nexports.tokenFromBlob = tokenFromBlob;\n\nconst from32bits = ba => {\n var value;\n\n for (var i = 0; i < 4; i++) {\n value = value << 8 | ba[i];\n }\n\n return value;\n};\n\nconst bitShiftLeft = (x, l) => {\n return x << l >>> 0;\n};\n\nconst bitShiftRight = (x, l) => {\n return x >>> l;\n};\n\nconst bitUnsignedFix = x => {\n return x >>> 0;\n};\n\nconst encodeChunkId = (tokenIndex, chunkIndex, ctype) => {\n let r = bitUnsignedFix(bitShiftLeft(tokenIndex, 16) | bitUnsignedFix(bitShiftRight(chunkIndex & 255, 2) | ctype)); // 0 - content , 1 - thumb\n //console.log({ tokenIndex, chunkIndex, ctype }, r);\n\n return r;\n};\n\nexports.encodeChunkId = encodeChunkId;\n\nconst ipfsTokenUrl = cid => {\n return \"https://ipfs.io/ipfs/\" + cid;\n};\n\nexports.ipfsTokenUrl = ipfsTokenUrl;\n\nconst tokenUrl = (space, tid, type) => {\n let {\n index,\n slot\n } = decodeTokenId(tid);\n let canister = (0, _principal2.PrincipalFromSlot)(space, slot).toText();\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n return \"http://\" + slot + \".lvh.me:8453/\" + encodeChunkId(index, 0, type === \"content\" ? 0 : 1).toString(16);\n } else {\n return \"https://\" + canister + \".raw.ic0.app/\" + encodeChunkId(index, 0, type === \"content\" ? 0 : 1).toString(16);\n }\n};\n\nexports.tokenUrl = tokenUrl;"],"sourceRoot":""}