diff --git a/CHANGELOG.md b/CHANGELOG.md index 804b8a103..55257d015 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added support to create custom tags in the create or update activity dialog (experimental) + ### Changed -- Improved the language localization for Dutch (`nl`) +- Improved the style of the system message +- Improved the language localization for German (`de`) +- Improved the language localization for Turkish (`tr`) +- Improved the language localization for Ukrainian (`uk`) - Upgraded the _Stripe_ dependencies - Upgraded `ngx-stripe` from version `19.0.0` to `19.7.0` +## 2.165.0 - 2025-05-31 + +### Added + +- Extended the content of the _General_ section by the performance calculation method on the Frequently Asked Questions (FAQ) page + +### Changed + +- Improved the _Live Demo_ setup by syncing activities based on tags +- Renamed `orders` to `activities` in the `Tag` database schema +- Modularized the cron service +- Refreshed the cryptocurrencies list +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for Dutch (`nl`) +- Improved the language localization for Polish (`pl`) +- Improved the language localization for Spanish (`es`) +- Upgraded `big.js` from version `6.2.2` to `7.0.1` +- Upgraded `ng-extract-i18n-merge` from version `2.14.3` to `2.15.0` + +### Fixed + +- Changed the investment value to take the currency effects into account in the holding detail dialog + ## 2.164.0 - 2025-05-28 ### Changed diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 736f6da33..82524ef9b 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -3,6 +3,7 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service'; +import { DemoService } from '@ghostfolio/api/services/demo/demo.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { @@ -55,6 +56,7 @@ export class AdminController { private readonly adminService: AdminService, private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, + private readonly demoService: DemoService, private readonly manualService: ManualService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -66,6 +68,13 @@ export class AdminController { return this.adminService.get({ user: this.request.user }); } + @Get('demo-user/sync') + @HasPermission(permissions.syncDemoUserAccount) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async syncDemoUserAccount(): Promise { + return this.demoService.syncDemoUserAccount(); + } + @HasPermission(permissions.accessAdminControl) @Post('gather') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index 54145fa27..598b68f17 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -4,6 +4,7 @@ import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; +import { DemoModule } from '@ghostfolio/api/services/demo/demo.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; @@ -24,6 +25,7 @@ import { QueueModule } from './queue/queue.module'; ConfigurationModule, DataGatheringModule, DataProviderModule, + DemoModule, ExchangeRateDataModule, MarketDataModule, OrderModule, diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 87a4db5fc..6f512e89b 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -1,13 +1,12 @@ import { EventsModule } from '@ghostfolio/api/events/events.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; -import { CronService } from '@ghostfolio/api/services/cron.service'; +import { CronModule } from '@ghostfolio/api/services/cron/cron.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; -import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; import { DEFAULT_LANGUAGE_CODE, SUPPORTED_LANGUAGE_CODES @@ -78,6 +77,7 @@ import { UserModule } from './user/user.module'; CacheModule, ConfigModule.forRoot(), ConfigurationModule, + CronModule, DataGatheringModule, DataProviderModule, EventEmitterModule.forRoot(), @@ -128,10 +128,8 @@ import { UserModule } from './user/user.module'; SubscriptionModule, SymbolModule, TagsModule, - TwitterBotModule, UserModule, WatchlistModule - ], - providers: [CronService] + ] }) export class AppModule {} diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 7e373c4cc..18f923112 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -31,7 +31,7 @@ import { } from '@ghostfolio/common/calculation-helper'; import { DEFAULT_CURRENCY, - EMERGENCY_FUND_TAG_ID, + TAG_ID_EMERGENCY_FUND, UNKNOWN_KEY } from '@ghostfolio/common/config'; import { DATE_FORMAT, getSum, parseDate } from '@ghostfolio/common/helper'; @@ -564,7 +564,7 @@ export class PortfolioService { if ( filters?.length === 1 && - filters[0].id === EMERGENCY_FUND_TAG_ID && + filters[0].id === TAG_ID_EMERGENCY_FUND && filters[0].type === 'TAG' ) { const emergencyFundCashPositions = await this.getCashPositions({ @@ -663,7 +663,7 @@ export class PortfolioService { grossPerformancePercentWithCurrencyEffect: undefined, grossPerformanceWithCurrencyEffect: undefined, historicalData: [], - investment: undefined, + investmentInBaseCurrencyWithCurrencyEffect: undefined, marketPrice: undefined, marketPriceMax: undefined, marketPriceMin: undefined, @@ -853,7 +853,8 @@ export class PortfolioService { grossPerformanceWithCurrencyEffect: position.grossPerformanceWithCurrencyEffect?.toNumber(), historicalData: historicalDataArray, - investment: position.investment?.toNumber(), + investmentInBaseCurrencyWithCurrencyEffect: + position.investmentWithCurrencyEffect?.toNumber(), netPerformance: position.netPerformance?.toNumber(), netPerformancePercent: position.netPerformancePercentage?.toNumber(), netPerformancePercentWithCurrencyEffect: @@ -952,7 +953,7 @@ export class PortfolioService { grossPerformancePercentWithCurrencyEffect: undefined, grossPerformanceWithCurrencyEffect: undefined, historicalData: historicalDataArray, - investment: 0, + investmentInBaseCurrencyWithCurrencyEffect: 0, netPerformance: undefined, netPerformancePercent: undefined, netPerformancePercentWithCurrencyEffect: undefined, @@ -1654,7 +1655,7 @@ export class PortfolioService { const emergencyFundHoldings = Object.values(holdings).filter(({ tags }) => { return ( tags?.some(({ id }) => { - return id === EMERGENCY_FUND_TAG_ID; + return id === TAG_ID_EMERGENCY_FUND; }) ?? false ); }); diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 87c82fa0b..2a48b2583 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -411,6 +411,10 @@ export class UserService { user.subscription.offer.durationExtension = undefined; user.subscription.offer.label = undefined; } + + if (hasRole(user, Role.ADMIN)) { + currentPermissions.push(permissions.syncDemoUserAccount); + } } if (this.configurationService.get('ENABLE_FEATURE_READ_ONLY_MODE')) { @@ -433,7 +437,7 @@ export class UserService { } } - if (!environment.production && role === 'ADMIN') { + if (!environment.production && hasRole(user, Role.ADMIN)) { currentPermissions.push(permissions.impersonateAllUsers); } diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index 475cc6217..d7dce485a 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -1,4 +1,5 @@ { + "1": "just buy $1 worth of this coin", "3": "The Three Musketeers", "7": "Lucky7", "32": "Project 32", @@ -64,6 +65,7 @@ "1MIL": "1MillionNFTs", "1MT": "1Move", "1NFT": "1NFT", + "1ON8": "Little Dragon", "1OZT": "Tala", "1PECO": "1peco", "1SG": "1SG", @@ -73,6 +75,7 @@ "1UP": "Uptrennd", "1WO": "1World", "2022M": "2022MOON", + "20EX": "20ex", "21BTC": "21.co Wrapped BTC", "21X": "21X", "2BACCO": "2BACCO Coin", @@ -114,6 +117,7 @@ "4CHAN": "4Chan", "4CZ": "FourCZ", "4DOGE": "4DOGE", + "4EVER": "4EVERLAND", "4JNET": "4JNET", "4MW": "For Meta World", "4P": "4P FOUR", @@ -138,7 +142,7 @@ "9DOGS": "NINE DOGS", "9GAG": "9GAG", "9MM": "Shigure UI", - "A": "Alpha Token", + "A": "Vaulta", "A1INCH": "1inch (Arbitrum Bridge)", "A2A": "A2A", "A2I": "Arcana AI", @@ -168,6 +172,7 @@ "AAVEGOTCHIFOMO": "Aavegotchi FOMO", "AAX": "Academic Labs", "AAZ": "ATLAZ", + "AB": "Newton", "AB1INCH": "1inch (Avalanche Bride)", "ABA": "EcoBall", "ABBC": "ABBC Coin", @@ -200,6 +205,7 @@ "ABUSDC": "USD Coin (Arbitrum Bridge)", "ABX": "Arbidex", "ABY": "ArtByte", + "ABYS": "Trinity Of The Fabled", "ABYSS": "Abyss Finance", "AC": "Asia Coin", "AC3": "AC3", @@ -228,7 +234,7 @@ "ACN": "AvonCoin", "ACOIN": "ACoin", "ACOLYT": "Acolyte by Virtuals", - "ACP": "Anarchists Prime", + "ACP": "Arena Of Faith", "ACPT": "Crypto Accept", "ACQ": "Acquire.Fi", "ACRE": "Arable Protocol", @@ -306,6 +312,7 @@ "AERO": "Aerodrome Finance", "AEROBUD": "Aerobud", "AEROCOIN": "Aero Coin", + "AEROME": "AeroMe", "AEROT": "AEROTYME", "AES": "Artis Aes Evolution", "AET": "AfterEther", @@ -338,8 +345,9 @@ "AFYON": "Afyonspor Fan Token", "AG": "AGAME", "AG8": "ATROMG8", - "AGA": "AGA Token", + "AGA": "Agora DEX Token", "AGATA": "Agatech", + "AGATOKEN": "AGA Token", "AGB": "Apes Go Bananas", "AGC": "Argocoin", "AGEN": "Agent Krasnov", @@ -357,6 +365,7 @@ "AGIV1": "SingularityNET v1", "AGIX": "SingularityNET", "AGIXBT": "AGIXBT by Virtuals", + "AGIXT": "AGiXT", "AGLA": "Angola", "AGLD": "Adventure Gold", "AGM": "Argoneum", @@ -366,6 +375,7 @@ "AGON": "Arabian Dragon", "AGOV": "Answer Governance", "AGPC": "AGPC", + "AGRI": "AgriDex Token", "AGRO": "Bit Agro", "AGRS": "Agoras Token", "AGS": "Aegis", @@ -383,7 +393,8 @@ "AI23T": "23 Turtles", "AI69SAKURA": "Sakura", "AIA": "AIA Chain", - "AIAGENT": "Aiagent.app", + "AIAGENT": "AI Agents", + "AIAGENTAPP": "Aiagent.app", "AIAI": "All In AI", "AIAKITA": "AiAkita", "AIAT": "AI Analysis Token", @@ -433,8 +444,9 @@ "AIMONICA": "Aimonica Brands", "AIMR": "MeromAI", "AIMS": "HighCastle Token", - "AIMX": "Aimedis", + "AIMX": "MindMatrix", "AIMXV1": "Aimedis v1", + "AIMXV2": "Aimedis", "AIN": "AI Network", "AINA": "Ainastasia", "AINN": "AINN", @@ -452,6 +464,7 @@ "AIPG": "AI Power Grid", "AIPIN": "AI PIN", "AIPO": "Aipocalypto", + "AIPUMP": "aiPump", "AIR": "Altair", "AIRB": "BillionAir", "AIRBTC": "AIRBTC", @@ -465,10 +478,11 @@ "AIRTNT": "Tenti", "AIRTOKEN": "AirToken", "AIRX": "Aircoins", - "AIS": "AISwap", + "AIS": "AISociety", "AISCII": "AISCII", "AISHIB": "ARBSHIB", "AIST": "Artificial intelligence staking token", + "AISW": "AISwap", "AIT": "AIT Protocol", "AITECH": "Artificial Intelligence Utility Token", "AITEK": "AI Technology", @@ -487,6 +501,7 @@ "AIWALLET": "AiWallet Token", "AIWS": "AIWS", "AIX": "Aigang", + "AIX9": "AthenaX9", "AIXBT": "aixbt by Virtuals", "AIXERC": "AI-X", "AIXT": "AIXTerminal", @@ -497,6 +512,7 @@ "AKAL": "AKA Liberty", "AKASHA": "Akasha by Bloomverse", "AKI": "Aki Network", + "AKIO": "Akio", "AKIT": "Akita Inu", "AKITA": "Akita Inu", "AKITAI": "AKITA INU", @@ -509,6 +525,7 @@ "AKT": "Akash Network", "AKTIO": "AKTIO Coin", "AKUMA": "Akuma Inu", + "AKV": "Akiverse Governance", "AL": "ArchLoot", "ALA": "Alanyaspor Fan Token", "ALAN": "Alan the Alien", @@ -558,6 +575,7 @@ "ALIS": "ALISmedia", "ALIT": "Alitas", "ALITA": "Alita Network", + "ALITATOKEN": "Alita Token", "ALIX": "AlinX", "ALKI": "Alkimi", "ALLBI": "ALL BEST ICO", @@ -586,6 +604,7 @@ "ALPHAF": "Alpha Fi", "ALPHAG": "Alpha Gardeners", "ALPHAPETTO": "Alpha Petto Shells", + "ALPHAPLATFORM": "Alpha Token", "ALPHAS": "Alpha Shards", "ALPHR": "Alphr", "ALPINE": "Alpine F1 Team Fan Token", @@ -608,7 +627,7 @@ "ALWAYS": "Always Evolving", "ALX": "ALAX", "ALY": "Ally", - "AM": "AeroMe", + "AM": "Aston Martin Cognizant", "AMA": "MrWeb", "AMADEUS": "AMADEUS", "AMAL": "AMAL", @@ -620,6 +639,7 @@ "AMBO": "Sheertopia", "AMBR": "Ambra", "AMBT": "AMBT Token", + "AMC": "AI Meta Coin", "AMDC": "Allmedi Coin", "AMDG": "AMDG", "AME": "Amepay", @@ -659,10 +679,12 @@ "ANAL": "AnalCoin", "ANALOS": "analoS", "ANALY": "Analysoor", + "ANARCHISTS": "Anarchists Prime", "ANAT": "Anatolia Token", "ANB": "Angryb", "ANC": "Anchor Protocol", "ANCHOR": "AnchorSwap", + "ANCIENTKING": "Ancient Kingdom", "ANCP": "Anacrypt", "ANCT": "Anchor", "AND": "AndromedaCoin", @@ -717,6 +739,7 @@ "ANTEX": "Antex", "ANTI": "Anti Bitcoin", "ANTIS": "Antis Inu", + "ANTMONS": "Antmons", "ANTS": "ANTS Reloaded", "ANTT": "Antara Token", "ANUS": "URANUS", @@ -740,7 +763,7 @@ "APCG": "ALLPAYCOIN", "APD": "Aptopad", "APE": "ApeCoin", - "APED": "Baddest Alpha Ape Bundle", + "APED": "Aped", "APEDEV": "The dev is an Ape", "APEFUN": "Ape", "APEMAN": "APEMAN", @@ -793,6 +816,7 @@ "APYS": "APYSwap", "APZ": "Alprockz", "AQA": " AQA Token", + "AQDC": "AQDC", "AQT": "Alpha Quark Token", "AQTIS": "AQTIS", "AQU": "aQuest", @@ -809,7 +833,7 @@ "ARATA": "Arata", "ARAW": "Araw", "ARB": "Arbitrum", - "ARBI": "Arbi", + "ARBI": "Arbipad", "ARBIT": "Arbit Coin", "ARBP": "ARB Protocol", "ARBS": "Arbswap", @@ -827,6 +851,7 @@ "ARCAS": "Arcas", "ARCH": "Archway", "ARCHA": "ArchAngel Token", + "ARCHAI": "ArchAI", "ARCHCOIN": "ArchCoin", "ARCHE": "Archean", "ARCHIVE": "Chainback", @@ -883,11 +908,13 @@ "ARQ": "ArQmA", "ARQX": "ARQx AI", "ARR": "ARROUND", + "ARRI": "Arris", "ARRO": "Arro Social", + "ARROW": "Arrow Token", "ARRR": "Pirate Chain", "ARSL": "Aquarius Loan", "ARSW": "ArthSwap", - "ART": "Maecenas", + "ART": "Genify ART", "ARTC": "Artcoin", "ARTDECO": "ARTDECO", "ARTDRAW": "ArtDraw", @@ -939,6 +966,7 @@ "ASKAI": "ASKAI", "ASKO": "Asko", "ASM": "Assemble Protocol", + "ASMAT": "AsMatch", "ASMO": "AS Monaco Fan Token", "ASN": "Ascension Coin", "ASNT": "Assent Protocol", @@ -957,6 +985,7 @@ "ASTA": "ASTA", "ASTO": "Altered State Token", "ASTON": "Aston", + "ASTONV": "Aston Villa Fan Token", "ASTR": "Astar", "ASTRA": "Astra Protocol", "ASTRADAO": "Astra DAO", @@ -1003,6 +1032,7 @@ "ATL": "ATLANT", "ATLA": "Atleta Network", "ATLAS": "Star Atlas", + "ATLASD": "Atlas DEX", "ATLX": "Atlantis Loans Polygon", "ATM": "Atletico de Madrid Fan Token", "ATMA": "ATMA", @@ -1030,7 +1060,7 @@ "ATROFA": "Atrofarm", "ATRS": "Attarius Network", "ATRV1": "Artrade v1", - "ATS": "Atlas DEX", + "ATS": "Alltoscan", "ATT": "Attila", "ATTR": "Attrace", "ATX": "ArtexCoin", @@ -1066,10 +1096,12 @@ "AUSDT": "aUSDT", "AUT": "Autoria", "AUTHORSHIP": "Authorship", - "AUTISM": "AUTISM", + "AUTISM": "autism", + "AUTISMTOKEN": "AUTISM", "AUTO": "Auto", "AUTOMATIC": "Automatic Treasury Machine", "AUTONO": "Autonomi", + "AUTOS": "CryptoAutos", "AUTUMN": "Autumn", "AUVERSE": "AuroraVerse", "AUX": "Auxilium", @@ -1092,6 +1124,7 @@ "AVAXAI": "AIvalanche DeFAI Agents", "AVAXIOU": "Avalanche IOU", "AVB": "Autonomous Virtual Beings", + "AVC": "AVC", "AVDO": "AvocadoCoin", "AVE": "Avesta", "AVEN": "Aventis AI", @@ -1102,7 +1135,7 @@ "AVI": "Aviator", "AVINOC": "AVINOC", "AVIVE": "Avive World", - "AVL": "Aston Villa Fan Token", + "AVL": "AVL", "AVM": "AVM (Atomicals)", "AVME": "AVME", "AVN": "AVNRich", @@ -1114,6 +1147,7 @@ "AVTM": "Aventis Metaverse", "AVXL": "Avaxlauncher", "AVXT": "Avaxtars Token", + "AWARDCOIN": "Award", "AWARE": "ChainAware.ai", "AWAX": "AWAX", "AWC": "Atomic Wallet Coin", @@ -1123,9 +1157,9 @@ "AWO": "AiWork", "AWORK": "Aworker", "AWP": "Ansem Wif Photographer", - "AWR": "Award", + "AWR": "All Will Retire", "AWS": "AurusSILVER", - "AWT": "Airdrop World", + "AWT": "Abyss World", "AWX": "AurusX", "AX": "AlphaX", "AXC": "AXIA Coin", @@ -1189,13 +1223,14 @@ "BAB": "Babacoin", "BABI": "Babylons", "BABL": "Babylon Finance", - "BABY": "BabySwap", + "BABY": "Babylon", "BABYANDY": "Baby Andy", "BABYB": "Baby Bali", "BABYBI": "Baby Bitcoin", "BABYBINANCE": "BABYBINANCE", "BABYBITC": "BabyBitcoin", "BABYBNB": "BabyBNB", + "BABYBNBBABY": "BabyBNB", "BABYBNBTIGER": "BabyBNBTiger", "BABYBO": "BabyBonk", "BABYBOB": "Baby Bob", @@ -1242,7 +1277,6 @@ "BABYKEKIUS": "Baby Kekius Maximus", "BABYKITTY": "BabyKitty", "BABYKOMA": "Baby Koma", - "BABYLON": "Babylon", "BABYLONG": "Baby Long", "BABYM": "BabyMAGA", "BABYMAGA": "Baby Maga", @@ -1268,7 +1302,8 @@ "BABYRWA": "BabyRWA", "BABYS": "Baby Slerf", "BABYSAITAMA": "Baby Saitama", - "BABYSHARK": "Baby Shark", + "BABYSHARK": "Baby Shark Meme", + "BABYSHARKBSC": "Baby Shark", "BABYSHIB": "Baby Shiba Inu", "BABYSHIBAINU": "Baby Shiba Inu", "BABYSHIRO": "Baby Shiro Neko", @@ -1277,6 +1312,7 @@ "BABYSNAKE": "Baby Snake BSC", "BABYSOL": "Baby Solana", "BABYSORA": "Baby Sora", + "BABYSWAP": "BabySwap", "BABYSWEEP": "BabySweep", "BABYT": "BABYTRUMP", "BABYTK": "Baby Tiger King", @@ -1297,7 +1333,9 @@ "BADAI": "BAD Coin", "BADC": "BADCAT", "BADCAT": "Andy’s Alter Ego", + "BADDEST": "Baddest Alpha Ape Bundle", "BADGER": "Badger DAO", + "BADM": "Badmad Robots", "BAFC": "BabyApeFunClub", "BAG": "Bag", "BAGS": "Basis Gold Share", @@ -1320,7 +1358,8 @@ "BALANCE": "Balance AI", "BALD": "Bald", "BALIN": "Balin Bank", - "BALL": "Game 5 BALL", + "BALKANCOIN": "Balkancoin", + "BALL": "BitBall", "BALLZ": "Wolf Wif", "BALN": "Balanced", "BALPHA": "bAlpha", @@ -1343,10 +1382,12 @@ "BAND": "Band Protocol", "BANDEX": "Banana Index", "BANDIT": "Bandit on Base", + "BANDO": "Bandot", "BANG": "BANG", "BANGY": "BANGY", "BANK": "Float Protocol", "BANKA": "Bank AI", + "BANKBRC": "BANK Ordinals", "BANKC": "Bankcoin", "BANKER": "BankerCoinAda", "BANKETH": "BankEth", @@ -1374,6 +1415,7 @@ "BARY": "Bary", "BAS": "Basis Share", "BASEAI": "BaseAI", + "BASEBEAR": "BBQ", "BASECAT": "BASE CAT", "BASECOIN": "BASECOIN", "BASED": "Based Money", @@ -1398,11 +1440,13 @@ "BASHOS": "Bashoswap", "BASIC": "BASIC", "BASID": "Basid Coin", + "BASIL": "Basilisk", "BASIS": "Basis", "BASK": "BasketDAO", "BAST": "Bast", "BASTET": "Bastet Goddess", "BAT": "Basic Attention Token", + "BATCH": "BATCH Token", "BATH": "Battle Hero", "BATMAN": "BATMAN", "BATO": "Batonex Token", @@ -1445,7 +1489,7 @@ "BBROCCOLI": "Baby Broccoli", "BBS": "BBSCoin", "BBSOL": "Bybit Staked SOL", - "BBT": "BitBook", + "BBT": "BabyBoomToken", "BBTC": "Binance Wrapped BTC", "BBTF": "Block Buster Tech Inc", "BBUSD": "BounceBit USD", @@ -1487,6 +1531,7 @@ "BCOINM": "Bomb Crypto (MATIC)", "BCOQ": "BLACK COQINU", "BCP": "BitcashPay", + "BCPAY": "Bitcashpay", "BCPT": "BlockMason Credit Protocol", "BCR": "BitCredit", "BCRO": "Bonded Cronos", @@ -1508,8 +1553,9 @@ "BDCA": "BitDCA", "BDCC": "BDCC COIN", "BDCLBSC": "BorderCollieBSC", - "BDG": "BitDegree", + "BDG": "Beyond Gaming", "BDID": "BDID", + "BDIN": "BendDAO BDIN", "BDL": "Bitdeal", "BDOG": "Bulldog Token", "BDOGITO": "BullDogito", @@ -1529,7 +1575,8 @@ "BEAM": "Beam", "BEAMMW": "Beam", "BEAN": "Bean", - "BEANS": "Moonbeans", + "BEANS": "SUNBEANS (BEANS)", + "BEAR": "Bear Inu", "BEARIN": "Bear in Bathrobe", "BEAST": "MrBeast", "BEAT": "BEAT Token", @@ -1537,19 +1584,24 @@ "BEATLES": "JohnLennonC0IN", "BEATS": "Sol Beats", "BEBE": "BEBE", + "BEBEETH": "BEBE", + "BEBEV1": "BEBE v1", "BEC": "Betherchip", "BECH": "Beauty Chain", "BECN": "Beacon", "BECO": "BecoSwap Token", "BECX": "BETHEL", "BED": "Bankless BED Index", + "BEDROCK": "Bedrock", "BEE": "Herbee", "BEEF": "PepeBull", "BEEG": "Beeg Blue Whale", "BEENZ": "BEENZ", "BEEP": "BEEP", + "BEEPBOOP": "Boop", "BEER": "BEERCOIN", "BEERUSCAT": "BeerusCat", + "BEES": "BEEs", "BEET": "BEETroot", "BEETLE": "Beetle Coin", "BEETOKEN": "Bee Token", @@ -1673,7 +1725,8 @@ "BHO": "Bholdus Token", "BHP": "Blockchain of Hash Power", "BHPC": "BHPCash", - "BIAO": "Biaocoin", + "BIAO": "BIAO", + "BIAOCOIN": "Biaocoin", "BIB": "BIB Token", "BIBI": "BIBI", "BIBI2025": "Bibi", @@ -1746,10 +1799,11 @@ "BIPX": "Bispex", "BIR": "Birake", "BIRB": "Birb", - "BIRD": "Bird.Money", + "BIRD": "BIRD", "BIRDCHAIN": "Birdchain", "BIRDD": "BIRD DOG", "BIRDDOG": "Bird Dog", + "BIRDMONEY": "Bird.Money", "BIRDO": "Bird Dog", "BIS": "Bismuth", "BISKIT": "Biskit Protocol", @@ -1761,12 +1815,15 @@ "BITASEAN": "BitAsean", "BITB": "BeanCash", "BITBEDR": "Bitcoin EDenRich", + "BITBO": "BitBook", + "BITBOARD": "Bitboard", "BITBOOST": "BitBoost", "BITBULL": "Bitbull", "BITBURN": "Bitburn", "BITC": "BitCash", "BITCAR": "BitCar", "BITCAT": "Bitcat", + "BITCATONSOL": "Bitcat", "BITCCA": "Bitcci Cash", "BITCI": "Bitcicoin", "BITCM": "Bitcomo", @@ -1778,6 +1835,7 @@ "BITCOINV": "BitcoinV", "BITCONNECT": "BitConnect Coin", "BITCRATIC": "Bitcratic Token", + "BITDEGREE": "BitDegree", "BITE": "Bitether", "BITF": "Bit Financial", "BITFLIP": "BitFlip", @@ -1799,6 +1857,7 @@ "BITRUE": "Bitrue Coin", "BITS": "BitstarCoin", "BITSD": "Bits Digit", + "BITSEEDS": "BitSeeds", "BITSERIAL": "BitSerial", "BITSILVER": "bitSilver", "BITSPACE": "Bitspace", @@ -1826,7 +1885,7 @@ "BJ": "Blocjerk", "BJK": "Beşiktaş", "BKBT": "BeeKan", - "BKC": "Balkancoin", + "BKC": "BKC Token", "BKING": "King Arthur", "BKK": "BKEX Token", "BKN": "Brickken", @@ -1843,12 +1902,14 @@ "BLACK": "BLACKHOLE PROTOCOL", "BLACKD": "Blackder AI", "BLACKDRAGON": "Black Dragon", + "BLACKP": "BlackPool Token", "BLACKR": "BLACK ROCK", "BLACKROCK": "BlackRock", "BLACKSALE": "Black Sale", "BLACKST": "Black Stallion", "BLACKSWAN": "BlackSwan AI", - "BLADE": "BladeWarrior", + "BLADE": "BladeGames", + "BLADEW": "BladeWarrior", "BLAKEBTC": "BlakeBitcoin", "BLANK": "Blank Token", "BLAS": "BlakeStar", @@ -1856,7 +1917,8 @@ "BLASTA": "BlastAI", "BLASTUP": "BlastUP", "BLAUNCH": "B-LAUNCH", - "BLAZE": "Blaze", + "BLAZE": "StoryFire", + "BLAZECOIN": "Blaze", "BLAZEX": "BlazeX", "BLAZR": "BlazerCoin", "BLBY": "Badluckbaby", @@ -1892,10 +1954,13 @@ "BLOCK": "Blockasset", "BLOCKB": "Block Browser", "BLOCKF": "Block Farm Club", + "BLOCKG": "BlockGames", "BLOCKIFY": "Blockify.Games", + "BLOCKMAX": "BLOCKMAX", "BLOCKN": "BlockNet", "BLOCKPAY": "BlockPay", "BLOCKS": "BLOCKS", + "BLOCKSSPACE": "Blocks Space", "BLOCKSTAMP": "BlockStamp", "BLOCKT": "Blocktools", "BLOCKW": "Blockwise", @@ -1912,7 +1977,7 @@ "BLOXT": "Blox Token", "BLP": "BullPerks", "BLRY": "BillaryCoin", - "BLS": "Blocks Space", + "BLS": "BloodLoop", "BLST": "Crypto Legions Bloodstone", "BLT": "Blocto Token", "BLTC": "BABYLTC", @@ -2092,12 +2157,13 @@ "BOLTT": "BolttCoin", "BOM": "Book Of Matt Furie", "BOMA": "Book of Maga", - "BOMB": "BOMB", + "BOMB": "LollyBomb", "BOMBC": "BombCoin", "BOMBLOONG": "Bombloong", "BOMBM": "Bomb Money", "BOMBO": "BOMBO", "BOMBS": "Bomb Shelter Inu", + "BOMBTOKEN": "BOMB", "BOME": "BOOK OF MEME", "BOME2": "Book of Meme 2.0", "BOMEDOGE": "BOOK OF DOGE MEMES", @@ -2114,6 +2180,7 @@ "BONDLYV1": "Bondly Finance", "BONDX": "BondX", "BONE": "Bone ShibaSwap", + "BONEBONE": "Bone", "BONES": "Moonshots Farm", "BONESCOIN": "BonesCoin", "BONESV1": "Squirrel Finance", @@ -2155,7 +2222,7 @@ "BOOMDAO": "BOOM DAO", "BOOMER": "Boomer", "BOONS": "BOONSCoin", - "BOOP": "Boop", + "BOOP": "BOOP", "BOOS": "Boost Trump Campaign", "BOOST": "PodFast", "BOOSTCO": "Boost", @@ -2236,7 +2303,7 @@ "BPRO": "BitCloud Pro", "BPS": "BitcoinPoS", "BPSHIB": "Binance-Peg Shiba Inu (Binance Bridge)", - "BPT": "BlackPool Token", + "BPT": "Best Patent Token", "BPTC": "Business Platform Tomato Coin", "BPUNI": "Binance-Peg Uniswap Protocol Token (Binance Bridge)", "BPUSDC": "Binance-Peg USD Coin (Binance Bridge)", @@ -2397,7 +2464,7 @@ "BSW": "Biswap", "BSWAP": "BaseSwap", "BSWT": "BaySwap", - "BSX": "Basilisk", + "BSX": "BSX", "BSY": "Bestay", "BSYS": "BSYS", "BT": "BT.Finance", @@ -2524,6 +2591,7 @@ "BUBV1": "BUBCAT v1", "BUC": "Beau Cat", "BUCK": "Coinbuck", + "BUCKAZOIDS": "Buckazoids", "BUCKS": "SwagBucks", "BUCKY": "Bucky", "BUD": "Buddy", @@ -2606,7 +2674,8 @@ "BUY": "Burency", "BUYI": "Buying.com", "BUYT": "Buy the DIP", - "BUZZ": "BuzzCoin", + "BUZZ": "Hive AI", + "BUZZCOIN": "BuzzCoin", "BV3A": "Buccaneer V3 Arbitrum", "BVC": "BeaverCoin", "BVM": "BVM", @@ -2644,6 +2713,7 @@ "BYB": "BiorBank", "BYC": "ByteCent", "BYG": "Black Eye Galaxy", + "BYIN": "BYIN", "BYT": "ByteAI", "BYTE": "Byte", "BYTES": "Neo Tokyo", @@ -2701,8 +2771,9 @@ "CAKEMOON": "CakeMoon", "CAKESWAP": "CakeSwap", "CAKEW": "CakeWSwap", - "CAL": "Calcium", + "CAL": "FitBurn", "CALC": "CaliphCoin", + "CALCI": "Calcium", "CALI": "CaliCoin", "CALL": "Global Crypto Alliance", "CALLS": "OnlyCalls by Virtuals", @@ -2717,7 +2788,8 @@ "CAN": "Channels", "CANCER": "Cancer", "CAND": "Canary Dollar", - "CANDLE": "Candle Cat", + "CANDLE": "Candle TV", + "CANDLECAT": "Candle Cat", "CANDY": "UnicornGo Candy", "CANDYLAD": "Candylad", "CANN": "CannabisCoin", @@ -2738,15 +2810,17 @@ "CAPTAINPLANET": "Captain Planet", "CAPY": "Capybara", "CAPYBARA": "Capybara", - "CAR": "CarBlock", + "CAR": "Central African Republic Meme", "CARAT": "Carats Token", + "CARBLOCK": "CarBlock", "CARBO": "CleanCarbon", "CARBON": "Carboncoin", "CARBONGEMS": "Carbon GEMS", "CARD": "Cardstack", "CARDS": "Cardstarter", "CARDSWAP": "CardSwap", - "CARE": "Carebit", + "CARE": "CareCoin", + "CAREBIT": "Carebit", "CARES": "CareCoin", "CARL": "Carl", "CARLO": "Carlo", @@ -2767,6 +2841,7 @@ "CASINU": "Casinu Inu", "CASIO": "CasinoXMetaverse", "CASPER": "Casper DeFi", + "CASPERTOKEN": "Casper Token", "CAST": "Castello Coin", "CASTLE": "bitCastle", "CAT": "Simon's Cat", @@ -2787,6 +2862,7 @@ "CATCOINV2": "CatCoin Cash", "CATDOG": "Cat-Dog", "CATDOGE": "CAT DOGE", + "CATE": "Cate on ETH", "CATEC": "Cate Coin", "CATECOIN": "CateCoin", "CATELON": "CatElonMars", @@ -2796,6 +2872,7 @@ "CATGAME": "Cookie Cat Game", "CATGIRL": "Catgirl", "CATGOKU": "Catgoku", + "CATGOLD": "Cat Gold Miner", "CATGPT": "CatGPT", "CATHAT": "catwifhat", "CATHEON": "Catheon Gaming", @@ -2809,12 +2886,13 @@ "CATO": "CATO", "CATPAY": "CATpay", "CATPEPE": "CAT PEPE", - "CATS": "CatCoin Token", + "CATS": "Cats", "CATSC": "Catscoin", "CATSHIRA": "Shira Cat", "CATSO": "Cats Of Sol", "CATSON": "Catson", "CATSV1": "CatCoin Token v1", + "CATSV2": "CatCoin Token", "CATSY": "CAT SYLVESTER", "CATT": "Catex", "CATTO": "Cat Token", @@ -2904,6 +2982,7 @@ "CDAI": "Compound Dai", "CDBIO": "CDbio", "CDCETH": "Crypto.com Staked ETH", + "CDCSOL": "Crypto.com Staked SOL", "CDEX": "Cryptodex", "CDL": "CoinDeal Token", "CDN": "Canada eCoin", @@ -2922,6 +3001,7 @@ "CEICAT": "CEILING CAT", "CEJI": "Ceji", "CEL": "Celsius Network", + "CELA": "Cellula Token", "CELEB": "CELEBPLUS", "CELL": "Cellframe", "CELO": "Celo", @@ -3151,6 +3231,7 @@ "CIRRUS": "Cirrus", "CIRUS": "Cirus", "CIRX": "Circular Protocol", + "CITADAIL": "Griffain New Hedge Fund", "CITI": "CITI Fediverse", "CITY": "Manchester City Fan Token", "CIV": "Civilization", @@ -3206,6 +3287,7 @@ "CLM": "CoinClaim", "CLMRS": "Crolon Mars", "CLN": "Colu Local Network", + "CLND": "COLEND", "CLNX": "Coloniume Network", "CLNY": "Colony", "CLO": "Callisto Network", @@ -3303,6 +3385,7 @@ "COCONUT": "Coconut", "COCOR": "Cocoro", "COCORO": "Cocoro", + "COCOROBNB": "Cocoro", "COCOROERC": "COCORO", "COD": "Chief of Deswamp", "CODA": "CODA", @@ -3406,7 +3489,8 @@ "COQ": "Coq Inu", "COR": "Coreto", "CORA": "Cora by Virtuals", - "CORAL": "CoralPay", + "CORAL": "Coral Protocol", + "CORALPAY": "CoralPay", "CORE": "Core", "COREC": "CoreConnect", "COREDAO": "coreDAO", @@ -3583,6 +3667,7 @@ "CRONA": "CronaSwap", "CRONK": "CRONK", "CROPPER": "CropperFinance", + "CROS": "Cros Token", "CROW": "cr0w by Virtuals", "CROWD": "CrowdCoin", "CROWDWIZ": "Crowdwiz", @@ -3631,6 +3716,7 @@ "CRYPTOE": "Cryptoenter", "CRYPTOEM": "Crypto Emperor Trump", "CRYPTOF": "CryptoFarmers", + "CRYPTOFIGHT": "Crypto Fight Club", "CRYPTOH": "CryptoHunterTrading", "CRYPTOJ": "Crypto Journey", "CRYPTOJESUS": "Crypto Jesus Trump", @@ -3643,6 +3729,7 @@ "CRYPTOS": "CryptoSoul", "CRYPTOSDG": "Crypto SDG", "CRYPTOT": "Crypto Trump", + "CRYPTOTANKS": "CryptoTanks", "CRYPTOU": "CryptoUnity", "CRYSTAL": "Crystal", "CRYSTALCLEAR": "Crystal Clear Token", @@ -3667,6 +3754,7 @@ "CSQ": "cosquare", "CSR": "Cashera", "CSS": "CoinSwap Token", + "CST": "Crypto Samurai", "CSTC": "CryptosTribe", "CSTL": "Castle", "CSTR": "CoreStarter", @@ -3727,7 +3815,8 @@ "CUFF": "Jail Cat", "CULO": "CULO", "CULOETH": "CULO", - "CULT": "Cult DAO", + "CULT": "Milady Cult Coin", + "CULTDAO": "Cult DAO", "CULTUR": "Cultur", "CUM": "Cumbackbears", "CUMINU": "CumInu", @@ -3812,6 +3901,7 @@ "CYBERWAY": "CyberWay", "CYBONK": "CYBONK", "CYBR": "CYBR", + "CYBRO": "Cybro Token", "CYC": "Cyclone Protocol", "CYCAT": "Chi Yamada Cat", "CYCE": "Crypto Carbon Energy", @@ -3910,6 +4000,7 @@ "DAO1": "DAO1", "DAOACT": "ACT", "DAOB": "DAOBet", + "DAOLITY": "Daolity", "DAOP": "Dao Space", "DAOSOL": "MonkeDAO", "DAOVC": "DAO.VC", @@ -4050,6 +4141,7 @@ "DEBT": "The Debt Box", "DEC": "Decentr", "DECENTRALG": "Decentral Games ICE", + "DECENTRALIZED": "DECENTRALIZED", "DECHAT": "Dechat", "DECI": "Maximus DECI", "DECL": "Decimal token", @@ -4074,9 +4166,11 @@ "DEEPSEEKR1": "DeepSeek R1", "DEER": "ToxicDeer Finance", "DEERSEIZED": "Deer Seized by US Government", + "DEESSE": "Deesse", "DEEX": "DEEX", "DEEZ": "DEEZ NUTS", - "DEFAI": "DeFAI", + "DEFAI": "DEFAI", + "DEFAIDAO": "DeFAI", "DEFC": "Defi Coin", "DEFEND": "Blockdefend AI", "DEFI": "DeFi", @@ -4140,7 +4234,8 @@ "DERO": "Dero", "DERP": "Derp", "DES": "DeSpace Protocol", - "DESCI": "DeSci Meme", + "DESCI": "SUI Desci Agents", + "DESCIMEME": "DeSci Meme", "DESI": "Desico", "DESO": "Decentralized Social", "DESTINY": "Destiny", @@ -4241,9 +4336,10 @@ "DIA": "DIA", "DIAB": "Diablo IV Solana", "DIABLO": "Diablo IV", - "DIAM": "Diamond", + "DIAM": "DIAM", "DIAMND": "Projekt Diamond", "DIAMO": "Diamond Launch", + "DIAMON": "Diamond", "DIAMOND": "Diamond Coin", "DIAMONDINU": "Diamond", "DIBBLE": "Dibbles", @@ -4287,13 +4383,15 @@ "DIM": "DIMCOIN", "DIME": "DimeCoin", "DIMO": "DIMO", - "DIN": "Dinero", + "DIN": "DIN", + "DINE": "Dinero", "DINERO": "Dinero", "DINEROBET": "Dinerobet", "DINGER": "Dinger Token", "DINGO": "Dingocoin", - "DINO": "DinoSwap", + "DINO": "DinoLFG", "DINOS": "Dinosaur Inu", + "DINOSWAP": "DinoSwap", "DINT": "DinarTether", "DINU": "Dogey-Inu", "DINW": "Dinowars", @@ -4354,7 +4452,7 @@ "DMAGA": "Dark MAGA", "DMAIL": "DMAIL Network", "DMAR": "DMarket", - "DMC": "Dream21", + "DMC": "Datamall Coin", "DMCC": "DiscoverFeed", "DMCH": "DARMA Cash", "DMCK": "Diamond Castle", @@ -4366,6 +4464,7 @@ "DMLG": "Demole", "DMOD": "Demodyfi Token", "DMOON": "Dollarmoon", + "DMR": "dmr", "DMS": "Documentchain", "DMT": "Dream Machine Token", "DMTC": "Demeter Chain", @@ -4405,6 +4504,7 @@ "DOCK": "Dock.io", "DOCSWAP": "Dex on Crypto", "DOCT": "DocTailor", + "DOCTO": "DoctorX", "DOD": "Day Of Defeat 2.0", "DOD100": "Day of Defeat Mini 100x", "DODI": "DoubleDice", @@ -4446,6 +4546,7 @@ "DOGEFATHER": "Dogefather", "DOGEFORK": "DogeFork", "DOGEGF": "DogeGF", + "DOGEGOV": "Department Of Government Efficiency (dogegov.com)", "DOGEGROK": "Doge Grok", "DOGEGROKAI": "Doge Of Grok AI", "DOGEI": "Dogei", @@ -4485,6 +4586,7 @@ "DOGIN": "Doginhood", "DOGINC": "dog in cats world", "DOGINME": "doginme", + "DOGINWOTAH": "doginwotah", "DOGIRA": "Dogira", "DOGK": "Dagknight Dog", "DOGLAI": "Doglaikacoin", @@ -4514,13 +4616,14 @@ "DOLLARCOIN": "DollarCoin", "DOLLUR": "Dollur Go Brrr", "DOLLY": "DOLLY", + "DOLO": "Dolomite", "DOLPHY": "Dolphy", "DOLZ": "DOLZ", - "DOM": "Ancient Kingdom", + "DOM": "DomusAI", "DOME": "Everdome", "DOMI": "Domi", "DOMO": "Dony Montana", - "DON": "Donnie Finance", + "DON": "TheDonato Token", "DONA": "DONASWAP", "DONAL": "Donald Pump", "DONALD": "DONALD TRUMP", @@ -4532,11 +4635,13 @@ "DONJR": "Don Jr.", "DONK": "Don-key", "DONKE": "DONKE", + "DONNIEFIN": "Donnie Finance", "DONS": "The Dons", "DONT": "Donald Trump (dont.cash)", "DONU": "Donu", "DONUT": "Donut", "DONUTS": "The Simpsons", + "DOOD": "Doodles", "DOODI": "Doodipals", "DOODOO": "Doodoo", "DOOGLE": "Doogle", @@ -4617,6 +4722,7 @@ "DRCT": "Ally Direct", "DRE": "DoRen", "DREAM": "DREAM", + "DREAM21": "Dream21", "DREAMS": "Dreams Quest", "DREP": "DREP", "DRF": "Drife", @@ -4761,6 +4867,7 @@ "DVT": "DeVault", "DVTC": "DivotyCoin", "DVX": "Derivex", + "DWAIN": "DWAIN", "DWARFY": "Dwarfy", "DWARS": "Dynasty Wars", "DWC": "Digital Wallet", @@ -4817,6 +4924,7 @@ "E1INCH": "1inch (Energi Bridge)", "E21": "E21 Coin", "E2C": "Electronic Energy Coin", + "E4C": "E4C", "E8": "Energy8", "EA": "EagleCoin", "EAC": "Education Assessment Cult", @@ -4828,11 +4936,14 @@ "EAI": "Eagle AI", "EARLY": "Early Risers", "EARLYF": "EarlyFans", - "EARN": "EarnGuild", + "EARN": "Earn Network", "EARNB": "Earn BTC", + "EARNGUILD": "EarnGuild", + "EARNM": "EARNM", "EARTH": "Earth Token", "EARTHCOIN": "EarthCoin", "EASYF": "EasyFeedback", + "EASYMINE": "EasyMine", "EAT": "EDGE Activity Token", "EATH": "Eartherium", "EAURIC": "Eauric", @@ -4873,7 +4984,8 @@ "ECI": "Euro Cup Inu", "ECL": "ECLAT", "ECLD": "Ethernity Cloud", - "ECLIP": "Eclipse", + "ECLIP": "Eclipse Fi", + "ECLIPSE": "Eclipse", "ECO": "Ormeus Ecosystem", "ECOB": "EcoBit", "ECOC": "ECOcoin", @@ -4902,7 +5014,8 @@ "EDEXA": "edeXa Security Token", "EDFI": "EdFi", "EDG": "Edgeless", - "EDGE": "EDGE", + "EDGE": "Definitive", + "EDGENET": "EDGE", "EDGESOL": "Edgevana Staked SOL", "EDGEW": "Edgeware", "EDGT": "Edgecoin", @@ -4924,6 +5037,7 @@ "EDWIN": "Edwin", "EDX": "Equilibrium", "EEFS": "Eefs", + "EEG": "EEG Token", "EER": "Ethereum eRush", "EETH": "ether fi", "EFBAI": "EuroFootball AI", @@ -4971,6 +5085,7 @@ "EHRT": "Eight Hours Token", "EIFI": "EIFI FINANCE", "EIGEN": "EigenLayer", + "EIGENP": "Eigenpie", "EIM": "Expert Infra", "EIQT": "IQ Prediction", "EJAC": "EJA Coin", @@ -5013,7 +5128,8 @@ "ELI": "GoCrypto", "ELIC": "Elicoin", "ELITE": "EthereumLite", - "ELIX": "Elixir", + "ELIX": "Elixir Games", + "ELIXI": "Elixir", "ELIXIR": "Starchi", "ELIZ": "Eliza (ai16zeliza)", "ELIZA": "Eliza (elizawakesup.ai)", @@ -5069,7 +5185,8 @@ "EMATIC": "Wrapped Polygon (Energi Bridge)", "EMAX": "EthereumMax", "EMB": "Overline Emblem", - "EMBER": "EmberCoin", + "EMBER": "Ember", + "EMBERCOIN": "EmberCoin", "EMBR": "Embr", "EMC": "Edge Matrix Computing", "EMC2": "Einsteinium", @@ -5092,7 +5209,7 @@ "EMR": "Emorya Finance", "EMRLD": "The Emerald Company", "EMRX": "Emirex Token", - "EMT": "EasyMine", + "EMT": "EMAIL Token", "EMU": "eMusic", "EMV": "Ethereum Movie Venture", "EMX": "EMX", @@ -5165,6 +5282,7 @@ "EPIX": "Byepix", "EPK": "EpiK Protocol", "EPS": "Ellipsis (OLD)", + "EPT": "Balance", "EPTT": "Evident Proof Transaction Token", "EPX": "Ellipsis X", "EPY": "Empyrean", @@ -5214,6 +5332,7 @@ "ES": "Era Swap Token", "ESAI": "Ethscan AI", "ESBC": "ESBC", + "ESCC": "Eos Stable Coin Chain", "ESCE": "Escroco Emerald", "ESCROW": "Cryptegrity DAO", "ESCU": "EYESECU AI", @@ -5373,11 +5492,12 @@ "EVIN": "Evin Token", "EVMOS": "Evmos", "EVN": "Evn Token", - "EVO": "EvoVerses", + "EVO": "Devomon", "EVOAI": "EvolveAI", "EVOC": "EVOCPLUS", "EVOL": "EVOL NETWORK", "EVOS": "EVOS", + "EVOVERSES": "EvoVerses", "EVR": "Everus", "EVRICE": "Evrice", "EVRM": "Evrmore", @@ -5429,6 +5549,7 @@ "EYE": "MEDIA EYE", "EYES": "Eyes Protocol", "EYETOKEN": "EYE Token", + "EYWA": "EYWA", "EZ": "EasyFi V2", "EZC": "EZCoin", "EZEIGEN": "Restaked EIGEN", @@ -5437,6 +5558,8 @@ "EZM": "EZMarket", "EZPZ": "Eazy Peazy", "EZSOL": "Renzo Restaked SOL", + "EZSWAP": "EZswap Protocol", + "EZSWAPV1": "EZswap Protocol v1", "EZT": "EZToken", "EZY": "EzyStayz", "ElvishMagic": "EMAGIC", @@ -5459,6 +5582,7 @@ "FACTOM": "Factom", "FACTORY": "ChainFactory", "FACTR": "Defactor", + "FACTRPAY": "FactR", "FADO": "FADO Go", "FAFO": "FAFO", "FAFOSOL": "Fafo", @@ -5522,7 +5646,7 @@ "FAYD": "Fayda", "FAYRE": "Fayre", "FAZZ": "FazzCoin", - "FB": "Fenerbahçe Token", + "FB": "Fractal Bitcoin", "FBA": "Firebird Aggregator", "FBB": "FilmBusinessBuster", "FBG": "Fort Block Games", @@ -5573,6 +5697,7 @@ "FELIX": "FelixCoin", "FELIX2": "Felix 2.0 ETH", "FEN": "First Ever NFT", + "FENE": "Fenerbahçe Token", "FENOMY": "Fenomy", "FENTANYL": "Chinese Communist Dragon", "FER": "Ferro", @@ -5608,6 +5733,7 @@ "FI": "Fideum", "FIA": "FIA Protocol", "FIBO": "FibSWAP DEx", + "FIBOS": "FIBOS", "FIBRE": "FIBRE", "FIC": "Filecash", "FID": "Fidira", @@ -5621,7 +5747,7 @@ "FIFTY": "FIFTYONEFIFTY", "FIG": "FlowCom", "FIGH": "FIGHT FIGHT FIGHT", - "FIGHT": "Crypto Fight Club", + "FIGHT": "Fight to MAGA", "FIGHTMAGA": "FIGHT MAGA", "FIGHTPEPE": "FIGHT PEPE", "FIGHTRUMP": "FIGHT TRUMP", @@ -5630,6 +5756,7 @@ "FIL": "FileCoin", "FILDA": "Filda", "FILES": "Solfiles", + "FILEST": "FileStar", "FILL": "Fillit", "FILM": "Filmpass", "FILST": "Filecoin Standard Hashrate Token", @@ -5646,6 +5773,7 @@ "FINK": "FINK", "FINN": "Huckleberry", "FINOM": "Finom FIN Token", + "FINOMNOM": "Finom NOM Token", "FINS": "AutoShark DEX", "FINT": "FintraDao", "FINU": "Formula Inu", @@ -5656,6 +5784,7 @@ "FIRA": "Defira", "FIRE": "Matr1x Fire", "FIRECOIN": "FireCoin", + "FIREP": "Fire Protocol", "FIREW": "Fire Wolf", "FIRO": "Firo", "FIRSTHARE": "FirstHare", @@ -5697,6 +5826,7 @@ "FLAS": "Flas Exchange Token", "FLASH": "Flashstake", "FLASHC": "FLASH coin", + "FLASHT": "FlashToken", "FLAVIA": "Flavia Is Online", "FLAY": "Flayer", "FLC": "FlowChainCoin", @@ -5813,10 +5943,11 @@ "FNX": "FinNexus", "FNXAI": "Finanx AI", "FNZ": "Fanzee", - "FO": "FIBOS", + "FO": "Official FO", "FOA": "Fragments of arker", "FOAM": "Foam", "FOC": "TheForce Trade", + "FOCAI": "focai.fun", "FOCV": "FOCV", "FODL": "Fodl Finance", "FOF": "Future Of Fintech", @@ -5829,7 +5960,8 @@ "FOL": "Folder Protocol", "FOLD": "Manifold Finance", "FOLO": "Alpha Impact", - "FOMO": "FOMO BULL CLUB", + "FOM": "FOMO BULL CLUB", + "FOMO": "Fomo", "FOMON": "FOMO Network", "FOMOSOL": "FOMOSolana", "FON": "INOFI", @@ -5870,6 +6002,7 @@ "FOTA": "Fight Of The Ages", "FOTO": "Unique Photo", "FOTTIE": "Fottie", + "FOU": "Four", "FOUND": "ccFound", "FOUNTAIN": "Fountain", "FOUR": "4", @@ -5893,6 +6026,7 @@ "FPI": "Frax Price Index", "FPIBANK": "FPIBANK", "FPIS": "Frax Price Index Share", + "FPS": "WEB3WAR Token", "FQS": "FQSwap V2", "FR": "Freedom Reserve", "FRA": "Findora", @@ -5914,6 +6048,7 @@ "FREE": "FREE coin", "FREED": "FreedomCoin", "FREEDO": "Freedom", + "FREEDOG": "Freedogs", "FREEDOM": "Freedom Protocol Token", "FREELA": "DecentralFree", "FREEPAVEL": "Free Pavel", @@ -5950,6 +6085,7 @@ "FROGLIC": "Pink Hood Froglicker", "FROGO": "Frogo", "FROK": "Frok.ai", + "FROKAI": "FrokAI", "FRONK": "Fronk", "FRONT": "Frontier", "FROP": "Popo The Frog", @@ -5999,7 +6135,7 @@ "FTO": "FuturoCoin", "FTON": "Fanton", "FTP": "FuturePoints", - "FTR": "FactR", + "FTR": "Fautor", "FTRB": "Faith Tribe", "FTRC": "FutureCoin", "FTS": "Fortress Lending", @@ -6016,7 +6152,8 @@ "FUBAO": "FUBAO", "FUCK": "Fuck Token", "FUCKTRUMP": "FUCK TRUMP", - "FUD": "FUD.finance", + "FUD": "Fud the Pug", + "FUDFINANCE": "FUD.finance", "FUEGO": "FUEGO", "FUEL": "Fuel Network", "FUELX": "Fuel", @@ -6070,6 +6207,7 @@ "FWT": "Freeway Token", "FWW": "Farmers World Wood", "FX": "Function X", + "FXAKV": "Akiverse Governance", "FXB": "FxBox", "FXC": "Flexacoin", "FXD": "Fathom Dollar", @@ -6084,6 +6222,7 @@ "FXUSD": "f(x) Protocol fxUSD", "FXY": "Floxypay", "FYD": "FYDcoin", + "FYDE": "Fyde", "FYDO": "Fly Doge", "FYN": "Affyn", "FYP": "FlypMe", @@ -6127,6 +6266,7 @@ "GAMBIT": "Gambit", "GAMBL": "Metagamble", "GAME": "GameBuild", + "GAME5BALL": "Game 5 BALL", "GAMEBUD": "GAMEBUD", "GAMEBYV": "GAME by Virtuals", "GAMEC": "Game", @@ -6145,6 +6285,7 @@ "GAMESTOP": "GameStop", "GAMESTUMP": "GAMESTUMP", "GAMET": "GAME Token", + "GAMETA": "Gameta", "GAMEX": "GameX", "GAMI": "GAMI World", "GAMIN": "Gaming Stars", @@ -6238,9 +6379,10 @@ "GE": "GEchain", "GEA": "Goldea", "GEAR": "Gearbox Protocol", - "GEC": "Geco.one", + "GEC": "Gecko Inu", "GECKO": "Gecko Coin", "GECKY": "Gecky", + "GECO": "GECOIN", "GEEK": "De:Lithe Last Memories", "GEEQ": "Geeq", "GEF": "GemFlow", @@ -6423,6 +6565,7 @@ "GLIESE": "GlieseCoin", "GLINK": "Gemlink", "GLINT": "BeamSwap", + "GLIZZY": "GLIZZY", "GLM": "Golem Network Token", "GLMR": "Moonbeam", "GLMV1": "Golem Network Token v1", @@ -6480,7 +6623,7 @@ "GMX": "GMX", "GN": "GN", "GNBT": "Genebank Token", - "GNC": "Greencoin", + "GNC": "Greenchie", "GND": "GND Protoco", "GNFT": "GNFT", "GNG": "GreenGold", @@ -6499,12 +6642,14 @@ "GNY": "GNY", "GO": "GoChain", "GOA": "GoaCoin", - "GOAL": "GOAL token", + "GOAL": "TopGoal Token", "GOALBON": "Goal Bonanza", "GOALS": "UnitedFans", + "GOALTOKEN": "GOAL token", "GOAT": "Goatseus Maximus", "GOATAI": "GOAT AI", "GOATCOIN": "Goat", + "GOATS": "GOATS", "GOATSE": "GOATSE", "GOB": "Goons of Balatroon", "GOC": "GoCrypto", @@ -6520,6 +6665,7 @@ "GOETH": "Algomint", "GOF": "Golff", "GOFF": "Gift Off Token", + "GOFINDXR": "Gofind XR", "GOFX": "GooseFX", "GOG": "Guild of Guardians", "GOGLZ": "GOGGLES", @@ -6537,6 +6683,7 @@ "GOLDCOINETH": "Gold", "GOLDE": "GOLDEN AGE", "GOLDEN": "Golden Inu", + "GOLDENC": "GoldenCat", "GOLDENG": "Golden Goose", "GOLDF": "Gold Fever", "GOLDMIN": "GoldMiner", @@ -6573,6 +6720,7 @@ "GOON": "Goonies", "GOP": "The Republican Party", "GOPX": "GOPX Token", + "GOR": "@gork", "GORA": "Gora", "GOREC": "GoRecruit", "GORGONZOLA": "Heroes 3 Foundation", @@ -6580,6 +6728,7 @@ "GORILLA": "Gorilla", "GORILLAD": "Gorilla Diamond", "GORILLAINU": "Gorilla Inu", + "GORK": "New XAI gork", "GORPLE": "GorplesCoin", "GOS": "Gosama", "GOSS": "GOSSIP-Coin", @@ -6643,6 +6792,7 @@ "GREARN": "GrEarn", "GREE": "Green God Candle", "GREEN": "GreenX", + "GREENCOIN": "Greencoin", "GREENH": "Greenheart CBD", "GREENMMT": "Green Mining Movement Token", "GREENPOWER": "GreenPower", @@ -6701,10 +6851,12 @@ "GROOOOOK": "Groooook", "GROOVE": "GROOVE", "GROW": "Grow Token", + "GROWAI": "SocialGrowAI", "GROWNCOIN": "GrownCoin", "GROWTH": "GROWTH DeFi", "GROYPER": "Groyper", "GRP": "Grape", + "GRPH": "Soul Graph", "GRPL": "Golden Ratio Per Liquidity", "GRS": "Groestlcoin", "GRT": "The Graph", @@ -6778,6 +6930,7 @@ "GUILD": "BlockchainSpace", "GUISE": "GUISE", "GULF": "GulfCoin", + "GULL": "GULL", "GUM": "Gourmet Galaxy", "GUMMIES": "GUMMIES", "GUMMY": "GUMMY", @@ -6809,6 +6962,7 @@ "GXC": "GXChain", "GXE": "XENO Governance", "GXT": "Gem Exchange And Trading", + "GYAT": "Gyat Coin", "GYEN": "GYEN", "GYM": "GYM Token", "GYMNET": "Gym Network", @@ -6839,6 +6993,7 @@ "HACHIKO": "Hachiko Inu Token", "HACHIONB": "Hachi On Base", "HACK": "HACK", + "HAEDAL": "Haedal Protocol", "HAGGIS": "New Born Haggis Pygmy Hippo", "HAHA": "Hasaki", "HAI": "Hacken Token", @@ -6848,6 +7003,7 @@ "HAKU": "HakuSwap", "HAL": "Halcyon", "HALF": "0.5X Long Bitcoin Token", + "HALFP": "Half Pizza", "HALFSHIT": "0.5X Long Shitcoin Index Token", "HALLO": "Halloween Coin", "HALLOWEEN": "HALLOWEEN", @@ -6857,7 +7013,7 @@ "HAMI": "Hamachi Finance", "HAMMY": "SAD HAMSTER", "HAMS": "HamsterCoin", - "HAMSTER": "Space Hamster", + "HAMSTER": "Hamster", "HAMSTERB": "HamsterBase", "HAMSTR": "Hamster Coin", "HAN": "HanChain", @@ -6878,6 +7034,7 @@ "HARE": "Hare Token", "HAREPLUS": "Hare Plus", "HAROLD": "Harold", + "HAROLDDUCK": "Harold", "HARPER": "Harper", "HARR": "HARRIS DOGS", "HARRIS": "KAMALA HARRIS", @@ -6889,9 +7046,10 @@ "HASBIK": "Hasbulla", "HASH": "Provenance Blockchain", "HASHAI": "HashAI", + "HASHNET": "HashNet BitEco", "HASHT": "HASH Token", "HASUI": "Haedal", - "HAT": "Hawala.Exchange", + "HAT": "TOP HAT", "HATAY": "Hatayspor Token", "HATCHY": "Hatchyverse", "HATI": "Hati", @@ -6899,6 +7057,7 @@ "HAVOC": "Havoc", "HAVY": "Havy", "HAW": "Hawk Tuah", + "HAWALA": "HAWALA", "HAWK": "Hawksight", "HAWKCITY": "Hawk", "HAWKPTAH": "Hawk Ptah", @@ -6975,12 +7134,13 @@ "HEM": "Hemera", "HEMAN": "HE-MAN", "HEMULE": "Hemule", + "HENAI": "HenjinAI Token", "HENG": "HengCoin", "HENL": "henlo", "HENLO": "Henlo", "HENLOV1": "Henlo v1", "HEP": "Health Potion", - "HER": "Hero Node", + "HER": "Her.AI", "HERA": "Hero Arena", "HERAF": "Hera Finance", "HERB": "HerbCoin", @@ -6995,6 +7155,7 @@ "HEROESAI": "HEROES AI", "HEROESC": "HeroesChained", "HEROI": "Heroic Saga Shiba", + "HERONODE": "Hero Node", "HET": "HavEther", "HETA": "HetaChain", "HETH": "Huobi Ethereum", @@ -7117,7 +7278,7 @@ "HMTT": "Hype Meme Token", "HMU": "hit meeee upp", "HMX": "HMX", - "HNB": "HashNet BitEco", + "HNB": "HNB Protocol", "HNC": "Hellenic Coin", "HNCN": "Huncoin", "HND": "Hundred Finance", @@ -7148,9 +7309,11 @@ "HOKK": "Hokkaidu Inu", "HOL": "Hololoot", "HOLA": "Hola Token", - "HOLD": "HOLD", + "HOLD": "Holdcoin", + "HOLDCO": "HOLD", "HOLDEX": "Holdex Finance", "HOLDON4": "HoldOn4DearLife", + "HOLDS": "Holdstation", "HOLY": "Holy Trinity", "HOM": "Homeety", "HOME": "OtterHome", @@ -7187,6 +7350,7 @@ "HORUS": "HorusPay", "HOS": "Hotel of Secrets", "HOSHI": "Dejitaru Hoshi", + "HOSICO": "Hosico Cat", "HOSKY": "Hosky", "HOSTAI": "Host AI", "HOT": "Holo", @@ -7196,7 +7360,7 @@ "HOTN": "HotNow", "HOTT": "HOT Token", "HOUND": "BaseHoundBot by Virtuals", - "HOUSE": "Klaymore Stakehouse", + "HOUSE": "Housecoin", "HOW": "HowInu", "HOWL": "Coyote", "HP": "HeroPark", @@ -7211,6 +7375,7 @@ "HPX": "HUPAYX", "HPY": "Hyper Pay", "HPYPEPE": "Happy Pepe Token", + "HQ": "Metaverse HQ", "HQR": "Hayya Qatar", "HQT": "HyperQuant", "HQX": "HOQU", @@ -7314,16 +7479,18 @@ "HYDROP": "Hydro Protocol", "HYGH": "HYGH", "HYN": "Hyperion", - "HYP": "HyperStake", + "HYP": "HyperX", "HYPC": "HyperCycle", "HYPE": "Hyperliquid", - "HYPER": "HyperChainX", + "HYPER": "Hyperlane", "HYPERAI": "HyperHash AI", + "HYPERC": "HyperChainX", "HYPERCOIN": "HyperCoin", "HYPERD": "HyperDAO", "HYPERIONX": "HyperionX", "HYPERS": "HyperSpace", "HYPERSKIDS": "HYPERSKIDS", + "HYPERSTAKE": "HyperStake", "HYPES": "Supreme Finance", "HYPEV1": "Hype v1", "HYPR": "Hypr Network", @@ -7340,6 +7507,7 @@ "I7": "ImpulseVen", "I9C": "i9 Coin", "IAG": "IAGON", + "IAGV1": "IAGON v1", "IAI": "inheritance Art", "IAM": "IAME Identity", "IAOMIN": "Yao Ming", @@ -7463,6 +7631,7 @@ "ILV": "Illuvium", "IMARO": "IMARO", "IMAYC": "IMAYC", + "IMBREX": "Imbrex", "IMBTC": "The Tokenized Bitcoin", "IMC": "i Money Crypto", "IME": "Imperium Empires", @@ -7535,6 +7704,7 @@ "INFTT": "iNFT Token", "INFX": "Influxcoin", "ING": "Infinity Games", + "INIT": "Initia", "INJ": "Injective", "INK": "Ink", "INN": "Innova", @@ -7548,10 +7718,11 @@ "INRXV1": "INRx v1", "INS": "Insolar (Old Chain)", "INSANE": "InsaneCoin", + "INSANECOIN": "InsaneCoin", "INSANITY": "Insanity Coin", "INSC": "INSC (Ordinals)", "INSE": "INSECT", - "INSN": "Insane Coin", + "INSN": "Industry Sonic", "INSP": "Inspect", "INSPI": "InspireAI", "INSR": "Insurabler", @@ -7596,8 +7767,9 @@ "IOETH": "ioETH", "IOEX": "ioeX", "IOI": "IOI Token", - "ION": "Ionomy", + "ION": "Ionic", "IONC": "IONChain", + "IONOMY": "Ionomy", "IONP": "Ion Power Token", "IONX": "Charged Particles", "IONZ": "IONZ", @@ -7629,6 +7801,7 @@ "IPX": "InpulseX", "IQ": "IQ", "IQ50": "IQ50", + "IQ6900": "IQ6900", "IQC": "IQ.cash", "IQG": "IQ Global", "IQN": "IQeon", @@ -7668,6 +7841,7 @@ "IST": "Inter Stable Token", "ISTEP": "iSTEP", "ITA": "Italian National Football Team Fan Token", + "ITALIANROT": "Italian Brainrot", "ITALOCOIN": "Italocoin", "ITAM": "ITAM Games", "ITAMCUBE": "CUBE", @@ -7676,6 +7850,7 @@ "ITF": "Intelligent Trading", "ITG": "iTrust Governance", "ITGR": "Integral", + "ITHACA": "Ithaca Protocol", "ITHEUM": "Itheum", "ITL": "Italian Lira", "ITLR": "MiTellor", @@ -7782,8 +7957,9 @@ "JEN": "JEN COIN", "JENNER": "Caitlyn Jenner", "JENSEN": "Jensen Huang", - "JERRY": "Jerry Inu", + "JERRY": "jerry", "JERRYINU": "JERRYINU", + "JERRYINUCOM": "Jerry Inu", "JES": "Jesus", "JEST": "Jester", "JESUS": "Jesus Coin", @@ -7863,6 +8039,7 @@ "JONESUSDC": "Jones USDC", "JOOPS": "JOOPS", "JOPER": "Joker Pepe", + "JOS": "JuliaOS", "JOSE": "Jose", "JOTCHUA": "Perro Dinero", "JOULE": "Joule", @@ -7898,6 +8075,7 @@ "JUIC": "Juice", "JUICE": "Juice Finance", "JUICEB": "Juice", + "JUICET": "Juice Town", "JUL": "Joule", "JULB": "JustLiquidity Binance", "JULD": "JulSwap", @@ -7954,6 +8132,7 @@ "KAILY": "Kailith", "KAIM": "Kai Meme", "KAINET": "KAINET", + "KAIRO": "Kairo", "KAITO": "KAITO", "KAKA": "KAKA NFT World", "KAKAXA": "KAKAXA", @@ -7972,6 +8151,7 @@ "KAMAL": "Kamala Harris", "KAMALA": "Kamala Harris", "KAMALAHARRIS": "KAMALA HARRIS", + "KAMB": "Kambria", "KAMLA": "KAMALAMA (kamalama.org)", "KAMPAY": "KamPay", "KAN": "Bitkan", @@ -8000,7 +8180,7 @@ "KASPY": "KASPY", "KASSIAHOME": "Kassia Home", "KASTA": "Kasta", - "KAT": "Kambria", + "KAT": "Karat", "KATA": "Katana Inu", "KATANA": "Katana Finance", "KATCHU": "Katchu Coin", @@ -8114,7 +8294,8 @@ "KILLSOLANA": "KillSolana", "KILO": "KiloEx", "KILT": "KILT Protocol", - "KIM": "King Money", + "KIM": "KIM Token", + "KIMA": "Kima", "KIMBO": "Kimbo", "KIMCHI": "KIMCHI.finance", "KIMIAI": "Kimi AI Agent", @@ -8127,11 +8308,13 @@ "KINGB": "King Bean", "KINGBONK": "King Bonk", "KINGCAT": "King Cat", + "KINGCOIN": "KING", "KINGD": "Kingdom of Ants", "KINGDOG": "King Dog Inu", "KINGDOMQUEST": "Kingdom Quest", "KINGF": "King Finance", "KINGGROK": "King Grok", + "KINGMONEY": "King Money", "KINGNEIRO": "King Neiro", "KINGO": "King of memes", "KINGOF": "King Of Memes", @@ -8178,6 +8361,7 @@ "KKT": "Kingdom Karnage", "KLAP": "Klap Finance", "KLAUS": "Klaus", + "KLAYMORE": "Klaymore Stakehouse", "KLC": "KiloCoin", "KLD": "Koduck", "KLEE": "KleeKai", @@ -8240,7 +8424,8 @@ "KOIP": "KoiPond", "KOJI": "Koji", "KOK": "KOK Coin", - "KOKO": "KokoSwap", + "KOKO": "KOALA AI", + "KOKOSWAP": "KokoSwap", "KOL": "Kollect", "KOLANA": "KOLANA", "KOLION": "Kolion", @@ -8260,6 +8445,7 @@ "KORE": "KORE Vault", "KOREC": "Kore", "KORRA": "KORRA", + "KOS": "KONTOS", "KOSS": "Koss", "KOTARO": "KOTARO", "KOTO": "Koto", @@ -8292,7 +8478,7 @@ "KRL": "Kryll", "KRM": "Karma", "KRN": "KRYZA Network", - "KRO": "Betoken", + "KRO": "Kroma", "KROM": "Kromatika", "KROME": "KROME Shares", "KRONE": "Kronecoin", @@ -8407,12 +8593,15 @@ "LAELAPS": "Laelaps", "LAFFIN": "Laffin Kamala", "LAI": "LayerAI", - "LAIKA": "Laika Protocol", + "LAIKA": "LAIKA", + "LAIKAPROTOCOL": "Laika Protocol", "LAINESOL": "Laine Staked SOL", + "LAIR": "Lair", "LAKE": "Data Lake", "LALA": "LaLa World", "LAMB": "Lambda", "LAMBO": "LAMBO", + "LAMPIX": "Lampix", "LAN": "Lanify", "LANA": "LanaCoin", "LANC": "Lanceria", @@ -8445,6 +8634,7 @@ "LATX": "Latium", "LAUGHCOIN": "Laughcoin", "LAUNCH": "Launchblock.com", + "LAUNCHCOIN": "Launch Coin on Believe", "LAVA": "Lava Network", "LAVASWAP": "Lavaswap", "LAVAX": "LavaX Labs", @@ -8576,6 +8766,7 @@ "LGBT": "Let's Go Brandon Token", "LGBTQ": "LGBTQoin", "LGC": "LiveGreen Coin", + "LGCT": "Legacy Token", "LGCY": "LGCY Network", "LGD": "Legends Cryptocurrency", "LGG": "Let's Go Gambling", @@ -8665,6 +8856,7 @@ "LISAS": "Lisa Simpson", "LIST": "KList Protocol", "LISTA": "Lista DAO", + "LISTEN": "Listen", "LISUSD": "lisUSD", "LIT": "Litentry", "LITE": "Lite USD", @@ -8680,6 +8872,7 @@ "LIVESEY": "Dr. Livesey", "LIVESTARS": "Live Stars", "LIXX": "Libra Incentix", + "LIY": "Lily", "LIZ": "Lizus Payment", "LIZA": "Liza", "LIZARD": "LIZARD", @@ -8752,6 +8945,7 @@ "LOG": "Wood Coin", "LOGO": "LOGOS", "LOGOS": "LOGOSAI", + "LOGT": "Lord of Dragons Governance Token", "LOGX": "LogX Network", "LOIS": "Lois Token", "LOKA": "League of Kingdoms", @@ -8798,7 +8992,7 @@ "LOUD": "Loud Market", "LOULOU": "LOULOU", "LOV": "LoveChain", - "LOVE": "Deesse", + "LOVE": "Love Monster", "LOVELY": "Lovely finance", "LOVELYV1": "Lovely Inu Finance", "LOVESNOOPY": "I LOVE SNOOPY", @@ -8915,6 +9109,7 @@ "LUMI": "LUMI Credits", "LUMIA": "Lumia", "LUMIO": "Solana Mascot", + "LUMO": "Lumo-8B-Instruct", "LUMOS": "Lumos", "LUN": "Lunyr", "LUNA": "Terra", @@ -8944,10 +9139,12 @@ "LVIP": "Limitless VIP", "LVL": "Level", "LVLUSD": "Level USD", + "LVLY": "LyvelyToken", "LVM": "LakeViewMeta", "LVN": "LivenPay", "LVVA": "Levva Protocol Token", "LVX": "Level01", + "LWA": "LUMIWAVE", "LWC": "Linework Coin", "LWF": "Local World Forwarders", "LX": "Moonlight", @@ -8968,6 +9165,7 @@ "LYNK": "Lynked.World", "LYNX": "Lynx", "LYO": "LYO Credit", + "LYP": "Lympid Token", "LYQD": "eLYQD", "LYR": "Lyra", "LYRA": "Lyra", @@ -8985,6 +9183,7 @@ "M2O": "M2O Token", "M3M3": "M3M3", "M87": "MESSIER", + "MA": "Mind-AI", "MAAL": "Maal Chain", "MABA": "Make America Based Again", "MAC": "MachineCoin", @@ -8998,9 +9197,11 @@ "MADOG": "MarvelDoge", "MADP": "Mad Penguin", "MADPEPE": "Mad Pepe", + "MAECENAS": "Maecenas", "MAEP": "Maester Protocol", "MAF": "MetaMAFIA", "MAG": "Magnify Cash", + "MAG7SSI": "MAG7.ssi", "MAGA": "MAGA", "MAGA2024": "MAGA2024", "MAGA47": "MAGA 47", @@ -9035,13 +9236,14 @@ "MAGPAC": "MAGA Meme PAC", "MAH": "Mahabibi Bin Solman", "MAHA": "MahaDAO", - "MAI": "Mindsync", + "MAI": "MAI", "MAIA": "Maia", "MAID": "MaidSafe Coin", "MAIL": "CHAINMAIL", "MAINSTON": "Ston", + "MAJ": "Major Frog", "MAJO": "Majo", - "MAJOR": "Major Frog", + "MAJOR": "Major", "MAK": "MetaCene", "MAKE": "MAKE", "MAKEA": "Make America Healthy Again", @@ -9055,6 +9257,7 @@ "MAMBA": "Mamba", "MAN": "Matrix AI Network", "MANA": "Decentraland", + "MANA3": "MANA3", "MANC": "Mancium", "MAND": "Mandala Exchange Token", "MANDALA": "Mandala Exchange Token", @@ -9067,6 +9270,7 @@ "MANIFEST": "Manifest", "MANNA": "Manna", "MANORUKA": "ManoRuka", + "MANSONCOIN": "Manson Coin", "MANT": "Mantle USD", "MANTA": "Manta Network", "MANTI": "Mantis", @@ -9079,6 +9283,7 @@ "MAP": "MAP Protocol", "MAPC": "MapCoin", "MAPE": "Mecha Morphing", + "MAPO": "MAP Protocol", "MAPR": "Maya Preferred 223", "MAPS": "MAPS", "MAR3": "Mar3 AI", @@ -9096,6 +9301,7 @@ "MARLEY": "Marley Token", "MARMAJ": "marmaj", "MARO": "Maro", + "MAROV1": "TTC PROTOCOL", "MARS": "MarsCoin", "MARS4": "MARS4", "MARSC": "MarsCoin", @@ -9104,7 +9310,7 @@ "MARSRISE": "MarsRise", "MARSUPILAMI": "MARSUPILAMI INU", "MARSW": "Marswap", - "MART": "Monart", + "MART": "ArtMeta", "MARTIA": "Colonize Mars", "MARTK": "Martkist", "MARTY": "Marty Inu", @@ -9125,9 +9331,10 @@ "MASTER": "Mastercoin", "MASTERCOIN": "MasterCoin", "MASTERMINT": "MasterMint", + "MASTERMIX": "Master MIX Token", "MASTERTRADER": "MasterTraderCoin", "MASYA": "MASYA", - "MAT": "MiniApps", + "MAT": "My Master Wa", "MATA": "Ninneko", "MATAR": "MATAR AI", "MATCH": "Matching Game", @@ -9137,7 +9344,8 @@ "MATIC": "Polygon", "MATICX": "Stader MaticX", "MATPAD": "MaticPad", - "MATRIX": "Matrix Labs", + "MATRIX": "Matrix One", + "MATRIXLABS": "Matrix Labs", "MATT": "Matt Furie", "MATTER": "AntiMatter", "MAU": "MAU", @@ -9288,6 +9496,7 @@ "MEER": "Qitmeer Network", "MEET": "CoinMeet", "MEETONE": "MEET.ONE", + "MEETPLE": "Meetple", "MEF": "MEFLEX", "MEFA": "Metaverse Face", "MEGA": "MegaFlash", @@ -9296,6 +9505,7 @@ "MEGAHERO": "MEGAHERO", "MEGALAND": "Metagalaxy Land", "MEGALANDV1": "Metagalaxy Land v1", + "MEGATECH": "Megatech", "MEGAX": "Megahex", "MEGE": "MEGE", "MEH": "meh", @@ -9305,7 +9515,9 @@ "MELANIA": "Melania Meme", "MELANIATRUMP": "Melania Trump", "MELB": "Minelab", - "MELD": "MELD", + "MELD": "MetaElfLand Token", + "MELDV1": "MELD v1", + "MELDV2": "MELD", "MELI": "Meli Games", "MELLO": "Mello Token", "MELLOW": "Mellow Man", @@ -9317,6 +9529,7 @@ "MELT": "Defrost Finance", "MEM": "Memecoin", "MEMAGX": "Meta Masters Guild Games", + "MEMBERSHIP": "Membership Placeholders", "MEMD": "MemeDAO", "MEMDEX": "Memdex100", "MEME": "Memecoin", @@ -9325,6 +9538,7 @@ "MEMECUP": "Meme Cup", "MEMEETF": "Meme ETF", "MEMEFI": "MemeFi", + "MEMEFICASH": "MemeFi", "MEMEINU": "Meme Inu", "MEMEM": "Meme Man", "MEMEME": "MEMEME", @@ -9345,6 +9559,7 @@ "MENLO": "Menlo One", "MEO": "Meow Of Meme", "MEOW": "Zero Tech", + "MEOWCAT": "MeowCat", "MEOWETH": "Meow", "MEOWG": "MeowGangs", "MEOWIF": "Meowifhat", @@ -9461,7 +9676,7 @@ "MGOD": "MetaGods", "MGP": "MangoChain", "MGPT": "MotoGP Fan Token", - "MGT": "Megatech", + "MGT": "Moongate", "MGUL": "Mogul Coin", "MGX": "MargiX", "MHAM": "Metahamster", @@ -9481,8 +9696,9 @@ "MICHI": "michi", "MICK": "Mickey Meme", "MICKEY": "Steamboat Willie", - "MICRO": "Micromines", + "MICRO": "Micro GPT", "MICRODOGE": "MicroDoge", + "MICROMINES": "Micromines", "MIDAI": "Midway AI", "MIDAS": "Midas", "MIDASDOLLAR": "Midas Dollar Share", @@ -9504,9 +9720,10 @@ "MILA": "MILADY MEME TOKEN", "MILE": "milestoneBased", "MILEI": "MILEI", - "MILK": "Milkshake Swap", + "MILK": "MilkyWay", "MILK2": "Spaceswap MILK2", "MILKBAG": "MILKBAG", + "MILKSHAKE": "Milkshake Swap", "MILKYWAY": "MilkyWayZone", "MILLI": "Million", "MILLY": "milly", @@ -9529,6 +9746,7 @@ "MINDEX": "Mindexcoin", "MINDGENE": "Mind Gene", "MINDS": "Minds", + "MINDSYNC": "Mindsync", "MINE": "SpaceMine", "MINEA": "Mine AI", "MINER": "MINER", @@ -9538,6 +9756,7 @@ "MINEX": "Minex", "MINGO": "Mingo", "MINI": "mini", + "MINIAPPS": "MiniApps", "MINIBNBTIGER": "MiniBNBTiger", "MINID": "Mini Donald", "MINIDO": "MiniDoge", @@ -9555,6 +9774,7 @@ "MINOCOINCTO": "MINO", "MINS": "Minswap", "MINT": "Mint Club", + "MINTCHAIN": "Mint", "MINTCOIN": "MintCoin", "MINTE": "Minter HUB", "MINTME": "MintMe.com Coin", @@ -9569,9 +9789,11 @@ "MIR": "Mirror Protocol", "MIRA": "Chains of War", "MIRACLE": "MIRACLE", - "MIRAI": "MIRAI", + "MIRAI": "Project MIRAI", + "MIRAIBUILD": "MIRAI", "MIRC": "MIR COIN", "MIRT": "MIR Token", + "MIRX": "Mirada AI", "MIS": "Mithril Share", "MISA": "Sangkara", "MISCOIN": "MIScoin", @@ -9644,7 +9866,7 @@ "MMS": "Marsverse", "MMSC": "MMSC PLATFORM", "MMSS": "MMSS (Ordinals)", - "MMT": "Master MIX Token", + "MMT": "MeMusic", "MMTM": "Momentum", "MMUI": "MetaMUI", "MMULTI": "Multichain (via Multichain Cross-Chain Router)", @@ -9673,6 +9895,7 @@ "MNR": "Mineral", "MNRB": "MoneyRebel", "MNRCH": "Monarch", + "MNRY": "Moonray", "MNS": "Monnos", "MNSRY": "MANSORY", "MNST": "MoonStarter", @@ -9744,8 +9967,9 @@ "MOI": "MyOwnItem", "MOIN": "MoinCoin", "MOJI": "Moji", - "MOJO": "Mojocoin", + "MOJO": "Planet Mojo", "MOJOB": "Mojo on Base", + "MOJOCOIN": "Mojocoin", "MOK": "MocktailSwap", "MOL": "Molecule", "MOLA": "MoonLana", @@ -9762,6 +9986,7 @@ "MONA": "MonaCoin", "MONAIZE": "Monaize", "MONARCH": "TRUEMONARCH", + "MONART": "Monart", "MONAV": "Monavale", "MONB": "MonbaseCoin", "MONDO": "mondo", @@ -9811,6 +10036,7 @@ "MOON": "r/CryptoCurrency Moons", "MOONARCH": "Moonarch", "MOONB": "Moon Base", + "MOONBEANS": "Moonbeans", "MOONBI": "Moonbix", "MOONBIX": "MOONBIX MEME", "MOONC": "MoonCoin", @@ -9824,6 +10050,7 @@ "MOONION": "Moonions", "MOONKIZE": "MoonKize", "MOONLIGHT": "Moonlight Token", + "MOONPIG": "Moonpig", "MOONR": "PulseMoonR", "MOONS": "Sailor Moons", "MOONSHOT": "Moonshot", @@ -9848,7 +10075,7 @@ "MOS": "MOS Coin", "MOSS": "MOSS AI", "MOST": "MOST Global", - "MOT": "Olympus Labs", + "MOT": "Mobius Token", "MOTA": "MotaCoin", "MOTG": "MetaOctagon", "MOTH": "MOTH", @@ -9870,9 +10097,10 @@ "MOWA": "Moniwar", "MOXIE": "Moxie", "MOYA": "MOYA", - "MOZ": "Mozik", + "MOZ": "Lumoz token", "MOZA": "Mozaic", - "MP": "Membership Placeholders", + "MOZIK": "Mozik", + "MP": "MerlinSwap Token", "MP3": "MP3", "MPAA": "MPAA", "MPAD": "MultiPad", @@ -9889,7 +10117,8 @@ "MPM": "Monopoly Meta", "MPRO": "MediumProject", "MPS": "Mt Pelerin Shares", - "MPT": "Meetple", + "MPT": "Miracleplay Token", + "MPTV1": "Miracleplay Token v1", "MPWR": "Empower", "MPX": "Morphex", "MPXT": "Myplacex", @@ -9935,7 +10164,7 @@ "MSHEESHA": "Sheesha Finance Polygon", "MSHIB": "Magic Shiba Starter", "MSHIP": "MetaShipping", - "MSN": "Manson Coin", + "MSN": "Meson.Network", "MSOL": "Marinade Staked SOL", "MSOT": "BTour Chain", "MSP": "Mothership", @@ -9975,6 +10204,7 @@ "MTMS": "MTMS Network", "MTN": "TrackNetToken", "MTO": "Merchant Token", + "MTOS": "MomoAI", "MTP": "Macro Protocol", "MTR": "Meter Stable", "MTRA": "MetaRare", @@ -10233,8 +10463,9 @@ "NEBU": "Nebuchadnezzar", "NEC": "Nectar", "NEER": "Metaverse.Network Pioneer", - "NEET": "NEET Finance", + "NEET": "Not in Employment, Education, or Training", "NEETCOIN": "Neetcoin", + "NEETFINANCE": "NEET Finance", "NEF": "NefariousCoin", "NEFTIPEDIA": "NEFTiPEDiA", "NEFTY": "NeftyBlocks", @@ -10256,6 +10487,7 @@ "NEKOARC": "Neko Arc", "NEKOIN": "Nekoin", "NEKOS": "Nekocoin", + "NEKTAR": "Nektar Token", "NEMO": "NEMO", "NEMS": "The Nemesis", "NEO": "NEO", @@ -10277,9 +10509,10 @@ "NEST": "Nest Protocol", "NESTREE": "Nestree", "NESTV1": "Nest Protocol v1", - "NET": "NetCoin", + "NET": "NET", "NETA": "Negative Tax", "NETC": "NetworkCoin", + "NETCOI": "NetCoin", "NETCOIN": "Netcoincapital", "NETCOINV1": "Netcoincapital v1", "NETK": "Netkoin", @@ -10294,6 +10527,7 @@ "NEURA": "Neurahub", "NEURAL": "NeuralAI", "NEURALINK": "Neuralink", + "NEURO": "NeuroWeb", "NEURON": "Cerebrum DAO", "NEURONI": "Neuroni AI", "NEUROS": "Shockwaves", @@ -10305,7 +10539,6 @@ "NEVANETWORK": "Neva", "NEVE": "NEVER SURRENDER", "NEVER": "neversol", - "NEW": "Newton", "NEWB": "Newbium", "NEWBV1": "Newbium v1", "NEWC": "New Cat", @@ -10324,6 +10557,7 @@ "NEXAI": "NexAI", "NEXBOX": "NexBox", "NEXBT": "Native XBTPro Exchange Token", + "NEXD": "Nexade", "NEXEA": "NEXEA", "NEXG": "NexGami", "NEXM": "Nexum", @@ -10485,7 +10719,7 @@ "NOKU": "NOKU Master token", "NOKUV1": "NOKU Master token v1", "NOLA": "Nola", - "NOM": "Finom NOM Token", + "NOM": "Onomy Protocol", "NOMAI": "nomAI by Virtuals", "NOMNOM": "nomnom", "NOMOX": "NOMOEX Token", @@ -10597,7 +10831,8 @@ "NULS": "Nuls", "NUM": "Numbers Protocol", "NUMBERS": "NumbersCoin", - "NUMI": "Numitor", + "NUMI": "NUMINE Token", + "NUMITOR": "Numitor", "NUR": "Nurcoin", "NUSA": "Nusa", "NUSD": "Nomin USD", @@ -10635,6 +10870,7 @@ "NXM": "Nexus Mutual", "NXMC": "NextMindCoin", "NXN": "Naxion", + "NXPC": "NXPC", "NXQ": "NexQloud", "NXRA": "AllianceBlock Nexera", "NXS": "Nexus", @@ -10680,6 +10916,7 @@ "OBI": "Orbofi AI", "OBICOIN": "OBI Real Estate", "OBITS": "Obits Coin", + "OBOL": "Obol Network", "OBOT": "Obortech", "OBROK": "OBRok", "OBS": "One Basis Cash", @@ -10694,7 +10931,7 @@ "OCADA": "OCADA.AI", "OCAI": "Onchain AI", "OCAVU": "Ocavu Network Token", - "OCB": "BLOCKMAX", + "OCB": "OneCoinBuy", "OCC": "OccamFi", "OCD": "On-Chain Dynamics", "OCE": "OceanEX Token", @@ -10794,6 +11031,7 @@ "OKSE": "Okse", "OKT": "OKT Chain", "OL": "Open Loot", + "OLA": "Ola", "OLAF": "Olaf Token", "OLAND": "Oceanland", "OLAS": "Autonolas", @@ -10810,6 +11048,7 @@ "OLY": "Olyseum", "OLYMP": "OlympCoin", "OLYMPE": "OLYMPÉ", + "OLYMPUSLABS": "Olympus Labs", "OLYN": "Olyn by Virtuals", "OM": "MANTRA", "OMA": "OmegaCoin", @@ -10859,6 +11098,7 @@ "ONIGIRI": "Onigiri The Cat", "ONION": "DeepOnion", "ONIT": "ONBUFF", + "ONIX": "Onix", "ONL": "On.Live", "ONLINE": "Onlinebase", "ONLY": "OnlyCam", @@ -10870,7 +11110,7 @@ "ONT": "Ontology", "ONTACT": "OnTact", "ONUS": "ONUS", - "ONX": "Onix", + "ONX": "OnX.finance", "OOE": "OpenOcean", "OOFP": "OOFP", "OOGI": "OOGI", @@ -10883,6 +11123,7 @@ "OOW": "OPP Open WiFi", "OP": "Optimism", "OPA": "Option Panda Platform", + "OPAI": "Optopia AI", "OPAIG": "OvalPixel", "OPC": "OP Coin", "OPCA": "OP_CAT(BIP-420)", @@ -10943,6 +11184,7 @@ "ORAO": "ORAO Network", "ORARE": "OneRare", "ORB": "KlayCity ORB", + "ORBI": "Orbs", "ORBIS": "Orbis", "ORBIT": "Orbit Protocol", "ORBITCOIN": "Orbitcoin", @@ -10975,6 +11217,7 @@ "ORME": "Ormeus Coin", "ORMO": "Ormolus", "ORN": "Orion Protocol", + "ORNG": "Juice Town", "ORNJ": "Orange", "ORO": "Operon Origins", "OROC": "Orocrypt", @@ -11000,6 +11243,7 @@ "OSIS": "OSIS", "OSK": "OSK", "OSKDAO": "OSK DAO", + "OSKY": "OpenSky Token", "OSL": "OSL AI", "OSMI": "OSMI", "OSMO": "Osmosis", @@ -11027,16 +11271,20 @@ "OUSE": "OUSE Token", "OUSG": "OUSG", "OUT": "Netscouters", + "OUTL": "Outlanders Token", + "OVATO": "Ovato", "OVC": "OVCODE", + "OVER": "OverProtocol", "OVERLORD": "Overlord", "OVN": "Overnight", - "OVO": "Ovato", + "OVO": "OVO", "OVR": "Ovr", "OWC": "Oduwa", "OWD": "Owlstand", "OWL": "OWL Token", - "OWN": "Ownly", + "OWN": "OTHERWORLD", "OWNDATA": "OWNDATA", + "OWNLY": "Ownly", "OWO": "SoMon", "OX": "Open Exchange Token", "OXAI": "OxAI.com", @@ -11077,12 +11325,14 @@ "PACOCA": "Pacoca", "PACP": "PAC Protocol", "PACT": "impactMarket", + "PACTV1": "impactMarket v1", "PAD": "NearPad", "PAF": "Pacific", "PAGE": "Page", - "PAI": "Project Pai", + "PAI": "ParallelAI", "PAID": "PAID Network", "PAIDV1": "PAID Network v1", + "PAIN": "PAIN", "PAINT": "MurAll", "PAIRED": "PairedWorld", "PAJAMAS": "The First Youtube Cat", @@ -11167,8 +11417,9 @@ "PAVO": "Pavocoin", "PAW": "PAWSWAP", "PAWPAW": "PawPaw", - "PAWS": "PawStars", + "PAWS": "PAWS", "PAWSTA": "dogeatingpasta", + "PAWSTARS": "PawStars", "PAWTH": "Pawthereum", "PAXE": "Paxe", "PAXEX": "PAXEX", @@ -11209,7 +11460,7 @@ "PCCM": "Poseidon Chain", "PCD": " Phecda", "PCE": "PEACE COIN", - "PCH": "POPCHAIN", + "PCH": "Pichi", "PCHS": "Peaches.Finance", "PCI": "PayProtocol Paycoin", "PCKB": "pCKB (via Godwoken Bridge from CKB)", @@ -11272,6 +11523,7 @@ "PEG": "PegNet", "PEGA": "PEGA", "PEGAMAGA": "Pepe Maga", + "PEGASCOIN": "Pegascoin", "PEGG": "PokPok Golden Egg", "PEGS": "PegShares", "PEIPEI": "PeiPei", @@ -11301,6 +11553,7 @@ "PENTA": "Penta", "PEON": "Peon", "PEOPLE": "ConstitutionDAO", + "PEOPLEFB": "PEOPLE", "PEOSONE": "pEOS", "PEP": "Pepechain", "PEPA": "Pepa Inu", @@ -11320,7 +11573,8 @@ "PEPEBURN": "Pepeburn", "PEPEC": "Pepe Chain", "PEPECASH": "Pepe Cash", - "PEPECAT": "PEPE CAT", + "PEPECAT": "PEPECAT", + "PEPECATCLUB": "PEPE CAT", "PEPECEO": "REAL PEPE CEO", "PEPECHAIN": "PEPE Chain", "PEPECO": "PEPE COIN BSC", @@ -11386,6 +11640,7 @@ "PERU": "PeruCoin", "PERX": "PeerEx Network", "PESA": "Credible", + "PESETACOIN": "PesetaCoin", "PESHI": "PESHI", "PESOBIT": "PesoBit", "PESTO": "Pesto the Baby King Penguin", @@ -11408,11 +11663,11 @@ "PFID": "Pofid Dao", "PFL": "Professional Fighters League Fan Token", "PFR": "PayFair", - "PFT": "Pitch Finance Token", + "PFT": "PolarFighters", "PFY": "Portify", "PG": "Pepe Grow", "PGALA": "pGALA", - "PGC": "Pegascoin", + "PGC": "PiggyPiggyCoin", "PGEN": "Polygen", "PGF7T": "PGF500", "PGL": "Prospectors", @@ -11471,11 +11726,13 @@ "PICKLE": "Pickle Finance", "PICO": "PicoGo", "PICOLO": "PICOLO", + "PIDOG": "Pi Network Dog", "PIDOGE": "Pi Network Doge", "PIE": "Persistent Information Exchange", "PIERRE": "sacré bleu", "PIF": "Pepe Wif Hat", "PIG": "Pig Finance", + "PIGC": "Pigcoin", "PIGE": "Pige", "PIGEON": "Pigeon In Yellow Boots", "PIGEONC": "Pigeoncoin", @@ -11485,6 +11742,7 @@ "PIGONK": "PIGONK", "PIGS": "Elon Vitalik Pigs", "PIIN": "piin (Ordinals)", + "PIK": "Pika Protocol", "PIKA": "Pikaboss", "PIKACHU": "Pikachu Inu", "PIKACRYPTO": "Pika", @@ -11501,6 +11759,7 @@ "PINETWORKDEFI": "Pi Network DeFi", "PINEYE": "PinEye", "PING": "CryptoPing", + "PINGO": "PinGo", "PINK": "PINK - The Panther", "PINKCOIN": "PinkCoin", "PINKSALE": "PinkSale", @@ -11530,24 +11789,28 @@ "PIST": "Pist Trust", "PIT": "Pitbull", "PITCH": "PITCH", + "PITCHFINANCE": "Pitch Finance Token", + "PITISCOIN": "Pitis Coin", "PIUU": "PIXIU", "PIVN": "PIVN", "PIVX": "Private Instant Verified Transaction", - "PIX": "Lampix", + "PIX": "PixelSwap", "PIXEL": "Pixels", "PIXELV": "PixelVerse", "PIXFI": "Pixelverse", "PIXL": "PIXL", - "PIZA": "Half Pizza", + "PIZA": "PIZA", "PIZPEPE": "Pepe Pizzeria", - "PIZZA": "PizzaSwap", + "PIZZA": "Pizza", "PIZZACOIN": "PizzaCoin", + "PIZZASWAP": "PizzaSwap", "PJM": "Pajama.Finance", "PKB": "ParkByte", "PKC": "Pikciochain", "PKD": "PetKingdom", "PKF": "PolkaFoundry", "PKG": "PKG Token", + "PKIN": "PUMPKIN", "PKN": "Poken", "PKOIN": "Pocketcoin", "PKT": "PKT", @@ -11581,6 +11844,7 @@ "PLEA": "Plearn", "PLEB": "PLEBToken", "PLEBONBASE": "PLEB", + "PLENA": "PLENA", "PLENTY": "Plenty DeFi", "PLEO": "Empleos", "PLERF": "Plerf", @@ -11638,11 +11902,13 @@ "PMR": "Pomerium Utility Token", "PMT": "POWER MARKET", "PMTN": "Peer Mountain", + "PMX": "Primex Finance", "PNB": "Pink BNB", "PNC": "PlatiniumCoin", "PND": "PandaCoin", "PNDC": "Pond Coin", "PNDN": "Pandana", + "PNDO": "Pondo", "PNDR": "Pandora Finance", "PNFT": "Pawn My NFT", "PNG": "Pangolin", @@ -11743,6 +12009,7 @@ "POP": "Popcoin", "POPC": "PopChest", "POPCAT": "Popcat", + "POPCHAIN": "POPCHAIN", "POPCO": "Popcorn", "POPDOG": "PopDog", "POPE": "PopPepe", @@ -11754,6 +12021,7 @@ "POPO": "popo", "POPOETH": "POPO", "POPSICLE": "Popsicle Finance", + "POPU": "Populous", "POPULARCOIN": "PopularCoin", "POR": "Portugal National Team Fan Token", "PORA": "PORA AI", @@ -11787,7 +12055,7 @@ "POUW": "Pouwifhat", "POW": "PowBlocks", "POWELL": "Jerome Powell", - "POWER": "UniPower", + "POWER": "Powerloom Token", "POWR": "Power Ledger", "POWSCHE": "Powsche", "POX": "Monkey Pox", @@ -11809,10 +12077,11 @@ "PPP": "PayPie", "PPR": "Papyrus", "PPS": "PopulStay", - "PPT": "Populous", + "PPT": "Pop Token", "PPY": "Peerplays", "PQT": "Prediqt", "PRA": "ProChain", + "PRAI": "Privasea AI", "PRARE": "Polkarare", "PRB": "Paribu Net", "PRC": "ProsperCoin", @@ -11862,6 +12131,7 @@ "PROFITHUNTERS": "Profit Hunters Coin", "PROGE": "Protector Roge", "PROJECT89": "Project89", + "PROJECTPAI": "Project Pai", "PROLIFIC": "Prolific Game Studio", "PROM": "Prometeus", "PROMPT": "Wayfinder", @@ -11906,7 +12176,8 @@ "PSEUD": "PseudoCash", "PSF": "Prime Shipping Foundation", "PSG": "Paris Saint-Germain Fan Token", - "PSI": "PSIcoin", + "PSI": "Trident", + "PSICOIN": "PSIcoin", "PSILOC": "Psilocybin", "PSK": "Pool of Stake", "PSL": "Pastel", @@ -11927,7 +12198,7 @@ "PT": "Phemex", "PTA": "PentaCoin", "PTAS": "La Peseta", - "PTC": "PesetaCoin", + "PTC": "Particle Trade", "PTD": "Pilot", "PTERIA": "Pteria", "PTF": "PowerTrade Fuel", @@ -11942,6 +12213,7 @@ "PTP": "Platypus Finance", "PTR": "Petro", "PTRUMP": "Pepe Trump", + "PTS": "Petals", "PTT": "Pink Taxi Token", "PTU": "Pintu Token", "PTX": "PlatinX", @@ -11965,7 +12237,8 @@ "PUMA": "Puma", "PUMBAA": "Pumbaa", "PUMLX": "PUMLx", - "PUMP": "PUMP", + "PUMP": "Big Pump", + "PUMPAI": "PumpAI", "PUMPB": "Pump", "PUMPBTC": "pumpBTC", "PUMPFUNBAN": "Pump Fun Ban", @@ -11994,6 +12267,7 @@ "PURA": "Pura", "PURE": "Puriever", "PUREALT": "Pure", + "PURGE": "Forgive Me Father", "PURP": "Purple Platform io", "PURPE": "Purple Pepe", "PURPLEBTC": "Purple Bitcoin", @@ -12093,6 +12367,7 @@ "QIE": "QI Blockchain", "QINGWA": "ShangXin QingWa", "QISWAP": "QiSwap", + "QKA": "Qkacoin", "QKC": "QuarkChain", "QKNTL": "Quick Intel", "QLC": "Kepple [OLD]", @@ -12186,6 +12461,7 @@ "RABB": "Rabbit INU", "RABBI": "Len \"rabbi\" Sassaman", "RABBIT": "Rabbit Finance", + "RABBITC": "RabBitcoin", "RABI": "Rabi", "RAC": "RAcoin", "RACA": "Radio Caca", @@ -12238,7 +12514,7 @@ "RAT": "RatCoin", "RATECOIN": "Ratecoin", "RATING": "DPRating", - "RATIO": "Ratio", + "RATIO": "Ratio Governance Token", "RATS": "Rats", "RATWIF": "RatWifHat", "RAVE": "Ravendex", @@ -12310,12 +12586,16 @@ "REA": "Realisto", "REACH": "/Reach", "REACT": "Reactive Network", + "READY": "READY!", "REAL": "RealLink", "REALESTATE": "RealEstate", + "REALIS": "Realis Worlds", "REALM": "Realm", "REALMS": "Realms of Ethernity", "REALP": "Real Pepe", "REALPLATFORM": "REAL", + "REALPUMPITCOIN": "PUMP", + "REALR": "Real Realm", "REALTRACT": "RealTract", "REALUSD": "Real USD", "REALUSDV1": "Real USD v1", @@ -12373,7 +12653,9 @@ "REI": "REI Network", "REIGN": "Reign of Terror", "REINDEER": "Reindeer", - "REKT": "REKT", + "REK": "Rekt", + "REKT": "Rekt", + "REKTV1": "REKT", "REKTV2": "REKT 2.0", "REKTV3": "REKT v3 (rekt.game)", "REL": "Reliance", @@ -12440,7 +12722,7 @@ "REW": "Review.Network", "REWARD": "Rewardable", "REWARDS": "Solana Rewards", - "REX": "Imbrex", + "REX": "REVOX", "REXBT": "rexbt by VIRTUALS", "REXHAT": "rexwifhat", "REZ": "Renzo", @@ -12476,8 +12758,9 @@ "RIBB": "Ribbit", "RIBBIT": "Ribbit", "RIC": "Riecoin", - "RICE": "RiceFarm", + "RICE": "DAOSquare Governance Token", "RICECOIN": "RiceCoin", + "RICEFARM": "RiceFarm", "RICHIE": "Richie2.0", "RICHIEV1": "Richie", "RICHOFME": "Rich Of Memes", @@ -12533,6 +12816,7 @@ "RIZZMAS": "Rizzmas", "RJV": "Rejuve.AI", "RKC": "Royal Kingdom Coin", + "RKEY": "RKEY", "RKI": "RAKHI", "RKN": "RAKON", "RKR": "REAKTOR", @@ -12584,7 +12868,7 @@ "ROBOTAXI": "ROBOTAXI", "ROC": "Rasputin Online Coin", "ROCCO": "Just A Rock", - "ROCK": "Bedrock", + "ROCK": "Zenrock", "ROCK2": "Ice Rock Mining", "ROCKET": "Team Rocket", "ROCKETCOIN": "RocketCoin", @@ -12705,8 +12989,9 @@ "RUBB": "Rubber Ducky Cult", "RUBCASH": "RUBCASH", "RUBIT": "Rublebit", + "RUBIUS": "Rubius", "RUBX": "eToro Russian Ruble", - "RUBY": "Rubius", + "RUBY": "RubyToken", "RUBYEX": "Ruby.Exchange", "RUC": "Rush", "RUFF": "Ruff", @@ -12718,7 +13003,9 @@ "RUM": "RUM Pirates of The Arrland Token", "RUN": "Run", "RUNE": "Thorchain", + "RUNESX": "RUNES·X·BITCOIN", "RUNEVM": "RUNEVM", + "RUNI": "Runesterminal", "RUNNER": "Runner", "RUNY": "Runy", "RUP": "Rupee", @@ -12749,7 +13036,7 @@ "RVST": "Revest Finance", "RVT": "Rivetz", "RVX": "Rivex", - "RWA": "Xend Finance", + "RWA": "RWA Inc.", "RWAECO": "RWA Ecosystem", "RWAS": "RWA Finance", "RWB": "RawBlock", @@ -12786,6 +13073,7 @@ "SAAD": "Saad Boi", "SAAS": "SaaSGo", "SABAI": "Sabai Protocol", + "SABER": "Saber", "SABLE": "Sable Finance", "SABR": "SABR Coin", "SAC1": "Sable Coin", @@ -12873,6 +13161,7 @@ "SATA": "Signata", "SATAN": "MrBeast's Cat", "SATO": "Atsuko Sato", + "SATOPAY": "SatoPay", "SATORI": "Satori Network", "SATOSHINAKAMOTO": "Satoshi Nakamoto", "SATOX": "Satoxcoin", @@ -12890,6 +13179,7 @@ "SAUNA": "SaunaFinance Token", "SAV": "Save America", "SAV3": "SAV3", + "SAVEOCEAN": "Save The Ocean", "SAVG": "SAVAGE", "SAVM": "SatoshiVM", "SAY": "SAY Coin", @@ -12908,7 +13198,7 @@ "SBIO": "Vector Space Biosciences, Inc.", "SBNB": "Binance Coin (SpookySwap)", "SBOX": "SUIBOXER", - "SBR": "Saber", + "SBR": "STRATEGIC BITCOIN RESERVE", "SBRT": "SaveBritney", "SBSC": "Subscriptio", "SBT": "SOLBIT", @@ -13048,6 +13338,7 @@ "SENATE": "SENATE", "SENC": "Sentinel Chain", "SEND": "Suilend", + "SENDCOIN": "Sendcoin", "SENDOR": "Sendor", "SENK": "Senk", "SENNO": "SENNO", @@ -13107,7 +13398,7 @@ "SFRC": "Safari Crush", "SFRXETH": "Frax Staked Ether", "SFRXUSD": "Staked Frax USD", - "SFT": "SportsFix", + "SFT": "Fightly", "SFTMX": "Stader sFTMX", "SFTY": "Stella Fantasy", "SFU": "Saifu", @@ -13180,6 +13471,7 @@ "SHIB05": "Half Shiba Inu", "SHIB1": "Shib1", "SHIB2": "SHIB2", + "SHIB20": "Shib2.0", "SHIBA": "Shibaqua", "SHIBAAI": "SHIBAAI", "SHIBAC": "SHIBA CLASSIC", @@ -13188,6 +13480,7 @@ "SHIBAI": "AiShiba", "SHIBAKEN": "Shibaken Finance", "SHIBAMOM": "Shiba Mom", + "SHIBANCE": "Shibance Token", "SHIBAR": "Shibarium Name Service", "SHIBARMY": "Shib Army", "SHIBAW": "Shiba $Wing", @@ -13242,6 +13535,7 @@ "SHK": "Shrike", "SHL": "Oyster Shell", "SHLD": "ShieldCoin", + "SHM": "Shardeum", "SHND": "StrongHands", "SHNT": "Sats Hunters", "SHO": "Showcase Token", @@ -13298,9 +13592,10 @@ "SIFU": "SIFU", "SIG": "Signal", "SIGMA": "SIGMA", - "SIGN": "Sign Token", + "SIGN": "Sign", "SIGNA": "Signa", "SIGNAT": "SignatureChain", + "SIGNMETA": "Sign Token", "SIGT": "Signatum", "SIGU": "Singular", "SIKA": "SikaSwap", @@ -13403,6 +13698,7 @@ "SKX": "SKPANAX", "SKY": "Sky", "SKYA": "Sekuya Multiverse", + "SKYAI": "SKYAI", "SKYCOIN": "Skycoin", "SKYFT": "SKYFchain", "SKYM": "SkyMap", @@ -13432,6 +13728,7 @@ "SLING": "Sling Coin", "SLINK": "Soft Link", "SLISBNB": "Lista Staked BNB", + "SLK": "SLK", "SLM": "SlimCoin", "SLN": "Smart Layer Network", "SLND": "Solend", @@ -13458,8 +13755,9 @@ "SMAC": "Social Media Coin", "SMAK": "Smartlink", "SMARS": "SafeMars", - "SMART": "SmartCash", + "SMART": "Smart game", "SMARTB": "Smart Coin", + "SMARTCASH": "SmartCash", "SMARTCREDIT": "SmartCredit Token", "SMARTH": "SmartHub", "SMARTLOX": "SmartLOX", @@ -13470,6 +13768,7 @@ "SMARTSHARE": "Smartshare", "SMARTUP": "Smartup", "SMAT": "Smathium", + "SMB": "SMB Token", "SMBR": "Sombra", "SMBSWAP": "SimbCoin Swap", "SMC": "SmartCoin", @@ -13483,7 +13782,9 @@ "SMI": "SafeMoon Inu", "SMIDGE": "Smidge", "SMIDGEETH": "Smidge", - "SMILE": "Smile Token", + "SMIL": "Smile Token", + "SMILE": "bitSmiley", + "SMILEAI": "Smile AI", "SMILEK": "Smilek to the Bank", "SMILEY": "SMILEY", "SMILY": "Smily Trump", @@ -13522,11 +13823,14 @@ "SNAI": "SwarmNode.ai", "SNAIL": "SnailBrook", "SNAKE": "snake", + "SNAKEAI": "Snake-ai", "SNAKEMOON": "Snakemoon", "SNAKES": "Snakes Game", + "SNAKETOKEN": "Snake Token", "SNAKT": "Sna-King Trump", "SNAP": "SnapEx", "SNAPCAT": "Snapcat", + "SNAPKERO": "SNAP", "SNB": "SynchroBitcoin", "SNC": "SunContract", "SNCT": "SnakeCity", @@ -13546,7 +13850,7 @@ "SNIP": "LyrnAI", "SNIPPEPE": "SNIPING PEPE", "SNITCH": "Randall", - "SNK": "Snake Token", + "SNK": "Snook", "SNL": "Sport and Leisure", "SNM": "SONM", "SNMT": "Satoshi Nakamoto Token", @@ -13566,6 +13870,7 @@ "SNPAD": "SNP adverse", "SNPC": "SnapCoin", "SNPS": "Snaps", + "SNPT": "SNPIT TOKEN", "SNRG": "Synergy", "SNRK": "Snark Launch", "SNS": "Synesis One", @@ -13694,7 +13999,9 @@ "SONICWIF": "SonicWifHat", "SONNE": "Sonne Finance", "SONOF": "Son of Solana", - "SOON": "Soonaverse", + "SONOR": "SonorusToken", + "SOON": "SOON", + "SOONAVERSE": "Soonaverse", "SOONCOIN": "SoonCoin", "SOOTCASE": "I like my sootcase", "SOP": "SoPay", @@ -13707,14 +14014,13 @@ "SORAETH": "SORA", "SORAI": "Sora AI", "SORAPORN": "Sora Porn", - "SOSNOVKINO": "Sosnovkino", "SOSO": "SoSoValue", - "SOSWAP": "Solana Swap", "SOT": "Soccer Crypto", "SOTA": "SOTA Finance", "SOUL": "Phantasma", "SOULO": "SouloCoin", - "SOULS": "Soulsaver", + "SOULS": "Unfettered Ecosystem", + "SOULSA": "Soulsaver", "SOUND": "Sound Coin", "SOURCE": "ReSource Protocol", "SOUTH": "DeepSouth AI", @@ -13729,9 +14035,11 @@ "SP8DE": "Sp8de", "SPA": "Sperax", "SPAC": "SPACE DOGE", - "SPACE": "Spacelens", + "SPACE": "MicroVisionChain", "SPACECOIN": "SpaceCoin", "SPACED": "SPACE DRAGON", + "SPACEHAMSTER": "Space Hamster", + "SPACELENS": "Spacelens", "SPACEM": "Spacem Token", "SPACEPI": "SpacePi", "SPAD": "SolPad", @@ -13785,7 +14093,8 @@ "SPHYNXV3": "Sphynx Token v3", "SPHYNXV4": "Sphynx Token v4", "SPI": "Shopping.io", - "SPICE": "Spice", + "SPICE": "SPICE", + "SPICETOKEN": "Spice", "SPIDER": "Spider Man", "SPIDERMAN": "SPIDERMAN BITCOIN", "SPIDEY": "Spidey", @@ -13816,7 +14125,10 @@ "SPORE": "Spore", "SPORT": "SportsCoin", "SPORTS": "ZenSports", + "SPORTSFIX": "SportsFix", "SPORTSP": "SportsPie", + "SPOT": "Defispot", + "SPOTCOIN": "Spotcoin", "SPOTS": "Spots", "SPOX": "Sports Future Exchange Token", "SPRING": "Spring", @@ -13839,6 +14151,7 @@ "SPXC": "SpaceXCoin", "SPY": "Smarty Pay", "SPYRO": "SPYRO", + "SQ3": "Squad3", "SQAT": "Syndiqate", "SQD": "SQD", "SQG": "Squid Token", @@ -13869,6 +14182,7 @@ "SRCX": "Source Token", "SREUR": "SocialRemit", "SRG": "Street Runner NFT", + "SRGD": "Studio Releasing Gold", "SRK": "SparkPoint", "SRLTY": "SaitaRealty", "SRLY": "Rally (Solana)", @@ -13880,6 +14194,7 @@ "SRWD": "ShibRWD", "SRX": "StorX", "SS": "Sharder", + "SS20": "Shell Trade", "SSB": "SatoshiStreetBets", "SSC": "SelfSell", "SSD": "Sonic Screw Driver Coin", @@ -13915,6 +14230,7 @@ "STACK": "StackOS", "STACKS": " STACKS PAY", "STACS": "STACS Token", + "STAGE": "Stage", "STAK": "Jigstack", "STAKE": "xDai Chain", "STAKEDETH": "StakeHound Staked Ether", @@ -13923,7 +14239,7 @@ "STAN": "Stank Memes", "STANDARD": "Stakeborg DAO", "STAPT": "Ditto Staked Aptos", - "STAR": "FileStar", + "STAR": "StarHeroes", "STAR10": "Ronaldinho Coin", "STARAMBA": "Staramba", "STARBASE": "Starbase", @@ -13946,7 +14262,8 @@ "STARTER": "Starter.xyz", "STARWARS": "Star Wars", "STARX": "STARX TOKEN", - "STASH": "BitStash", + "STASH": "STASH INU", + "STASHV1": "BitStash", "STAT": "STAT", "STATE": "New World Order", "STATER": "Stater", @@ -13995,6 +14312,7 @@ "STHYPE": "Staked HYPE", "STI": "Seek Tiger", "STIC": "StickMan", + "STICKMAN": "stickman", "STIK": "Staika", "STIMA": "STIMA", "STING": "Sting", @@ -14016,10 +14334,11 @@ "STMAN": "Stickman Battleground", "STMATIC": "Lido Staked Matic", "STMX": "StormX", + "STMXV1": "StormX v1", "STND": "Standard Protocol", "STNEAR": "Staked NEAR", "STNK": "Stonks", - "STO": "Save The Ocean", + "STO": "StakeStone", "STOC": "STO Cash", "STOCK": "Digital Asset Stockpile", "STOG": "Stooges", @@ -14030,7 +14349,7 @@ "STONEDE": "Stone DeFi", "STONK": "STONK", "STONKS": "HarryPotterObamaWallStreetBets10Inu", - "STOP": "SatoPay", + "STOP": "LETSTOP", "STOR": "Self Storage Coin", "STORE": "Bit Store", "STOREP": "Storepay", @@ -14052,7 +14371,8 @@ "STRAY": "Stray Dog", "STRD": "Stride", "STRDY": "Sturdy", - "STREAM": "STREAMIT COIN", + "STREAM": "Streamflow", + "STREAMIT": "STREAMIT COIN", "STREETH": "STREETH", "STRI": "Strite", "STRIKE": "Strike", @@ -14105,9 +14425,11 @@ "SUCR": "Sucre", "SUD": "Sudo Labs", "SUDO": "sudoswap", + "SUEDE": "Johnny Suede", "SUGAR": "Sugar Exchange", "SUI": "Sui", "SUIA": "SUIA", + "SUIAGENT": "aiSUI", "SUIAI": "SUI Agents", "SUIB": "Suiba Inu", "SUIDEPIN": "Sui DePIN", @@ -14117,6 +14439,7 @@ "SUIMON": "Sui Monster", "SUIP": "SuiPad", "SUIRWA": "Sui RWA", + "SUIRWAPIN": "SUIRWAPIN", "SUISHIB": "SuiShiba", "SUITE": "Suite", "SUKI": "SUKI", @@ -14234,6 +14557,7 @@ "SWISE": "StakeWise", "SWITCH": "Switch", "SWM": "Swarm Fund", + "SWO": "SwordMagicToken", "SWOLE": "Swole Doge", "SWOP": "Swop", "SWORD": "eZKalibur", @@ -14257,6 +14581,7 @@ "SXM": "saxumdao", "SXP": "SXP", "SXS": "Sphere", + "SXT": "Space and Time", "SXUT": "SPECTRE Utility Token", "SYA": "SaveYourAssets", "SYBC": "SYB Coin", @@ -14327,12 +14652,13 @@ "TANG": "Tangent", "TANGO": "keyTango", "TANGYUAN": "TangYuan", - "TANK": "CryptoTanks", + "TANK": "AgentTank", "TANPIN": "Tanpin", "TANUKI": "Tanuki", "TANUPAD": "Tanuki Launchpad", "TAO": "Bittensor", "TAOBOT": "tao.bot", + "TAOCAT": "TAOCat by Virtuals", "TAONU": "TAO INU", "TAOP": "TaoPad", "TAOTOOLS": "TAOTools", @@ -14445,6 +14771,7 @@ "TELO": "Telo Meme Coin", "TELOS": "Teloscoin", "TEM": "Temtum", + "TEMA": "Tema", "TEMCO": "TEMCO", "TEMM": "TEM MARKET", "TEMP": "Tempus", @@ -14474,6 +14801,7 @@ "TERR": "Terrier", "TERRA": "Terraport", "TERRAB": "TERRABYTE AI", + "TERRACOIN": "TerraCoin", "TERRY": "Terry The Disgruntled Turtle", "TERZ": "SHELTERZ", "TES": "TeslaCoin", @@ -14485,6 +14813,7 @@ "TETH": "Treehouse ETH", "TETHYS": "Tethys", "TETRA": "Tetra", + "TETSUO": "Tetsuo Coin", "TETU": "TETU", "TEVA": "Tevaera", "TEW": "Trump in a memes world", @@ -14543,6 +14872,7 @@ "THG": "Thetan Arena", "THIK": "ThikDik", "THING": "Nothing", + "THINGSOP": "ThingsOperatingSystem", "THINKWAREAI": "ThinkwareAI", "THISISF": "This is Fine", "THL": "Thala", @@ -14601,7 +14931,7 @@ "TINU": "Telegram Inu", "TINY": "TinyBits", "TIOX": "TIOx", - "TIP": "Tip Blockchain", + "TIP": "Tip", "TIPC": "Tipcoin", "TIPINU": "Tip Inu", "TIPS": "FedoraCoin", @@ -14674,13 +15004,14 @@ "TOC": "TouchCon", "TODAY": "TodayCoin", "TODD": "TURBO TODD", - "TOK": "Tokenplace", + "TOK": "Tokai", "TOKA": "Tonka Finance", "TOKAMAK": "Tokamak Network", "TOKAU": "Tokyo AU", "TOKC": "Tokyo Coin", "TOKE": "Tokemak", "TOKEN": "TokenFi", + "TOKENPLACE": "Tokenplace", "TOKENSTARS": "TokenStars", "TOKERO": "TOKERO LevelUP Token", "TOKKI": "CRYPTOKKI", @@ -14691,6 +15022,7 @@ "TOLO": "Tolo Yacoloco", "TOLYCAT": "Toly's Cat", "TOM": "TOM Finance", + "TOMA": "TomaInfo", "TOMAHAWKCOIN": "Tomahawkcoin", "TOMAN": "IRR", "TOMB": "Tomb", @@ -14738,7 +15070,7 @@ "TORO": "Toro Inoue", "TOROSOL": "Toro", "TORSY": "TORSY", - "TOS": "ThingsOperatingSystem", + "TOS": "Cryptos", "TOSA": "TosaInu BSC", "TOSC": "T.OS", "TOSDIS": "TosDis", @@ -14801,7 +15133,7 @@ "TRB": "Tellor", "TRBT": "Tribute", "TRBV1": "Tellor Tributes v1", - "TRC": "TerraCoin", + "TRC": "Terrace", "TRCB": "TRCB Chain", "TRCL": "Treecle", "TRCT": "Tracto", @@ -14810,7 +15142,8 @@ "TRDS": "Traders Token", "TRDT": "Trident", "TRDX": "Trendix", - "TREAT": "Treat", + "TREA": "Treat", + "TREAT": "Shiba Inu Treat", "TREB": "Treble", "TRECENTO": "Trecento Blockchain Capital", "TREE": "Tree", @@ -14845,7 +15178,8 @@ "TRNGUY": "Tron Guy Project", "TROG": "Trog", "TROGE": "Troge", - "TROLL": "Trollcoin", + "TROLL": "TROLL", + "TROLLC": "Trollcoin", "TROLLHEIM": "Trollheim", "TROLLICTO": "TROLLI CTO", "TROLLMODE": "TROLL MODE", @@ -14891,7 +15225,8 @@ "TRUMPCAT": "TRUMPCAT", "TRUMPCATF": "Trump Cat Family", "TRUMPCATS": "Trump Golden Cat", - "TRUMPCOIN": "TrumpCoin", + "TRUMPCOIN": "MAGA: Fight for Trump", + "TRUMPCOINROCKS": "TrumpCoin", "TRUMPDAO": "TRUMP DAO", "TRUMPDO": "TRUMP", "TRUMPDOGE": "Trump Doge", @@ -14955,6 +15290,7 @@ "TSLT": "Tamkin", "TSN": "Tsunami Exchange Token", "TSO": "Thesirion", + "TSOTCHKE": "tsotchke", "TSR": "Tesra", "TST": "Test", "TSTAI": "Test AI", @@ -14965,7 +15301,7 @@ "TSUKA": "Dejitaru Tsuka", "TSX": "TradeStars", "TT": "ThunderCore", - "TTC": "TTC PROTOCOL", + "TTC": "TonTycoon", "TTF": "TurboTrix Finance", "TTK": "The Three Kingdoms", "TTM": "Tradetomato", @@ -14984,6 +15320,7 @@ "TULIP": "Tulip Protocol", "TUNA": "TUNACOIN", "TUNE": "Bitune", + "TUNETRADEX": "TuneTrade", "TUP": "Tenup", "TUPE": "Turtle Pepe", "TUR": "Turron", @@ -15034,7 +15371,7 @@ "TXC": "TEXITcoin", "TXG": "TRUSTxGAMING", "TXL": "Autobahn Network", - "TXT": "TuneTrade", + "TXT": "Taxa Token", "TYBENG": "TYBENG", "TYBG": "Base God", "TYBGSc": "Base Goddess", @@ -15044,6 +15381,7 @@ "TYLER": "Tyler", "TYOGHOUL": "TYO GHOUL", "TYPE": "TypeAI", + "TYPEL": "TypeIt", "TYPERIUM": "Typerium", "TYPUS": "Typus", "TYRANT": "Fable Of The Dragon", @@ -15054,6 +15392,7 @@ "TZKI": "Tsuzuki Inu", "TZU": "Sun Tzu", "U": "Unidef", + "U2U": "U2U Network", "U8D": "Universal Dollar", "UAEC": "United Arab Emirates Coin", "UAHG": "UAHg", @@ -15152,6 +15491,7 @@ "UMT": "UnityMeta", "UMX": "UniMex Network", "UMY": "KaraStar UMY", + "UNA": "Unagi Token", "UNAT": "Unattanium", "UNB": "Unbound Finance", "UNBNK": "Unbanked", @@ -15159,6 +15499,7 @@ "UNC": "UnCoin", "UNCL": "UNCL", "UNCN": "Unseen", + "UNCOMMONGOODS": "UNCOMMON•GOODS", "UNCX": "UniCrypt", "UND": "United Network Distribution", "UNDB": "unibot.cash", @@ -15185,8 +15526,11 @@ "UNIL": "UniLayer", "UNIM": "Unicorn Milk", "UNIO": "Unio Coin", + "UNIPOWER": "UniPower", + "UNIPT": "Universal Protocol Token", "UNIQ": "Uniqredit", "UNIQUE": "Unique One", + "UNIR": "UniRouter", "UNISD": "unified Stable Dollar", "UNISDV1": "uniswap State Dollar", "UNISTAKE": "Unistake", @@ -15232,7 +15576,7 @@ "UPR": "Upfire", "UPRO": "ULTRAPRO", "UPS": "UPFI Network", - "UPT": "Universal Protocol Token", + "UPT": "UPROCK", "UPTOS": "UPTOS", "UPUNK": "Unicly CryptoPunks Collection", "UPUSD": "Universal US Dollar", @@ -15242,7 +15586,9 @@ "URAC": "Uranus", "URALS": "Urals Coin", "URFA": "Urfaspor Token", - "URO": "UroCoin", + "URMOM": "urmom", + "URO": "Urolithin A", + "UROCOIN": "UroCoin", "URQA": "UREEQA", "URS": "URUS", "URUS": "Urus Token", @@ -15255,7 +15601,7 @@ "USCC": "USC", "USCOIN": "USCoin", "USD0": "Usual", - "USD1": "USD1", + "USD1": "World Liberty Financial USD", "USD3": "Web 3 Dollar", "USDA": "USDa", "USDACC": "USDA", @@ -15292,6 +15638,7 @@ "USDMA": "USD mars", "USDN": "Neutral AI", "USDO": "USD Open Dollar", + "USDONE": "Currency One USD", "USDP": "Pax Dollar", "USDPLUS": "Overnight.fi USD+", "USDQ": "Quantoz USDQ", @@ -15396,6 +15743,7 @@ "VANCE": "JD Vance", "VANCEMEME": "Vance Meme", "VANF": "Van Fwogh", + "VANKEDISI": "vankedisi", "VANRY": "Vanar Chain", "VANT": "Vanta Network", "VANY": "Vanywhere", @@ -15427,6 +15775,7 @@ "VCF": "Valencia CF Fan Token", "VCG": "VCGamers", "VCHF": "VNX Swiss Franc", + "VCI": "VinciToken", "VCK": "28VCK", "VCNT": "ViciCoin", "VCORE": "VCORE", @@ -15457,6 +15806,7 @@ "VEIL": "VEIL", "VEKTOR": "VEKTOR", "VELA": "Vela Token", + "VELAAI": "velaai", "VELAR": "Velar", "VELO": "Velo", "VELOD": "Velodrome Finance", @@ -15482,6 +15832,7 @@ "VERSA": "Versa Token", "VERSACE": "VERSACE", "VERSE": "Verse", + "VERT": "VERT", "VERTAI": "Vertical AI", "VERTEX": "Vertex", "VERUM": "Verum Coin", @@ -15549,6 +15900,7 @@ "VIS": "Vigorus", "VISIO": "Visio", "VISION": "VisionGame", + "VISIONCITY": "Vision City", "VISR": "Visor", "VIST": "VISTA", "VISTA": "Ethervista", @@ -15567,12 +15919,13 @@ "VITY": "Vitteey", "VIU": "Viuly", "VIVEK": "Head of D.O.G.E", + "VIVI": "LH VIVI", "VIVID": "Vivid Coin", "VIVO": "VIVO Coin", "VIX": "VIXCO", "VIX7": "VIX777", "VIXV1": "VIXCO v1", - "VIZ": "Vision City", + "VIZ": "VIZ Token", "VIZION": "ViZion Protocol", "VIZSLASWAP": "VizslaSwap", "VKNF": "VKENAF", @@ -15627,6 +15980,7 @@ "VOLTX": "VolatilityX", "VOLTZ": "Voltz", "VOLX": "VolumeX", + "VON": "Vameon", "VONE": "Vone", "VONSPEED": "Andrea Von Speed", "VOOT": "VootCoin", @@ -15647,6 +16001,7 @@ "VPS": "VPS AI", "VPT": "Veritas Protocol", "VR": "Victoria", + "VR1": "VR1", "VRA": "Verasity", "VRC": "Virtual Coin", "VRGW": "Virtual Reality Game World", @@ -15727,6 +16082,7 @@ "W12": "W12 Protocol", "W2E": "Walk To Earn", "W3C": "W3Coin", + "W3GG": "W3GG Token", "W3M": "Web3Met", "W3S": "Web3Shot", "W3W": "Web3 Whales", @@ -15788,10 +16144,12 @@ "WASSIE": "WASSIE", "WASTED": "WastedLands", "WASTR": "Wrapped Astar", - "WAT": "Wat", + "WAT": "WATCoin", + "WAT0X63": "Wat", "WATC": "WATCoin", "WATCH": "Yieldwatch", - "WATER": "doginwotah", + "WATER": "WATER", + "WATT": "WATTTON", "WAVAX": "Wrapped AVAX", "WAVES": "Waves", "WAVESCOMM": "Waves Community Token", @@ -15858,6 +16216,7 @@ "WEALTH": "WealthCoin", "WEAPON": "MEGAWEAPON", "WEAR": "MetaWear", + "WEAVE6": "Weave6", "WEB": "Webcoin", "WEB3": "WEB3 Inu", "WEB4": "WEB4 AI", @@ -15885,6 +16244,7 @@ "WELA": "Wrapped Elastos", "WELD": "Weld", "WELL": "Moonwell", + "WELL3": "WELL3", "WELLTOKEN": "Well", "WELLV1": "Moonwell v1", "WELON": "WrappedElon", @@ -15941,6 +16301,7 @@ "WHALE": "WHALE", "WHALES": "Whales Market", "WHAT": "What the Duck", + "WHATSONPIC": "WhatsOnPic", "WHBAR": "Wrapped HBAR", "WHC": "Whales Club", "WHEAT": "Wheat Token", @@ -15964,6 +16325,8 @@ "WHX": "WHITEX", "WHY": "WHY", "WHYCAT": "WhyCat", + "WHYPAD": "Unamano", + "WHYPADV1": "Unamano v1", "WIB": "Wibson", "WIBE": "Wibegram", "WIC": "Wi Coin", @@ -16005,6 +16368,7 @@ "WINTER": "Winter", "WINU": "Walter Inu", "WINX": "WinX.io", + "WIOTA": "wIOTA", "WIOTX": "Wrapped IoTeX", "WIRE": "717ai by Virtuals", "WIRTUAL": "Wirtual", @@ -16020,6 +16384,7 @@ "WIWI": "Wiggly Willy", "WIX": "Wixlar", "WIZA": "Wizardia", + "WIZZ": "Wizzwoods Token", "WJD": "WJD", "WJEWEL": "WJEWEL", "WJXN": "Jax.Network", @@ -16062,6 +16427,7 @@ "WNCG": "Wrapped NCG", "WND": "WonderHero", "WNDR": "Wonderman Nation", + "WNE": "Winee3", "WNEAR": "Wrapped Near", "WNEON": "Wrapped Neon EVM", "WNET": "Wavesnode.net", @@ -16075,7 +16441,7 @@ "WNYC": "Wrapped NewYorkCoin", "WNZ": "Winerz", "WOA": "Wrapped Origin Axie", - "WOD": "World of Defish", + "WOD": "World of Dypians", "WOETH": "Wrapped Origin Ether", "WOFM": "World of Masters", "WOID": "WORLD ID", @@ -16105,7 +16471,7 @@ "WONE": "Wrapped Harmony", "WOO": "WOO Network", "WOOD": "Mindfolk Wood", - "WOOF": "Shibance Token", + "WOOF": "WoofWork.io", "WOOFY": "Woofy", "WOOL": "Wolf Game Wool", "WOONK": "Woonkly", @@ -16116,10 +16482,12 @@ "WOP": "WorldPay", "WOR": "Hollywood Capital Group WARRIOR", "WORK": "Work X", + "WORKCHAIN": "WorkChain.io", "WORKE": "Worken", "WORKIE": "Workie", "WORL": "World Record Banana", "WORLD": "World Token", + "WORLDOFD": "World of Defish", "WORM": "HealthyWorm", "WORX": "Worx", "WOS": "Wolf Of Solana", @@ -16339,7 +16707,8 @@ "XELS": "XELS Coin", "XEM": "NEM", "XEN": "XEN Crypto", - "XEND": "Xend Finance", + "XENDV1": "Xend Finance", + "XENDV2": "Xend Finance", "XENIX": "XenixCoin", "XENO": "Xeno", "XENOVERSE": "Xenoverse", @@ -16365,6 +16734,7 @@ "XGD": "X Gold", "XGEM": "Exchange Genesis Ethlas Medium", "XGLI": "Glitter Finance", + "XGN": "0xGen", "XGOLD": "XGOLD COIN", "XGOX": "Go!", "XGP": "XGP", @@ -16489,6 +16859,7 @@ "XQN": "Quotient", "XQR": "Qredit", "XQUOK": "XQUOK", + "XR": "Xraders", "XRA": "Xriba", "XRAI": "X-Ratio A", "XRAY": "Ray Network", @@ -16496,6 +16867,7 @@ "XRD": "Radix", "XRDOGE": "XRdoge", "XRE": "RevolverCoin", + "XREA": "XREATORS", "XRGB": "XRGB", "XRISE": "Xrise", "XRL": "Rialto.AI", @@ -16517,7 +16889,7 @@ "XSAUCE": "xSAUCE", "XSC": "Hyperspace", "XSD": "SounDAC", - "XSEED": "BitSeeds", + "XSEED": "XSEED", "XSGD": "XSGD", "XSH": "SHIELD", "XSHIB": "XSHIB", @@ -16556,6 +16928,7 @@ "XTRM": "XTRM COIN", "XTRUMP": "X TRUMP", "XTT": "XSwap Treasure", + "XTTA": "XTTA", "XTTB20": "XTblock", "XTUSD": "XT Stablecoin XTUSD", "XTV": "XTV", @@ -16585,6 +16958,7 @@ "XY": "XY Finance", "XYM": "Symbol", "XYO": "XY Oracle", + "XYRO": "XYRO", "XYZ": "Universe.XYZ", "XZK": "Mystiko Network", "Y24": "Yield 24", @@ -16605,6 +16979,7 @@ "YAMV2": "YAM v2", "YAOYAO": "Yaoyao's Cat", "YAP": "Yap Stone", + "YAPSTER": "YAPSTER", "YARL": "Yarloo", "YAW": "Yawww", "YAWN": "YAWN", @@ -16705,6 +17080,7 @@ "YOUSIM": "YouSim", "YOVI": "YobitVirtualCoin", "YOYOW": "Yoyow", + "YOZI": "YoZi Protocol", "YPC": "YoungParrot", "YPIE": "PieDAO Yearn Ecosystem Pie", "YPRISMA": "Yearn yPRISMA", @@ -16745,13 +17121,15 @@ "YYE": "YYE Energy", "YYFI": "YYFI.Protocol", "YYOLO": "yYOLO", - "YZY": "Yeezy", + "YZY": "Swasticoin", "Z3": "Z-Cubed", + "ZAAR": "THE•ORDZAAR•RUNES", "ZABAKU": "Zabaku Inu", "ZACK": "Zack Morris", "ZAFI": "ZakumiFi", - "ZAI": "Zero Collateral Dai", + "ZAI": "Zen AI", "ZAIF": "Zaif Token", + "ZAIFIN": "Zero Collateral Dai", "ZAM": "Zamio", "ZAMZAM": "ZAMZAM", "ZANO": "Zano", @@ -16794,26 +17172,28 @@ "ZEBU": "ZEBU", "ZEC": "ZCash", "ZECD": "ZCashDarkCoin", - "ZED": "ZED Token", - "ZEDCOIN": "ZedCoin", + "ZED": "ZedCoins", "ZEDD": "ZedDex", "ZEDTOKEN": "Zed Token", "ZEDX": "ZEDX Сoin", "ZEDXION": "Zedxion", "ZEDXIONV1": "Zedxion v1", "ZEE": "ZeroSwap", + "ZEEP": "ZEEPR", "ZEFI": "ZCore Finance", "ZEFU": "Zenfuse", "ZEIT": "ZeitCoin", "ZEL": "Zelcash", "ZELIX": "ZELIX", "ZEN": "Horizen", + "ZENAD": "Zenad", "ZENC": "Zenc Coin", "ZEND": "zkLend", "ZENF": "Zenland", "ZENI": "Zennies", "ZENIQ": "Zeniq Coin", "ZENITH": "Zenith Chain", + "ZENPROTOCOL": "Zen Protocol", "ZENQ": "Zenqira", "ZENT": "Zentry", "ZEON": "Zeon Network", @@ -16864,7 +17244,8 @@ "ZIPT": "Zippie", "ZIRVE": "Zirve Coin", "ZIV4": "Ziv4 Labs", - "ZIX": "ZIX Token", + "ZIX": "Coinzix Token", + "ZIXTOKEN": "ZIX Token", "ZIZLE": "Zizle", "ZIZY": "ZIZY", "ZJLT": "ZJLT Distributed Factoring Network", @@ -16912,7 +17293,7 @@ "ZMBE": "RugZombie", "ZMN": "ZMINE", "ZMT": "Zipmex Token", - "ZND": "Zenad", + "ZND": "ZND Token", "ZNE": "ZoneCoin", "ZNN": "Zenon", "ZNT": "Zenith Finance", @@ -16935,12 +17316,13 @@ "ZOOMER": "Zoomer Coin", "ZOON": "CryptoZoon", "ZOOT": "Zoo Token", - "ZORA": "Zoracles", + "ZORA": "Zora", + "ZORACLES": "Zoracles", "ZORKSEES": "Zorksees", "ZORO": "Zoro Inu", "ZORRO": "Zorro", "ZORT": "Zort", - "ZP": "Zen Protocol", + "ZP": "Zombie Power", "ZPAE": "ZelaaPayAE", "ZPAY": "ZoidPay", "ZPC": "Zen Panda Coin", @@ -16949,7 +17331,8 @@ "ZPRO": "ZAT Project", "ZPT": "Zeepin", "ZPTC": "Zeptacoin", - "ZRC": "ZrCoin", + "ZRC": "Zircuit", + "ZRCOIN": "ZrCoin", "ZRO": "LayerZero", "ZRPY": "Zerpaay", "ZRS": "Zaros", @@ -16966,6 +17349,7 @@ "ZUC": "Zeux", "ZUCKPEPE": "ZuckPepe", "ZUKI": "Zuki Moba", + "ZULU": "Zulu Network", "ZUM": "ZumCoin", "ZUN": "Zunami Governance Token", "ZUNA": "ZUNA", @@ -16994,7 +17378,9 @@ "ZYTARA": "Zytara dollar", "ZZ": "ZigZag", "ZZC": "ZudgeZury", - "ZZZ": "zzz.finance", + "ZZZ": "ZZZ", + "ZZZV1": "zzz.finance", + "anyeth1": "anyeth1", "eFIC": "FIC Network", "ePRX": "eProxy", "gOHM": "Governance OHM", diff --git a/apps/api/src/services/cron/cron.module.ts b/apps/api/src/services/cron/cron.module.ts new file mode 100644 index 000000000..06f9d2caa --- /dev/null +++ b/apps/api/src/services/cron/cron.module.ts @@ -0,0 +1,23 @@ +import { UserModule } from '@ghostfolio/api/app/user/user.module'; +import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; +import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; +import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; + +import { Module } from '@nestjs/common'; + +import { CronService } from './cron.service'; + +@Module({ + imports: [ + ConfigurationModule, + DataGatheringModule, + ExchangeRateDataModule, + PropertyModule, + TwitterBotModule, + UserModule + ], + providers: [CronService] +}) +export class CronModule {} diff --git a/apps/api/src/services/cron.service.ts b/apps/api/src/services/cron/cron.service.ts similarity index 79% rename from apps/api/src/services/cron.service.ts rename to apps/api/src/services/cron/cron.service.ts index 3d4aff08b..b770aa2d7 100644 --- a/apps/api/src/services/cron.service.ts +++ b/apps/api/src/services/cron/cron.service.ts @@ -1,4 +1,9 @@ import { UserService } from '@ghostfolio/api/app/user/user.service'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; +import { TwitterBotService } from '@ghostfolio/api/services/twitter-bot/twitter-bot.service'; import { DATA_GATHERING_QUEUE_PRIORITY_LOW, GATHER_ASSET_PROFILE_PROCESS_JOB_NAME, @@ -10,12 +15,6 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; -import { ConfigurationService } from './configuration/configuration.service'; -import { ExchangeRateDataService } from './exchange-rate-data/exchange-rate-data.service'; -import { PropertyService } from './property/property.service'; -import { DataGatheringService } from './queues/data-gathering/data-gathering.service'; -import { TwitterBotService } from './twitter-bot/twitter-bot.service'; - @Injectable() export class CronService { private static readonly EVERY_SUNDAY_AT_LUNCH_TIME = '0 12 * * 0'; @@ -43,7 +42,9 @@ export class CronService { @Cron(CronExpression.EVERY_DAY_AT_5PM) public async runEveryDayAtFivePm() { - this.twitterBotService.tweetFearAndGreedIndex(); + if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { + this.twitterBotService.tweetFearAndGreedIndex(); + } } @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT) diff --git a/apps/api/src/services/demo/demo.module.ts b/apps/api/src/services/demo/demo.module.ts new file mode 100644 index 000000000..8f86de058 --- /dev/null +++ b/apps/api/src/services/demo/demo.module.ts @@ -0,0 +1,13 @@ +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; + +import { Module } from '@nestjs/common'; + +import { DemoService } from './demo.service'; + +@Module({ + exports: [DemoService], + imports: [PrismaModule, PropertyModule], + providers: [DemoService] +}) +export class DemoModule {} diff --git a/apps/api/src/services/demo/demo.service.ts b/apps/api/src/services/demo/demo.service.ts new file mode 100644 index 000000000..477b43e3b --- /dev/null +++ b/apps/api/src/services/demo/demo.service.ts @@ -0,0 +1,59 @@ +import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { + PROPERTY_DEMO_ACCOUNT_ID, + PROPERTY_DEMO_USER_ID, + TAG_ID_DEMO +} from '@ghostfolio/common/config'; + +import { Injectable } from '@nestjs/common'; +import { v4 as uuidv4 } from 'uuid'; + +@Injectable() +export class DemoService { + public constructor( + private readonly prismaService: PrismaService, + private readonly propertyService: PropertyService + ) {} + + public async syncDemoUserAccount() { + const [demoAccountId, demoUserId] = (await Promise.all([ + this.propertyService.getByKey(PROPERTY_DEMO_ACCOUNT_ID), + this.propertyService.getByKey(PROPERTY_DEMO_USER_ID) + ])) as [string, string]; + + let activities = await this.prismaService.order.findMany({ + orderBy: { + date: 'asc' + }, + where: { + tags: { + some: { + id: TAG_ID_DEMO + } + } + } + }); + + activities = activities.map((activity) => { + return { + ...activity, + accountId: demoAccountId, + accountUserId: demoUserId, + comment: null, + id: uuidv4(), + userId: demoUserId + }; + }); + + await this.prismaService.order.deleteMany({ + where: { + userId: demoUserId + } + }); + + return this.prismaService.order.createMany({ + data: activities + }); + } +} diff --git a/apps/api/src/services/tag/tag.service.ts b/apps/api/src/services/tag/tag.service.ts index 3d6bd3907..eb2d7bfef 100644 --- a/apps/api/src/services/tag/tag.service.ts +++ b/apps/api/src/services/tag/tag.service.ts @@ -52,7 +52,7 @@ export class TagService { include: { _count: { select: { - orders: { + activities: { where: { userId } @@ -79,7 +79,7 @@ export class TagService { id, name, userId, - isUsed: _count.orders > 0 + isUsed: _count.activities > 0 })); } @@ -87,7 +87,7 @@ export class TagService { const tagsWithOrderCount = await this.prismaService.tag.findMany({ include: { _count: { - select: { orders: true } + select: { activities: true } } } }); @@ -97,7 +97,7 @@ export class TagService { id, name, userId, - activityCount: _count.orders + activityCount: _count.activities }; }); } diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index a04e457ba..9680d0830 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -10,7 +10,7 @@ (click)="onCreateAccount()" > You are using the Live Demo. - Create Account + Create Account } diff --git a/apps/client/src/app/app.component.scss b/apps/client/src/app/app.component.scss index 241d3331e..f848fe6ff 100644 --- a/apps/client/src/app/app.component.scss +++ b/apps/client/src/app/app.component.scss @@ -15,12 +15,14 @@ z-index: 999; .info-message { - color: rgba(var(--palette-foreground-text), 1); + color: rgba(var(--light-primary-text)); font-size: 80%; + font-weight: 500; max-width: 100%; .a { - font-weight: 500; + border: 1px solid rgba(var(--light-primary-text)); + border-radius: 0.25rem; } } } diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index 2f814668a..23578cff1 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -22,12 +22,13 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatSlideToggleChange } from '@angular/material/slide-toggle'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { differenceInSeconds, formatDistanceToNowStrict, parseISO } from 'date-fns'; -import { StringValue } from 'ms'; +import ms, { StringValue } from 'ms'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -42,6 +43,7 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { public coupons: Coupon[]; public hasPermissionForSubscription: boolean; public hasPermissionForSystemMessage: boolean; + public hasPermissionToSyncDemoUserAccount: boolean; public hasPermissionToToggleReadOnlyMode: boolean; public info: InfoItem; public isDataGatheringEnabled: boolean; @@ -60,6 +62,7 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private notificationService: NotificationService, + private snackBar: MatSnackBar, private userService: UserService ) { this.info = this.dataService.fetchInfo(); @@ -80,6 +83,11 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { permissions.enableSystemMessage ); + this.hasPermissionToSyncDemoUserAccount = hasPermission( + this.user.permissions, + permissions.syncDemoUserAccount + ); + this.hasPermissionToToggleReadOnlyMode = hasPermission( this.user.permissions, permissions.toggleReadOnlyMode @@ -206,6 +214,21 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { } } + public onSyncDemoUserAccount() { + this.adminService + .syncDemoUserAccount() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.snackBar.open( + '✅ ' + $localize`Demo user account has been synced.`, + undefined, + { + duration: ms('3 seconds') + } + ); + }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index bcbf666ef..246e5fe04 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -169,10 +169,23 @@
Housekeeping
- +
+ @if (hasPermissionToSyncDemoUserAccount) { + + } + +
diff --git a/apps/client/src/app/components/admin-overview/admin-overview.module.ts b/apps/client/src/app/components/admin-overview/admin-overview.module.ts index da49eb858..1c5fba202 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.module.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.module.ts @@ -9,6 +9,7 @@ import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; import { AdminOverviewComponent } from './admin-overview.component'; @@ -24,6 +25,7 @@ import { AdminOverviewComponent } from './admin-overview.component'; MatCardModule, MatMenuModule, MatSelectModule, + MatSnackBarModule, MatSlideToggleModule, ReactiveFormsModule, RouterModule diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.html b/apps/client/src/app/components/admin-settings/admin-settings.component.html index 2dcdefdd0..2d577d582 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.html +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.html @@ -23,7 +23,7 @@ [enableLink]="false" /> @if (isGhostfolioApiKeyValid === false) { - Early Access } @@ -105,12 +105,11 @@ } @else if (isGhostfolioApiKeyValid === false) { } } diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.scss b/apps/client/src/app/components/admin-settings/admin-settings.component.scss index c08ba95bc..384143300 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.scss +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.scss @@ -1,6 +1,19 @@ :host { display: block; + button { + &.special { + background: linear-gradient(45deg, rgb(228, 94, 237), rgb(104, 94, 237)); + color: #fff; + } + } + + .badge { + &.early-access { + border: 1px solid var(--mat-table-row-item-outline-color); + } + } + .mat-mdc-progress-bar { --mdc-linear-progress-active-indicator-height: 0.5rem; --mdc-linear-progress-track-height: 0.5rem; diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 028866009..cdaea83dc 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -102,8 +102,8 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public hasPermissionToCreateOwnTag: boolean; public hasPermissionToReadMarketDataOfOwnAssetProfile: boolean; public historicalDataItems: LineChartItem[]; - public investment: number; - public investmentPrecision = 2; + public investmentInBaseCurrencyWithCurrencyEffect: number; + public investmentInBaseCurrencyWithCurrencyEffectPrecision = 2; public marketDataItems: MarketData[] = []; public marketPrice: number; public marketPriceMax: number; @@ -233,7 +233,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { feeInBaseCurrency, firstBuyDate, historicalData, - investment, + investmentInBaseCurrencyWithCurrencyEffect, marketPrice, marketPriceMax, marketPriceMin, @@ -288,13 +288,15 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } ); - this.investment = investment; + this.investmentInBaseCurrencyWithCurrencyEffect = + investmentInBaseCurrencyWithCurrencyEffect; if ( this.data.deviceType === 'mobile' && - this.investment >= NUMERICAL_PRECISION_THRESHOLD + this.investmentInBaseCurrencyWithCurrencyEffect >= + NUMERICAL_PRECISION_THRESHOLD ) { - this.investmentPrecision = 0; + this.investmentInBaseCurrencyWithCurrencyEffectPrecision = 0; } this.marketPrice = marketPrice; @@ -450,10 +452,9 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; - this.hasPermissionToCreateOwnTag = hasPermission( - this.user.permissions, - permissions.createOwnTag - ); + this.hasPermissionToCreateOwnTag = + hasPermission(this.user.permissions, permissions.createOwnTag) && + this.user?.settings?.isExperimentalFeatures; this.tagsAvailable = this.user?.tags?.map((tag) => { diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index 11898c44e..0f6c46a80 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -146,9 +146,9 @@ size="medium" [isCurrency]="true" [locale]="data.locale" - [precision]="investmentPrecision" + [precision]="investmentInBaseCurrencyWithCurrencyEffectPrecision" [unit]="data.baseCurrency" - [value]="investment" + [value]="investmentInBaseCurrencyWithCurrencyEffect" >Investment @@ -388,9 +388,7 @@ @if (benchmarks?.length > 0) { -
- +
+ Calculations are based on delayed market data and may not be displayed in real-time. diff --git a/apps/client/src/app/pages/faq/overview/faq-overview-page.html b/apps/client/src/app/pages/faq/overview/faq-overview-page.html index f8fd62eb0..bc7f6ba37 100644 --- a/apps/client/src/app/pages/faq/overview/faq-overview-page.html +++ b/apps/client/src/app/pages/faq/overview/faq-overview-page.html @@ -40,6 +40,21 @@ here. + + + Which calculation method does Ghostfolio use for + performance? + + Ghostfolio uses the Return on Average Investment (ROAI) + calculation method based on the average amount of capital invested + over time. ROAI aims to provide a more insightful view of investment + performance than simpler approaches, especially when contributions are + made over time. + Can I use Ghostfolio anonymously? diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 5f651195a..4982125fe 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -1,6 +1,8 @@ import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { UpdateOrderDto } from '@ghostfolio/api/app/order/update-order.dto'; +import { UserService } from '@ghostfolio/client/services/user/user.service'; import { getDateFormatString } from '@ghostfolio/common/helper'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { translate } from '@ghostfolio/ui/i18n'; import { @@ -42,6 +44,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { public currencyOfAssetProfile: string; public currentMarketPrice = null; public defaultDateFormat: string; + public hasPermissionToCreateOwnTag: boolean; public isLoading = false; public isToday = isToday; public mode: 'create' | 'update'; @@ -60,11 +63,15 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { private dateAdapter: DateAdapter, public dialogRef: MatDialogRef, private formBuilder: FormBuilder, - @Inject(MAT_DATE_LOCALE) private locale: string + @Inject(MAT_DATE_LOCALE) private locale: string, + private userService: UserService ) {} public ngOnInit() { this.currencyOfAssetProfile = this.data.activity?.SymbolProfile?.currency; + this.hasPermissionToCreateOwnTag = + this.data.user?.settings?.isExperimentalFeatures && + hasPermission(this.data.user?.permissions, permissions.createOwnTag); this.locale = this.data.user?.settings?.locale; this.mode = this.data.activity?.id ? 'update' : 'create'; @@ -219,6 +226,34 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.changeDetectorRef.markForCheck(); }); + this.activityForm.get('tags').valueChanges.subscribe((tags: Tag[]) => { + const newTag = tags.find(({ id }) => { + return id === undefined; + }); + + if (newTag && this.hasPermissionToCreateOwnTag) { + this.dataService + .postTag({ ...newTag, userId: this.data.user.id }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((tag) => { + this.activityForm.get('tags').setValue( + tags.map((currentTag) => { + if (currentTag.id === undefined) { + return tag; + } + + return currentTag; + }) + ); + + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + }); + } + }); + this.activityForm .get('type') .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 08e1b5162..985394a40 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -313,8 +313,9 @@
-
+
Oops, authentication has failed. -
or
-
diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index cb72fb9fd..670535291 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -246,6 +246,10 @@ export class AdminService { ); } + public syncDemoUserAccount() { + return this.http.get(`/api/v1/admin/demo-user/sync`); + } + public testMarketData({ dataSource, scraperConfiguration, diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 5ce42fe53..d667f6ceb 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1123,7 +1123,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1171,7 +1171,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1591,7 +1591,7 @@ Està segur qeu vol eliminar aquest cupó? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1599,7 +1599,7 @@ Està segur que vol eliminar aquest missatge del sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1607,7 +1607,7 @@ Està segur que vol depurar el cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1615,7 +1615,7 @@ Si us plau, afegeixi el seu missatge del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1735,7 +1735,7 @@ Depurar el Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1803,7 +1803,7 @@ Plataformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1811,7 +1811,7 @@ Etiquetes apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2231,7 +2231,7 @@ Informar d’un Problema amb les Dades apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2463,7 +2463,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2516,7 +2516,7 @@ {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activitat} other {activitats}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 @@ -4257,7 +4257,7 @@ Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards + Hipoteques, préstecs personals, targetes de crèdit apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 57 @@ -4265,7 +4265,7 @@ Luxury items, real estate, private companies - Luxury items, real estate, private companies + Articles de luxe, immobiliari, empreses privades apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 73 @@ -4273,7 +4273,7 @@ Account - Account + Compte apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 85 @@ -4289,7 +4289,7 @@ Update Cash Balance - Update Cash Balance + Actualitzar el saldo d’efectiu apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 112 @@ -4297,7 +4297,7 @@ Unit Price - Unit Price + Preu unitari apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 213 @@ -4309,7 +4309,7 @@ Fee - Fee + Quota apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 261 @@ -4321,7 +4321,7 @@ Import Activities - Import Activities + Activitats d’importació apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 47 @@ -4329,7 +4329,7 @@ Import Dividends - Import Dividends + Importar dividends apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 88 @@ -4337,7 +4337,7 @@ Importing data... - Importing data... + S’estan important dades... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 126 @@ -4345,7 +4345,7 @@ Import has been completed - Import has been completed + La importació s’ha completat apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 134 @@ -4353,7 +4353,7 @@ Validating data... - Validating data... + S’estan validant les dades... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 242 @@ -4361,7 +4361,7 @@ Select Holding - Select Holding + Seleccioneu Holding apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 20 @@ -4369,7 +4369,7 @@ Select File - Select File + Seleccioneu Fitxer apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 22 @@ -5501,7 +5501,7 @@ Go back to Home Page apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -6893,7 +6893,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 86c156192..5ee8eb1d7 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -534,7 +534,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -582,7 +582,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -634,7 +634,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -642,7 +642,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -650,7 +650,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -762,7 +762,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1114,7 +1114,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1338,7 +1338,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1354,7 +1354,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2478,7 +2478,7 @@ Zurück zur Startseite apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -3966,7 +3966,7 @@ Plattformen apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -5732,7 +5732,7 @@ Möchtest du diese Systemmeldung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6917,7 +6917,7 @@ API-Schlüssel setzen apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7592,18 +7592,34 @@ Berechnungen basieren auf verzögerten Marktdaten und werden nicht in Echtzeit angezeigt. apps/client/src/app/components/home-market/home-market.html - 41 + 43 changelog - changelog + changelog kebab-case libs/common/src/lib/paths.ts 37 + + Demo user account has been synced. + Demo Benutzerkonto wurde synchronisiert. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Synchronisiere Demo Benutzerkonto + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 01b51e793..85a13ca73 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -535,7 +535,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -583,7 +583,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -635,7 +635,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -643,7 +643,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -651,7 +651,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -747,7 +747,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1099,7 +1099,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1323,7 +1323,7 @@ Etiquetas apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1339,7 +1339,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2463,7 +2463,7 @@ Volver a la página principal apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -3943,7 +3943,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -5008,7 +5008,7 @@ into minimalism - into minimalism + en el minimalismo apps/client/src/app/pages/landing/landing-page.html 299 @@ -5016,7 +5016,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocuparse por diversificar tus recursos financieros apps/client/src/app/pages/landing/landing-page.html 303 @@ -5024,7 +5024,7 @@ interested in financial independence - interested in financial independence + interesado en la independencia financiera apps/client/src/app/pages/landing/landing-page.html 307 @@ -5032,7 +5032,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + diciendo no a las hojas de cálculo en apps/client/src/app/pages/landing/landing-page.html 311 @@ -5040,7 +5040,7 @@ still reading this list - still reading this list + todavía leyendo esta lista apps/client/src/app/pages/landing/landing-page.html 314 @@ -5048,7 +5048,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Más información sobre Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -5056,7 +5056,7 @@ What our users are saying - What our users are saying + Lo que nuestros usuarios están diciendo apps/client/src/app/pages/landing/landing-page.html 327 @@ -5064,7 +5064,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Miembros de todo el mundo están usando Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -5072,7 +5072,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + ¿Cómo Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html 383 @@ -5080,7 +5080,7 @@ Sign up anonymously* - Sign up anonymously* + Regístrate de forma anónima* apps/client/src/app/pages/landing/landing-page.html 392 @@ -5088,7 +5088,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no se requiere dirección de correo electrónico ni tarjeta de crédito apps/client/src/app/pages/landing/landing-page.html 394 @@ -5096,7 +5096,7 @@ Add any of your historical transactions - Add any of your historical transactions + Agrega cualquiera de tus transacciones históricas apps/client/src/app/pages/landing/landing-page.html 405 @@ -5104,7 +5104,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obtén información valiosa sobre la composición de tu portafolio apps/client/src/app/pages/landing/landing-page.html 417 @@ -5112,7 +5112,7 @@ Are you ready? - Are you ready? + ¿Estás listo? apps/client/src/app/pages/landing/landing-page.html 431 @@ -5120,7 +5120,7 @@ Live Demo - Live Demo + Demostración en vivo apps/client/src/app/pages/landing/landing-page.html 49 @@ -5132,7 +5132,7 @@ Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. + Obtén una visión completa de tus finanzas personales en múltiples plataformas. apps/client/src/app/pages/landing/landing-page.html 242 @@ -5140,7 +5140,7 @@ Get started in only 3 steps - Get started in only 3 steps + Comienza en solo 3 pasos apps/client/src/app/pages/landing/landing-page.html 386 @@ -5229,7 +5229,7 @@ This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Esta página de resumen presenta una colección seleccionada de herramientas de finanzas personales, comparadas con la alternativa de código abierto Ghostfolio. Si valoras la transparencia, la privacidad de los datos y la colaboración comunitaria, Ghostfolio ofrece una excelente oportunidad para tomar el control de tu gestión financiera. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 8 @@ -5237,7 +5237,7 @@ Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explora los siguientes enlaces para comparar una variedad de herramientas de finanzas personales con Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 16 @@ -5245,7 +5245,7 @@ Open Source Alternative to - Alternativa de software libre a + Alternativa de software libre a apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 @@ -5709,7 +5709,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6894,7 +6894,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7593,7 +7593,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7605,6 +7605,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 202082270..01593fe6d 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -590,7 +590,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -638,7 +638,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -874,7 +874,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -882,7 +882,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -890,7 +890,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -930,7 +930,7 @@ Étiquettes apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1006,7 +1006,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1450,7 +1450,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1682,7 +1682,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2958,7 +2958,7 @@ Retour à la Page d’Accueil apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -3942,7 +3942,7 @@ Platformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -5708,7 +5708,7 @@ Confirmer la suppresion de ce message système? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6893,7 +6893,7 @@ Définir clé API apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7592,7 +7592,7 @@ Les calculs sont basés sur des données de marché retardées et peuvent ne pas être affichés en temps réel. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 005af3ea5..cef21a5b1 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -535,7 +535,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -583,7 +583,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -635,7 +635,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -643,7 +643,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -651,7 +651,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -747,7 +747,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1099,7 +1099,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1323,7 +1323,7 @@ Tag apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1339,7 +1339,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2463,7 +2463,7 @@ Torna alla pagina iniziale apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -3943,7 +3943,7 @@ Piattaforme apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -5709,7 +5709,7 @@ Confermi di voler cancellare questo messaggio di sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6894,7 +6894,7 @@ Imposta API Key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7593,7 +7593,7 @@ I calcoli sono basati su dati di mercato ritardati e potrebbero non essere visualizzati in tempo reale. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7605,6 +7605,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f285a759b..7b27a8cfe 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -534,7 +534,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -582,7 +582,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -634,7 +634,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -642,7 +642,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -650,7 +650,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -746,7 +746,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1098,7 +1098,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1322,7 +1322,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1338,7 +1338,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2462,7 +2462,7 @@ Ga terug naar de startpagina apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -3942,7 +3942,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -5708,7 +5708,7 @@ Wilt u dit systeembericht echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6893,7 +6893,7 @@ API-sleutel instellen apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7592,7 +7592,7 @@ Berekeningen zijn gebaseerd op vertraagde marktgegevens en worden mogelijk niet in realtime weergegeven. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 3d5c28be9..140e35872 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1015,7 +1015,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1063,7 +1063,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1415,7 +1415,7 @@ Czy naprawdę chcesz usunąć ten kupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1423,7 +1423,7 @@ Czy naprawdę chcesz usunąć tę wiadomość systemową? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1431,7 +1431,7 @@ Czy naprawdę chcesz wyczyścić pamięć podręczną? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1439,7 +1439,7 @@ Proszę ustawić swoją wiadomość systemową: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1547,7 +1547,7 @@ Wyczyszczenie pamięci podręcznej apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1635,7 +1635,7 @@ Platformy apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1643,7 +1643,7 @@ Tagi apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2119,7 +2119,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2403,7 +2403,7 @@ Zgłoś Błąd Danych apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -5044,7 +5044,7 @@ Wróć do Strony Głównej apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -6170,7 +6170,7 @@ {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {działalność} other {działalność}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 @@ -6893,7 +6893,7 @@ Skonfiguruj klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7204,7 +7204,7 @@ Default Market Price - Default Market Price + Domyślna cena rynkowa apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 386 @@ -7212,7 +7212,7 @@ Mode - Mode + Tryb apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 423 @@ -7220,7 +7220,7 @@ Selector - Selector + Selektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 439 @@ -7228,7 +7228,7 @@ HTTP Request Headers - HTTP Request Headers + Nagłówki żądań HTTP apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 399 @@ -7236,7 +7236,7 @@ end of day - end of day + koniec dnia apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 138 @@ -7244,7 +7244,7 @@ real-time - real-time + w czasie rzeczywistym apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 142 @@ -7268,7 +7268,7 @@ Market Data - Market Data + Dane rynkowe apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 374 @@ -7485,7 +7485,7 @@ Gather Recent Historical Market Data - Gather Recent Historical Market Data + Zbierz najnowsze historyczne dane rynkowe apps/client/src/app/components/admin-market-data/admin-market-data.html 226 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 9cba3c1bb..1b079bcd0 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -590,7 +590,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -638,7 +638,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -778,7 +778,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -786,7 +786,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -794,7 +794,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -878,7 +878,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1330,7 +1330,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1626,7 +1626,7 @@ Marcadores apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1642,7 +1642,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -2854,7 +2854,7 @@ Voltar à Página Inicial apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -3942,7 +3942,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -5708,7 +5708,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6893,7 +6893,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index cab998274..e044b4211 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -979,7 +979,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1027,7 +1027,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1320,18 +1320,18 @@ Do you really want to delete this coupon? - Önbelleği temizlemeyi gerçekten istiyor musunuz? + Bu kuponu gerçekten silmek istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 Do you really want to flush the cache? - Önbelleği temizlemeyi gerçekten istiyor musunuz + Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1339,7 +1339,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1379,7 +1379,7 @@ Etiketler apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1455,7 +1455,7 @@ Önbelleği temizle apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1543,12 +1543,12 @@ Platformlar apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 Do you really want to delete this user? - Bu kullanıcıyı silmeyi gerçekten istiyor musunu? + Bu kullanıcıyı silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-users/admin-users.component.ts 142 @@ -1744,7 +1744,7 @@ Get started - Haydi Başlayalım + Haydi Başlayalım apps/client/src/app/components/header/header.component.html 420 @@ -1971,7 +1971,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2247,7 +2247,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -4772,7 +4772,7 @@ Ana Sayfaya Geri Dön apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -5708,7 +5708,7 @@ Bu sistem mesajını silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -6893,7 +6893,7 @@ API anahtarını ayarla apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7592,7 +7592,7 @@ Hesaplamalar gecikmeli piyasa verilerine dayanmaktadır ve gerçek zamanlı olarak görüntülenemeyebilir. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 4113fc335..88be53938 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1467,7 +1467,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1515,7 +1515,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1587,7 +1587,7 @@ Ви дійсно хочете видалити цей купон? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1595,7 +1595,7 @@ Ви дійсно хочете видалити це системне повідомлення? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1603,7 +1603,7 @@ Ви дійсно хочете очистити кеш? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1611,7 +1611,7 @@ Будь ласка, встановіть ваше системне повідомлення: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1723,7 +1723,7 @@ Очистити кеш apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1835,7 +1835,7 @@ Встановити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -1843,7 +1843,7 @@ Платформи apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1851,7 +1851,7 @@ Теги apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1907,7 +1907,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2220,7 +2220,7 @@ Change with currency effect Change - Зміна з урахуванням валютного ефекту Зміна + Зміна з урахуванням валютного ефекту Зміна apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 @@ -2228,7 +2228,7 @@ Performance with currency effect Performance - Прибутковість з урахуванням валютного ефекту валюти Прибутковість + Прибутковість з урахуванням валютного ефекту валюти Прибутковість apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 69 @@ -2343,7 +2343,7 @@ Повідомити про збій даних apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -6115,7 +6115,7 @@ Повернутися на головну сторінку apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -6656,7 +6656,7 @@ Get access to 80’000+ tickers from over 50 exchanges - Отримайте доступ до 100 000+ тікерів з понад 50 бірж + Отримайте доступ до 80 000+ тікерів з понад 50 бірж libs/ui/src/lib/i18n.ts 24 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index e9a6a6c08..e0772a40f 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -965,7 +965,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1012,7 +1012,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1356,28 +1356,28 @@ Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1472,7 +1472,7 @@ Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1553,14 +1553,14 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1989,7 +1989,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2243,7 +2243,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -4632,7 +4632,7 @@ Go back to Home Page apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -6233,7 +6233,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -6827,7 +6827,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -6838,6 +6838,20 @@ 37 + + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + + + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 01f2342fa..391ec6d26 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1024,7 +1024,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1072,7 +1072,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1424,7 +1424,7 @@ 您确实要删除此优惠券吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1432,7 +1432,7 @@ 您真的要删除这条系统消息吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1440,7 +1440,7 @@ 您真的要刷新缓存吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1448,7 +1448,7 @@ 请设置您的系统消息: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1556,7 +1556,7 @@ 刷新缓存 apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1644,7 +1644,7 @@ 平台 apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1652,7 +1652,7 @@ 标签 apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2128,7 +2128,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2412,7 +2412,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -5077,7 +5077,7 @@ 返回首页 apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -6894,7 +6894,7 @@ 设置 API 密钥 apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -7593,7 +7593,7 @@ 计算基于延迟的市场数据,可能无法实时显示。 apps/client/src/app/components/home-market/home-market.html - 41 + 43 @@ -7605,6 +7605,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 06ff59bb7..e124360a1 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -76,8 +76,6 @@ export const DERIVED_CURRENCIES = [ } ]; -export const EMERGENCY_FUND_TAG_ID = '4452656d-9fa4-4bd0-ba38-70492e31d180'; - export const GATHER_ASSET_PROFILE_PROCESS_JOB_NAME = 'GATHER_ASSET_PROFILE'; export const GATHER_ASSET_PROFILE_PROCESS_JOB_OPTIONS: JobOptions = { attempts: 12, @@ -122,6 +120,7 @@ export const PROPERTY_CURRENCIES = 'CURRENCIES'; export const PROPERTY_DATA_SOURCE_MAPPING = 'DATA_SOURCE_MAPPING'; export const PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS = 'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS'; +export const PROPERTY_DEMO_ACCOUNT_ID = 'DEMO_ACCOUNT_ID'; export const PROPERTY_DEMO_USER_ID = 'DEMO_USER_ID'; export const PROPERTY_IS_DATA_GATHERING_ENABLED = 'IS_DATA_GATHERING_ENABLED'; export const PROPERTY_IS_READ_ONLY_MODE = 'IS_READ_ONLY_MODE'; @@ -171,4 +170,7 @@ export const SUPPORTED_LANGUAGE_CODES = [ 'zh' ]; +export const TAG_ID_EMERGENCY_FUND = '4452656d-9fa4-4bd0-ba38-70492e31d180'; +export const TAG_ID_DEMO = 'efa08cb3-9b9d-4974-ac68-db13a19c4874'; + export const UNKNOWN_KEY = 'UNKNOWN'; diff --git a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts index b330e8baa..000460228 100644 --- a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts @@ -22,7 +22,7 @@ export interface PortfolioHoldingResponse { grossPerformancePercentWithCurrencyEffect: number; grossPerformanceWithCurrencyEffect: number; historicalData: HistoricalDataItem[]; - investment: number; + investmentInBaseCurrencyWithCurrencyEffect: number; marketPrice: number; marketPriceMax: number; marketPriceMin: number; diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 592167562..8f8a10427 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -45,6 +45,7 @@ export const permissions = { readTags: 'readTags', readWatchlist: 'readWatchlist', reportDataGlitch: 'reportDataGlitch', + syncDemoUserAccount: 'syncDemoUserAccount', toggleReadOnlyMode: 'toggleReadOnlyMode', updateAccount: 'updateAccount', updateAuthDevice: 'updateAuthDevice', diff --git a/package-lock.json b/package-lock.json index 5e2950f26..6fc2a8887 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.164.0", + "version": "2.165.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.164.0", + "version": "2.165.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { @@ -47,7 +47,7 @@ "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "7.3.0", "alphavantage": "2.2.0", - "big.js": "6.2.2", + "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", "chart.js": "4.4.9", @@ -72,7 +72,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.3", + "ng-extract-i18n-merge": "2.15.0", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "11.0.0", @@ -15220,9 +15220,9 @@ } }, "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-7.0.1.tgz", + "integrity": "sha512-iFgV784tD8kq4ccF1xtNMZnXeZzVuXWWM+ERFzKQjv+A5G9HC8CY3DuV45vgzFFcW+u2tIvmF95+AzWgs6BjCg==", "license": "MIT", "engines": { "node": "*" @@ -27037,22 +27037,22 @@ "license": "MIT" }, "node_modules/ng-extract-i18n-merge": { - "version": "2.14.3", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.3.tgz", - "integrity": "sha512-5zYuS/divhP2Tk0fizk7D8q5TyhwRjyj/DgaEgurrRwkWfIZFDUGc98eTziR3vIMsb9/sgbUSyeA+8LllCkKyA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.15.0.tgz", + "integrity": "sha512-43ew7btSrRJ34BHfRkjvvW8wXxfyFiM5rbFU22f/ZuEK1wpClV8lNaF09CYixY1+ycMpKLLyW+olj1Nj3kvs4g==", "license": "MIT", "dependencies": { - "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", - "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0 || ^0.2000.0 || 0.2000.0-rc.2", + "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", + "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", + "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", "xmldoc": "^1.1.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2" } }, "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { diff --git a/package.json b/package.json index 49af25546..f9c862cf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.164.0", + "version": "2.165.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -93,7 +93,7 @@ "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "7.3.0", "alphavantage": "2.2.0", - "big.js": "6.2.2", + "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", "chart.js": "4.4.9", @@ -118,7 +118,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.3", + "ng-extract-i18n-merge": "2.15.0", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "11.0.0", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6182ebfe4..dd3be8cef 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -233,11 +233,11 @@ model Subscription { } model Tag { - id String @id @default(uuid()) - name String - orders Order[] - userId String? - User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) + activities Order[] + id String @id @default(uuid()) + name String + userId String? + User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) @@unique([name, userId]) @@index([name])